Многие ресурсы, которые библиотека покупает, используют авторизацию (предоставление доступа) по IP-адресу. К некоторым из них можно получить доступ из интернета путем регистрации пользователя или по более сложным схемам с использованием федеративной авторизации. Из-за слабой развитости российского рынка многие полезные пользователям системы, тем не менее, осуществляют авторизацию только на основе IP-адресов.
В теории, наилучшим решением был бы массовый переход на федеративную авторизацию, но библиотеки и многие поставщики ресурсов не осознали ее необходимости, что сдерживает внедрение технологии.
Поэтому надо решать как-то вопрос основываясь на том, что удаленный ресурс доступен только из стен библиотеки. В таком случае используется технология проксирования запросов.
Принцип работы прокси-сервера
Идея очень простая: пользователь получит доступ к сайтам если они будут исходить с IP-адресов организации. Значит надо все запросы от пользователя, находящегося у себя дома, отправлять не напрямую на сайт ресурса, а через организацию.
Что такое прокси-сервер за 7 минут

ПО, которое на стороне организации обеспечивает передачу запросов на внешние сайты, называется прокси-сервером.
Авторизация
Чтобы любой желающий не мог подключаться через библиотеку и использовать ее ресурсы, прокси-сервер может быть настроен для требования логина и пароля при первом запросе страницы.
Это означает, что прокси-сервер должен уметь проверять логин с паролем по какой-то базе данных, причем эта база данных хранится в самой организации. Эта задача и есть самая сложная в этой схеме: обеспечить проверку учетных данных пользователей. Обычно прокси-сервер настраивается на LDAP-сервер организации, но возможны варианты.
При такой схеме сразу решается еще одна проблема: логин и пароль пользователя авторизует его для всех ресурсов и не надо знать (раздавать и вводить) логин с паролем для каждого ресурса в отдельности.
Механизмы реализации проксирования
Получили распространения два механизма проскирования.
Web-прокси

Достаточно редко-встречающийся механизм, реализуемый такими продуктами как EZproxy (для библиотек) и Cisco WebVPN (в корпоративном секторе). Внешне выглядит так: пользователь ничего не настраивает, а заходит на сайт, вводит в нем логин и пароль и переходит на страницу, на которой указан список ресурсов. При клике по ресурсу прокси-сервер запрашивает страницу, но возвращая ее пользователю переписывает имя удаленного сайта на свое собственное, т.е. если у удаленного сайта запрашивается страница http://www.scopus.com/page.html, а у прокси-сервера сайт http://proxy.example.com, то пользователю возвращается страница якобы находящаяся по адресу http://proxy.example.com/page.html.
Charles Proxy для тестировщика / Установка и настройка
Веб-прокси не является общепринятым названием такого вида проксирования, но отражает суть, что работает в браузере в виде веб-сервиса.
Плюсы Web-прокси
Работает прямо в браузере, пользователю на своей стороне не требуется ничего устанавливать или настраивать.
Недостатки Web-прокси
Основные проблемы связаны с тем, что ни удаленный ресурс ни браузер не подозревают о проксировании, а сам прокси-сервер фактически использует хакерский метод. В начале 2000-ых годов, когда JavaScript активно не применялся в целях навигации и управления интерфейсом, этот метод не доставлял существенных проблем. Но чем новее сайт, тем больше шансов, что средствами JavaScript сайт решит подгрузить какой-то ресурс обратившись напрямую на себя (а не через прокси) и этот запрос завершится ошибкой из-за ограничений безопасности браузера.
Были проверены несколько электронных библиотек, из которых КиберЛенинка, IPRBooks, Национальная электронная библиотека, ELiS WebApps, SCOPUS и даже Google оказались несовместимы с Cisco WebVPN. В Лань, Книгафонд, Университетская библиотека онлайн книги напротив, открыть удалось.
Ниже приводится открытие IPRBooks через Cisco WebVPN и ошибка Flash Player при попытке открыть книгу. Ошибка связана с тем, что прокси подменил название сайта и работает по адресу vpn.psu.ru, в то время как Flash Player пытается загрузить книгу с www.iprbookshop.ru и у него срабатывает защита от загрузки контента с постороннего домена.



