Как пройти аутентификацию из моего приложения в систему единого входа моего клиента

Я разрабатываю веб-приложение, используя EC2 на AWS.

В этом приложении мой клиент запрашивает использование его SSO (Single Sign On), чтобы я мог проверить пользователя по его Active Directory. Моя проблема в том, что я не могу понять, с чего начать, вот некоторые из моих вопросов:

1) Этот SSO происходит в моем коде или на моем сервере?

2) Нужно ли делать разные настройки для разных сред развертывания (например, aws, azure, digitalocean и т. д.)?

3) Где я могу определить, отправить и проанализировать формат SAML 2.0?

4) Нужно ли отправлять POST-запрос на сервер, на котором установлен SSO? Или как это управляется?

Пока я нашел этот учебник, но я до сих пор не знаю, что делать во-первых, поэтому любая пошаговая информация очень поможет.


person Fernando Santiago    schedule 18.10.2018    source источник


Ответы (2)


Сначала вам потребуются метаданные SAML2 клиента (IdP поставщика удостоверений). Это будет их URL-адрес конечной точки единого входа и их сертификат подписи X509.

Затем вы отправляете им свои метаданные SAML2 с URL-адресом службы потребления атрибутов (ACS) и сертификатом подписи X509.

Образцы метаданных здесь. Или вы можете создать его здесь.

Сертификаты обычно являются самоподписанными сертификатами с длительным сроком службы. Они могут быть самоподписанными, поскольку у каждой стороны есть копия сертификата другой стороны, которую они будут использовать для проверки подписанного запроса и ответа.

Вы создаете SAMLRequest и отправляете его по URL-адресу системы единого входа. Пример запроса приведен здесь.

Они отображают свою страницу входа для пользователя, и пользователь аутентифицируется на их конце.

Они собирают атрибуты пользователя из Active Directory, превращают их в атрибуты SAML и помещают в файл SAMLResponse.

Они отправляют SAMLResponse на ваш URL-адрес ACS. Пример ответа приведен здесь.

Вы проверяете подпись на их SAMLResponse, используя их сертификат X509 из их метаданных SAML2.

Вы извлекаете атрибуты SAML из их проверенных SAMLResponse и предпринимаете соответствующие действия в своем приложении, например. создайте учетную запись пользователя, возможно, его адрес электронной почты является одним из его атрибутов.

Вышеупомянутое называется профилем SSO веб-браузера SAML2. " rel="nofollow noreferrer">здесь.

person codebrane    schedule 19.10.2018

В зависимости от вашего стека вы можете использовать что-то вроде:

  • Shibboleth (промежуточное программное обеспечение, устанавливаемое на ваш сервер, оно прерывает запросы к определенным путям, требующим аутентификации в отношении поставщика удостоверений [ADFS], и возвращает пользователя после успешной аутентификации, устанавливающей некоторые атрибуты, сообщающие вам информацию о пользователе, такую ​​​​как имя пользователя и т. д.). Работает лучше всего, если вы можете разделить защищенный контент по определенному пути на сайте, например /secure.

  • SimpleSAMLphp (защита ресурсов PHP напрямую)

  • Коммерческий SAML (ComponentSpace и т. д. — хорошо работает, если приложение .Net)

В общем, найдите что-нибудь для своего стека. НЕ ПЫТАЙТЕСЬ ВНЕДРИТЬ СОБСТВЕННУЮ РЕАЛИЗАЦИЮ SAML!

person Kellen Murphy    schedule 18.10.2018