Не смотря на то, что функция централизованного входа (Single Sign On, ...
1. Предыстория
Не смотря на то, что функция централизованного входа (Single Sign On, SSO) существует, обсуждается и применяется уже давно, на практике ее внедрение зачастую сопровождается преодолением самых различных проблем. Целью данной статьи будет показать, как реализовать простейший собственный Service Provider
1 (SP) для SAML 2.0 identity provider (idP) и с его помощью осуществить интеграции SSO в Java Web приложение.
Одним из наших последних проектов была подготовка и кластеризация портального решения для крупного университета. В рамках проекта мы столкнулись с задачей реализации (а также кластеризации) функции единой аутентификации для следующих систем:
- Liferay version 6.1.20-ee-ga2.
- Простое java web-приложение.
- Google apps.
Со стороны заказчика были выдвинуты основные требования построения SSO:
- Для построения SSO должен использоваться протокол SAML 2.0.
- Требуется интеграция с Jasig CAS для поддержания работы уже существующих систем.
- LDAP используется для проверки аутентификации пользователей.
В качестве idP решили использовать Shibboleth (http://shibboleth.net/about/index.html) как open source-систему, реализующую в полном объеме протоколы SAML 1.0 && SAML 2.0.
Сложные моменты, с которыми мы столкнулись при решении данной задачи:
- Отсутствие экспертизы по работе с протоколом SAML 2.0 и продуктом Shibboleth.
- Сырая и еще не достаточно хорошо структурированная документация по Shibboleth от производителя.
- Отсутствие качественных примеров по реализации Service Provider’а для интеграции SSO в свое Java Web-приложение.
Преодоление этих барьеров и стало мотивацией для публикации данной статьи. Мы хотим поделиться приобретенными знаниями, помочь разработчикам решать подобные задачи, а также облегчить знакомство с протоколом SAML 2.0.
2. Для кого предназначена статья?
Данная статья ориентирована на следующую аудиторию:
- Разработчики, интегрирующие функцию SSO в своих проектах средствами SAML 2.0.
- Java-Разработчики, которым нужен практический пример интеграции в свое приложение функции SSO средствами SAML 2.0.
- Java-Разработчики, которые хотят опробовать в качестве SSO Identity Provider’а (idP) компонент Shibboleth.
Для понимания статьи рекомендуется иметь минимальные знания по протоколу SAML 2.0.
Читать дальше →