HTTP-прокси
Проксирование веб-трафика уже давно встроено в браузеры и если в настройках браузера задать прокси-сервер, он сам будет отправлять все (или некоторые) запросы на загрузку страницы через прокси-сервер.
В отличие от предыдущего варианта, этот активно использовался еще в 90-ых годах, хорошо совместим с большинством информационных систем, да и сегодня часто встречается как способ раздачи интернета в организациях.
Плюсы HTTP-прокси
Это встроенный механизм в браузеры с хорошей совместимость с удаленными ресурсами.
Недостатки HTTP-прокси
- Настройка прокси-сервера в браузере для пользователя заметно более обременительна.
- Если не принять специальных мер, через прокси-сервер пойдет трафик всех браузеров, но проксирование всего трафика пользователя может быть слишком затратной для организации в плане закупки интернет-канала.
При этом надо иметь в виду, что если в Windows установить прокси-сервер в системе (через настройки Internet Explorer), то этот прокси-сервер подхватится такими браузерами как Google Chrome и Mozilla Firefox.
Выпуск организацией собственной программы с проксированием ресурсов
Использование EZproxy (и аналогов) — хотя и возможный вариант, но не перспективный из-за проблем с совместимостью со сторонними сайтами. Поэтому лучше использовать второй подход, предварительно устранив оба недостатка.
Решение здесь достаточно очевидное: надо взять один из браузеров с открытым исходным кодом и чуть-чуть переписать его, зашив в его настройки прокси-сервер организации.
В таком случае надо будет просто пользователя попросить поставить браузер (программу) организации, ввести в нее один раз логин с паролем и использовать именно ее для доступа к удаленным ресурсам.
Плюсы от создания собственного браузера
- Простая настройка: пользователь устанавливает программу и один раз вводит логин с паролем.
- Возможность сбора статистики по посещению пользователем подписных ресурсов.
- В программу браузера можно встроить дополнительный и полезный для пользователя функционал.
Недостатки собственного браузера
- Необходимо поддерживать одну или несколько (если браузер выпускается не только под Windows) программ.
- Если используется не системный браузер, его следует обновлять для устранения проблем безопасности.
Функционал браузера организации
Если прокси-сервер авторизует пользователя из централизованной (для организации) системы авторизации, то эти учетные данные могут подходить и к другим сайтам организации, таким как электронная информационная образовательная среда (ЭИОС), сайт расписания занятий и т.д. и в браузер можно добавить эти сайты и автоматически авторизовать пользователя при первом обращении из программы.
Тогда продвигать браузер можно не просто как систему доступа к удаленным библиотекам, но делать упор на других функциональных возможностях.
В конечном счете, проект браузера может перерасти в сложную программу, решающую большое количество задач вуза.
Пример браузера организации
Чтобы на практике продемонстрировать возможность создания браузера организации, реализован браузер для Пермского государственного национального исследовательского университета. Браузер отображает сайты и реализацию встраивания электронной библиотеки ELiS с помощью технологии ELiS WebApps.

С точки зрения преподавателей и деканатов браузер решает важную задачу: проксирует запросы из интернета в систему управления вузом (ЭИОС). В этой системе размещаются УМК, ведется успеваемость по больно-рейтинговой системе и решаются другие задачи преподавателей и административных работников, поэтому возможность подключения к ней из интернета является актуальной задачей для многих. Браузер не является единственным способом подключения из интернета к корпоративной сети, но он существенно проще в установке и настройке альтернативного VPN-подключения.

Домашней страницей браузера является список электронных библиотек:

Для поиска применяется Google Custom Search Engine, который выступает бесплатной и доступной заменой федеративного поиска. Этот поисковый движок настроен на поиск: в электронной библиотеке университета, PDF-файлов на сайтах вуза и в некоторых легальных библиотеках с доступным контентом.
Конечно, такой поисковый механизм не участвует в поиске по внешним ЭБС, но, зато, способен находить статьи, размещенные на многочисленных сайтах вуза.

Статистика
Разработка собственного браузера позволяет перехватывать события скачивания файлов и учитывать скачивания в своей статистике.
Если же собственную систему учета статистики разрабатывать не хочется, можно на домашней странице установить любой из онлайн-счетчиков посетителей и, по крайней мере, фиксировать число запусков браузера.
- Блог пользователя Арсен Боровинский
- Войдите, чтобы оставлять комментарии
Источник: elibsystem.ru
Проксируйте всё
Если ты опытный разработчик, то ты это уже давно знаешь и используешь. Если же нет… то самое время узнать, чтобы иметь основания считать себя хорошим разработчиком ) .
Сама идея проста, как колумбово яйцо (или «проста как валенок», с учётом работающего у нас сейчас импортозамещения).
А именно: все вызовы из системы вовне и все вызовы системы извне должны быть обёрнуты минимум одним слоем прокси методов.
Как видите, очень просто.
Но разберём чуть подробнее.
«Зачем это нужно?» или подавляющие преимущества проксирования
- Во-первых, для безопасности. Допустим нам требуется реализовать такую надуманную и максимально упрощённую задачу как выбор данных из базы, причём имя таблицы мы должны задавать динамически.
Отлично, пишем веб-контроллер, принимающий имя таблицы в виде строки, вставляем это имя в sql-запрос и через jdbc подключение отправляем его базу и возвращаем результат выполнения запроса пользователю. Казалось бы: что может пойти не так? )
Если тебя, читатель, сейчас не передёрнуло от ощущения неминуемого «ахтунга», то немедленно беги читать информацию на тему «sql-инъекций».
Спасти себя от последующего «ахтуга» в данной задаче можно, например, если перед формированием запроса, сначала проверять существование таблицы с полученным от пользователя именем.
И, в целом использовать полученные от пользователя данные «как есть» без какой-либо обработки, также, как и отдавать ему данные в «сыром» виде — очень плохая практика. На эту тему можно почитать об использовании DTO-объектов (Data Transfer Object).
Однако, мы отвлеклись от сути.
А суть в том, что если бы каждый наш запрос к базе проходил бы какую-то предобработку, то шанс определить «плохой» запрос не просто возрастает — он, как минимум, в принципе появляется, такой шанс. - Во-вторых, единая точка входа это всегда хорош. Тем, кто хотя бы раз в жизни занимался интеграцией различных систем между собой данный тезис должен казаться аксиомой.
Пожелай мы добавить в проект логирование всех запросов или сбор статистики (хотя бы времени выполнения того или иного запроса в целях определения узких мест системы при нагрузочном тестировании) сделать это будет на порядки проще если все наши исходящие (и входящие) запросы проходят через некий прокси-метод где мы и сможем расположить наш код логирования и сбора статистики.
Мы можем захотеть добавить некую логику, например, анализ входящего/исходящего запроса или простое управление доступом к удалённой системе — всё это будет гораздо сложнее, если в нашем проекте существуют десятки (сотни? тысячи?) отдельных вызовов не проходящих через некий общий прокси-метод.
«В чём подвох?» или недостатки проксирования
- Недостаток только один и он заключается в том, что прокированный запрос работает явно медленнее. Сложно назвать это недостатком так как любому разработчику абсолютно ясно, что добавление дополнительной логики к существующему коду влечёт замедление скорости работы этого кода, как минимум, на время потраченное на обработку добавленной логики.
Когда нужно использовать прокси-методы?
Ответ прост: всегда. Абсолютно всегда.
Если у вас есть входящий запрос к вашей системы извне или исходящий от вашей системы запрос во вне — он должен пройти через прокси-метод и, вероятно, не через один.
Вполне удобно иметь в проекте некую иерархию прокси-методов
Вы можете разделить прокси по используемым технологиям, по системам к которым выполняете (от которых получаете) запросы, по типу запросов, по пересылаемым бизнес-данным или по всему перечисленному сразу.
Имея продуманную иерархию вызываемых прокси-методов всегда можно добавить требуемый код пред- или пост- обработки запроса именно туда, куда это действительно нужно.
Меньше слов, больше кода
Прокси-методы для обёртки исходящих вызовов методов работающих с базой данных
Допустим, что все наши методы обращения к БД имеют два параметра
- Connection — содержащий jdbc-соединение с нужной базой данных
- TablePojo — некий POJO (Plain Old Java Object) объект содержащий в себе необходимые данные для выполнения в базе полезной работы
В таком случае о мы можем использовать следующий прокси выполняющий функции логирования и подсчёта времени, затраченного на выполнение метода работающего с данными в базе.
Где проксируемый метод имеет следующее описание
private Boolean createTableifNotExist(Connection connection, TablePojo table)
Как можно заметить, использование данного прокси-метода жёстко ограничивает нас в количестве и типе используемых параметров так как мы задействовали стандартный интерфейс BiFunction.
А что если нам необходимо использовать три параметра, а не два?
Нет ничего проще, напишем собственный интерфейс
Перегрузим наш прокси-метод как
Где описание проксируемого метода выглядит как
private Boolean tableProcessing(Connection conProd, Connection conTest, TablePojo table, SettingsPojo settings)
Прокси-методы для обёртки методов вызываемых при получении запросов по веб-апи
Код простого прокси-метода
public СreateNewProcessResponse createNewProcess(СreateNewProcessRequest req)
Вы никогда не можете знать когда и какую именно логику вы захотите добавить к обработке входящего или исходящего запроса любого типа. Но имея цепочку «обёрток» в виде прокси-методов вы сможете легко добавить нужную логику.
Используемые в статье фразеологизмы
Честно говоря я несколько колебался добавлять ли к статье этот раздел или нет. С чисто профессиональной точки зрения он избыточен и не несёт смысловой нагрузки. Но лично мне было интересно вбить в поиск часто используемое выражение, узнать историю его происхождения и появления в русскоязычном пространстве.
Означает: простой выход из затруднительного положения.
По преданию, когда Колумб во время обеда у кардинала Мендосы рассказывал о том, как он открывал Америку, один из присутствующих сказал: «Что может быть проще, чем открыть новую землю?». В ответ на это Колумб предложил ему простую задачу: как поставить яйцо на стол вертикально? Когда ни один из присутствующих не смог этого сделать, Колумб, взяв яйцо, разбил его с одного конца и поставил на стол, показав, что это действительно было просто. Увидев это, все запротестовали, сказав, что так смогли бы и они. На что Колумб ответил: «Разница в том, господа, что вы могли бы это сделать, а я сделал это на самом деле».
Всего лишь «внимание» в переводе с немецкого языка. В русскоязычном интернете начала 2000-х годов оно стало употребляться в значении «осторожно, геи!». Например: Немецкая книжка «Папин друг» это просто полный ахтунг!
Надеюсь, описывать значение термина «валенок» не требуется ни для кого из читателей статьи? )
Источник: temofeev.ru
Объясните на пальцах что такое проксирование?
Т.е. гугл вам не покорился? А так суть прокси можно в этом анекдоте передать: Идёт по улице девушка — красавица.. За ней — лицо кавказской национальности (ЛКН), а следом — сис. админ. Ну, девушка заворачивает за угол.. ЛКН за ней нырнул и тут же из-за угла крики: — Помогите!!
Насилуют. Ну, сис. админ. заинтересовался, тоже завернул за ними, увидел, что ЛКН нагло жарит девчёнку прям на улице и пристраивается к нему сзади. ЛКН с удивлением, пытаясь оглянуться: — ВАЙ! Ара!! Ти ккто такой, да.
Сис. админ: — Работай, работай, мой анонимный прокси-сервер!!
Источник: searchengines.guru