Как стать автором
Обновить

Комментарии 11

Не повезло :)
Реализовывал SSO, используя SAML 2, на C# для нашего портала. Подробной документации действительно мало.
Мы используем готовый продукт с коннекторами от PingFederate для интеграции облачных бизнес-приложений с нашим AD, а также для безопасной публикации внутренних приложений в Интернет все с той же AD аутентификацией. Работает отлично.
Удобная связка для реализации SSO это AD + Federation Service + Azure. Последний предоставляет разные точки входа (в том числе OAuth2).
Прикручивал в приложение на RoR, все заняло минут 20-30, дольше Azure настраивал.
До вас в рунете никто о решениях на Shibboleth не писал. Спасибо. Отличная статья.
Огромное спасибо за статью. Очень помогла в интеграции Shibboleth! Еще есть отличный «guide» OIOSAML.Java основанный на OpenSAML
Спасибо за статью. Пригодилась.
При настройке SSL коннектора под Tomcat 6.0.37(Windows) столкнулся с проблемой,
что надо поле SSLImplementation заменить на sslImplementationName. Без этого не подцепляет SSL.

Жизнь заставила разбираться с SAML, причем одновременно java и asp.net. Я просмотрел исходники, фактически после получения подтверждения из idp к нему больше никаких обращений не происходит? Если пользователь разлогинится на idp, то фильтр по прежнему будет считать что он залогинен (см. isSAMLSessionValid).

Тема логаута в SSO достаточно болезненная. Причины на поверхности, можно посмотреть тут -> https://wiki.shibboleth.net/confluence/display/CONCEPT/SLOIssues.
В примере из статьи действительно не реализован случай, когда процедура логаута инициируется на стороне idp. Shibboleth не поддерживает это из коробки. Однако есть ответвление от основной ветки shibboleth’а (https://wiki.niif.hu/ShibIdpSLO), где такая функциональность реализована. Во время написания статьи это работало. Насколько это сейчас актуально и поддерживается мы не знаем. А работает эта функциональность очень просто: в метаданных sp указывается поддержка logout’у (URL, метод, параметры). При логауте на idp берется SSO сессия и для каждого sp вызывается локальный логаут. Собственно он и реализован в Шаге 3 «Если получен запрос на logout, удаляем локальную сессию».

Кстати рекомендуем вам рассмотреть вариантами готовой интеграции sp и idp. Например, средствами спринга http://projects.spring.io/spring-security-saml/.
В качестве idp рекомендуем обратить внимание на KeyCloak. Мы писали в рамках темы безопасности об этом продукте https://habrahabr.ru/company/eastbanctech/blog/272149/.

Спасибо за развернутый ответ.


Проблема логаута осложняется еще и тем, что asp.net по-умолчанию создает шифрованные и подписанные куки, которые содержат всю информацию об авторизации, их просто так не отозвать в принципе, но тут еще можно побороться. На asp я использую kentor/authservices библиотеку и реализацию idp initiated logout там видел, опять же это требует хранения сессий в базе данных на стороне sp.


KeyCloak я обязательно посмотрю, меня интересует возможность хранения юзеров в базе данных (а не в LDAP или где-то еще) будь то Shibboleth или KeyCloak. Для версии Shibboleth 2.0 такая возможность реализовывалась довольно прозрачно, с третьей версией с ходу не получилось разобраться.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий