Статья опубликована в рамках: LXXVII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 13 мая 2019 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
ПРОЕКТИРОВАНИЕ МОДУЛЯ УПРАВЛЕНИЯ АВТОРИЗАЦИЕЙ СИСТЕМЫ AEM С ИСПОЛЬЗОВАНИЕМ СТАНДАРТА SAML
Термины и определения
OSGI – спецификация для построения модульных систем для платформы Java.
AEM – это система управления контентом которая осуществляет обработку и доставку различных видов контента. Система реализована на языке Java с использованием большого количества фреймворков, но основой системы является фреймворк построения модульного приложения – OSGI.
SAML – язык разметки декларации безопасности — язык разметки, основанный на языке XML. Открытый стандарт обмена данными аутентификации и авторизации между участниками, в частности, между поставщиком учётных записей и поставщиком сервиса.
Технология единого входа – технология, при использовании которой пользователь проходит аутентификацию один раз и может посещать другие порталы, приложения и сайты без повторной аутентификации.
Введение
Система AEM имеет различные роли пользователей они рассчитаны на контент-менеджеров и администраторов системы. Если система используется в среде компании, где имеются другие системы с единым пользователем на все системы, то есть применяется технология единого входа, необходимо разработать функционал, который будет осуществлять авторизацию и аутентификацию пользователя.
В данной статье будет рассмотрен процесс проектирование компонента, осуществляющего управление авторизацией в системе AEM.
Анализ и проектирование
В рамках статьи будет рассмотрено проектирование модуля системы AEM выступающего в качестве сервиса авторизации. На первом этапе необходимо проанализировать существующие библиотеки для реализации единого входа с использованием SAML и выбрать наиболее подходящий для среды OSGI. На следующем этапе будет выделены подмодули, из которых будет состоять приложение с учетом ранее выбранной библиотеки. Библиотеки, выбранные для анализа перечислены на официальном сайте стандарта [1]:
- OpenSAML 3 [2];
- OneLogin [3];
- Spring Security SAML [4];
- Pac4j [5].
Для проведения сравнения и выбора подходящей библиотеки были составлены критерии оценивания:
- Соответствие стандарту;
- Поддержка;
- Примеры;
- Работа в среде OSGI.
В результате анализа библиотек были выявлены трудности их интеграции со средой AEM в связи с чем было принято решение разработать прототип с использованием каждой библиотеки для проверки его работоспособности в системе.
Прототип представляет из себя простейший сервис, который принимает запрос на авторизацию и генерирует сообщения для провайдера авторизации.
Spring Security SAML – Использует внутри OpenSAML 2, выполняет оборачивание базовых методов, но не поддерживает все типы сообщений доступные в стандарте. Используется устаревшая версия OpenSAML 2. Плохо совместим с OSGI средой. Поддерживает большинство популярный провайдеров идентификации. Имеет несколько примеров использования.
OpenSAML 3 – наиболее соответствующая стандарту реализация. Активно развивается и поддерживается. Требуется переопределение стартовой конфигурации так как не предназначено для работы в OSGI среде [6]. Имеет хорошую документацию и множество примеров использования [7], так-же имеется печатное руководство по использованию.
Pac4j – Использует внутри OpenSAML3, оборачивает базовые методы что позволяет реализовывать функции гораздо быстрее. Ограничен в доступных методах и настройках. Не предназначен для работы в OSGI среде. В отличие от OpenSAML 3 инициализация не может быть легко изменена что делает библиотеку не удобной в использование и требует большего времени доработки.
OneLogin – Не предназначен для работы в OSGI среде, сложно изменить инициализацию. Работает с ограниченным набором провайдеров авторизации. Отсутствуют подробные примеры использования.
В результате анализа было принято решение разработать приложение с применением библиотеки – OpenSAML3 как наиболее полно соответствующей стандарту и самой удобной для использования в среде OSGI.
Поскольку выбранная библиотека является довольно низкоуровневой и предназначена в основном для создания XML сообщений проектируемый модуль было решено разделить на два подмодуля.
Подмодуль работы с SAML (рис. 1) – генерирует SAML сообщения с использованием выбранной библиотеки, выполняет валидацию принятых сообщений, а так-же выполняет настройку библиотеки при установке в систему. Имеет пакет конфигурации, который позволяет использовать проектируемый модуль во всех системах AEM с различными настройками провайдера авторизации.
Подмодуль аутентификации (рис. 2) – принимает запросы на аутентификацию и ответы от провайдера авторизации, обрабатывает и определяет их тип. Отправляет запросы к провайдеру авторизации вместе с сгенерированными сообщениями.
Рисунок 1. Диаграмма классов подмодуля работы с SAML
Рисунок 2. Диаграмма классов подмодуля аутентификации
Выводы
В результате создания прототипа и проектирования решения были выявлены проблемы при интеграции системы AEM со сторонними библиотеками, не предназначенными для работы в среде OSGI.
Использование таких библиотек требует переопределения конфигурации данных библиотек и данный механизм предусмотрен в среде OSGI, что позволяет использовать библиотеки с небольшими доработками.
Несмотря на большое количество библиотек, реализующих стандарт SAML для работы в среде OSGI, наиболее подходящей оказалась только библиотека Open SAML 3, реализующая все типы сообщений, описанных в стандарте.
Спроектированный модуль поддерживает основные типы сообщений SAML имеет возможность расширения, а так-же имеет конфигурацию что позволяет использовать его во всех системах AEM с различными провайдерами авторизации.
Список литературы:
- Oasis SAML Wiki page [Электронный ресурс]. URL: https://wiki.oasis-open.org/security/FrontPage (дата обращения: 3.05.2019).
- OpenSAML 3 [Электронный ресурс]. URL: https://wiki.shibboleth.net/confluence/display/OS30/Home (дата обращения: 03.05.2019).
- One login saml [Электронный ресурс]. URL: https://developers.onelogin.com/saml (дата обращения: 03.05.2019).
- Spring Security SAML [Электронный ресурс]. URL: https://projects.spring.io/spring-security-saml/ (дата обращения: 03.05.2019).
- Pac4j [Электронный ресурс]. URL: https://www.pac4j.org/ (дата обращения: 03.05.2019).
- Class loader issues in OSGi | Third-party libs using the Thread context [Электронный ресурс]. URL: https://helpx.adobe.com/ru/experience-manager/kb/OsgiClassLoading3Party.html (дата обращения: 03.05.2019).
- Blog about Open SAML framework [Электронный ресурс]. URL: https://blog.samlsecurity.com/ (дата обращения: 03.05.2019).
дипломов
Оставить комментарий