Внедрение единого входа с использованием SAML

Это может быть широкий вопрос, но если вы можете дать какие-либо советы, я был бы признателен.

Мне нужно реализовать единый вход между двумя веб-приложениями (AppX, AppY) в разных доменах. Я должен использовать SAML, поэтому я ожидаю, что нужно будет настроить IdP, и мои приложения будут для него поставщиками услуг.

Сценарий:

  1. Если пользователь входит в AppX, он/она может перейти в AppY, нигде не входя в систему. И наоборот.

Инструмент, который я бы использовал: Shibboleth IdP.

Вещи, которые мне нужно знать:

  1. Где и как настроить IdP?

P.S. Я не сетевой парень, поэтому любые ссылки, чтобы узнать, как весь SAML работает для SSO, были бы большим подспорьем. Заранее спасибо.

Обновление:

Еще один вопрос: мои приложения знают, является ли пользователь действительным или нет, поскольку у них есть доступ к базе данных, но как IdP может аутентифицировать пользователей? Я предполагаю, что IdP будет подключаться к моему приложению через обратный канал, или моя БД должна служить каталогом пользователей для Idp. На чем основана аутентификация idp?


person Sachin Verma    schedule 20.08.2015    source источник


Ответы (2)


Итак, я предполагаю, что веб-приложения - это Java?

Если это так, им обоим нужен стек SAML — см. подключение SAML. инструмент.

Широко используется SAML Spring Security.

Затем вы подключаете их обоих как поставщиков услуг к шибболету.

Затем пользователь подключается к AppX, должен аутентифицироваться с помощью shibboleth, создаются файлы cookie shibboleth, создаются файлы cookie приложения, токен SAML отправляется пользователю.

Пользователь подключается к AppY, должен аутентифицироваться с помощью shibboleth, shibboleth видит, что файлы cookie уже существуют, выполняет внутреннюю аутентификацию, создает файлы cookie приложения, токен SAML отправляется пользователю.

IDP должен быть доступен в Интернете, если требуется внешний доступ, поэтому DMZ?

Документация по установке здесь.

person rbrayb    schedule 21.08.2015
comment
должен пройти аутентификацию с помощью shibboleth. Как shibboleth узнает о пользователях, о которых знают только мои приложения. Пожалуйста, объясните это тоже немного. - person Sachin Verma; 21.08.2015
comment
Это не так. shibboleth может аутентифицироваться только в своем репозитории, например. AD/OpenLDAP. Если у вас есть пользователи в локальном репозитории, вам нужно либо перенести их, либо добавить еще один экземпляр shibboleth и объединить их. - person rbrayb; 22.08.2015
comment
Итак, пользователи каждый раз синхронизируются с AD/OpenLDAP из моей базы данных? Это не похоже на хорошее решение. P.S.: я не знаю, как работает AD/LDAP. - person Sachin Verma; 23.08.2015
comment
Вам нужно предоставить дополнительный контекст. Что вы имеете в виду под пользователями, о которых знают только мои приложения? В каком репозитории они находятся? Какой репозиторий вы хотите использовать shibboleth? - person rbrayb; 24.08.2015

Видео о SAML можно найти здесь: https://www.youtube.com/watch?v=S9BpeOmuEz4

В SAML есть две важные роли: поставщик услуг (SP) и поставщик удостоверений (Idp).

В вашем случае appX и appY являются SP, shibboleth действует как IdP.

Shibboleth также является веб-приложением, поэтому все, что вам нужно, — это развернуть shibboleth на одном сервере и сделать его доступным для конечных пользователей, как это делают appX и appY.

PS: приложениям appX и appY не требуется прямой доступ к серверу shibboleth, клиент (браузер конечного пользователя) будет действовать как мост для их подключения.

Руководство по установке shibboleth Idp: https://wiki.shibboleth.net/confluence/display/SHIB2/IdPInstall

person Liu Xingnan    schedule 21.08.2015
comment
Нужно ли что-то в IdP для регистрации какого-то SP или наоборот? Я думаю, что некоторые метаданные и ссылка выше не объясняют iy. - person Sachin Verma; 21.08.2015
comment
Да, метаданные SP должны быть настроены в {idp.home}/conf/metadata-providers.xml, после установки shibboleth вы можете протестировать его на этом веб-сайте: testshib.org/index.html - person Liu Xingnan; 21.08.2015