Центральный вход с SAML и создание сайта для работы в качестве поставщика удостоверений
Итак, мой сценарий выглядит следующим образом:
У меня есть два сайта a.com и сайт b.com и один сервер аутентификации cauth.com.
что клиент хочет...
Когда пользователь приземляется на пользователя a.com или b.com, заполняется форма входа в систему на соответствующем сайте, но действие формы будет на cauth.com(cauth.com/authenticate). когда пользователь аутентифицируется на cauth, он зарегистрирован на обоих сайтах.
Я собираюсь реализовать SAML для достижения того же, и поток похож на
после аутентификации iDP (cauth.com) отправит ответ SAML на обоих поставщиков услуг, и пользователю будет предоставлен доступ к обоим сайтам.
Я новичок в SAML и не могу получить правильную документацию и понимание для того же самого.
Что я хочу знать:
Ответы
Ответ 1
SimpleSamlPHP должно быть довольно легко настроить. Вы захотите сделать копию папки modules/exampleauth/
, а затем изменить файл modules/<yournewmodule>/lib/Auth/Source/External.php
для работы на своем сайте. Документация хороша, хотя и это определенно самая легкая вещь для ваших нужд и правильная.
Я должен добавить, что в соответствии с инструкциями по настройке SimpleSamlPHP вы должны дать общее представление о том, какие файлы метаданных наиболее важны и где они живут и как все взаимодействует.
Ответ 2
Я не уверен, какую технологию вы используете для своего приложения. Если вы можете перейти на JAVA, я могу предложить вам Spring -Saml, потому что он очень прост в реализации и соответствует вашим требованиям. Spring -Saml имеет хорошую документацию и онлайн-поддержку, а также как проект с открытым исходным кодом.
Вы можете ссылаться на эту ссылку для Spring -saml, а для кода-репо используйте ссылка
Вы можете интегрировать Spring -saml в ваше приложение abc.com и xyz.com, чтобы сделать его Service Provider (SP), и вы можете развернуть его и в другом домене. Затем у вас должен быть один IDP (сервер поставщика удостоверений) для ваших SP. Таким образом, вы можете использовать ADFS с Active Directory или LDAP, чтобы действовать как IDP.
У нас было аналогичное требование для нашего клиента. Недавно я включил Spring -saml в свой проект.
Пожалуйста, дайте мне знать для любой помощи
Ответ 3
Единый механизм единого входа (SSO), такой как SAML или OpenID Connect, даст вам то, что вы хотите.
Это связано с тем важным различием, что форма входа не будет представлена на a.com
или b.com
, но эти сайты скорее перенаправит на cauth.com
, и пользователь будет аутентифицироваться там. cauth.com
затем отправит проверяемое "утверждение" на a.com
и b.com
, что пользователь успешно прошел аутентификацию. Это составляет одну из основных целей федеративного SSO, а именно: учетные данные пользователя не должны быть представлены/сохранены на иностранных сайтах и делают средства аутентификации независимыми от целевых веб-сайтов ( "Оповеди сторон" ).
Так что вы должны искать подходящую реализацию SAML или OpenID Connect для своей платформы (не пишите сами!) и используйте это.
Ответ 4
Shibboleth является открытым исходным кодом и одним из самых популярных решений SSO. Он включает SAML Identity Provider, который вы можете скачать здесь: https://shibboleth.net/downloads/identity-provider/latest/.
Если ваш клиент готов, одним из подходов будет использование провайдера облачных SSO, например Okta, который имеет программа разработчика и может упростить задачу.
Ответ 5
Я думаю, что в вашем описании есть тонкое недоразумение. Для аутентификации SAML, если пользователь на сайте a.com либо нажимает кнопку входа/кнопку входа в систему, либо пытается получить доступ к защищенной странице, этот пользователь получит перенаправление http 305 на cauth.com. Там пользователь вводит свои учетные данные, и пользователь будет перенаправлен обратно на сайт a.com. Если этот пользователь затем отправляется на сайт b.com и пытается получить доступ к защищенному контенту, b.com отправляет пользователя на cauth.com с тем же переадресацией http 305. На этот раз, поскольку на cauth.com активная сессия для браузера пользователя, пользователь НЕ видит форму учетных данных. Вместо этого IDP возвращает пользователя с успешной аутентификацией на b.com. Пользователю представляется, что они автоматически регистрируются на сайте b, но на самом деле произошел поток аутентификации SAML.
Ответ Hans Z подтверждает тот факт, что IDP только отправляет утверждения по запросу a или b (полагающиеся стороны или RP, также известные как поставщики услуг или SP). Это не передача для всех RP.
Я усилю, что SAML НЕ поддерживает a.com, получая учетные данные от пользователя, а затем передавая их в механизм проверки подлинности. Это шаблон, с которым можно ознакомиться в LDAP.
Взгляните на диаграмму последовательности в запись в Википедии на SAML.
Ответ 6
Следуйте инструкциям ниже, чтобы получить импликацию SAML с помощью PHP.
Он работал идеально для меня с CI и php