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