Поэтому мой сценарий выглядит так:
У меня есть два сайта a.com и сайт b.com и один сервер аутентификации cauth.com .
что клиент хочет …
Когда пользователь приземляется на пользователя a.com или b.com, он заполняет форму входа в систему на соответствующем сайте, но действие формы будет на cauth.com (cauth.com/authenticate). когда пользователь аутентифицируется на cauth, он зарегистрирован на обоих сайтах.
Я собираюсь реализовать SAML для достижения того же, и поток похож на то, что после аутентификации iDP (cauth.com) отправит ответ SAML на обоих поставщиков услуг, и пользователю будет предоставлен доступ к обоим сайтам.
Я новичок в SAML и не могу получить правильную документацию и понимание для того же самого.
Я хочу знать:
SimpleSamlPHP должен быть довольно прост в настройке. Вы захотите сделать копию modules/exampleauth/
папок modules/exampleauth/
а затем изменить файловые modules/<yournewmodule>/lib/Auth/Source/External.php
для работы на вашем сайте. Документация хороша, хотя и это определенно самая легкая вещь для ваших нужд и правильная.
Я должен добавить, что в соответствии с инструкциями по настройке SimpleSamlPHP вы должны дать общее представление о том, какие файлы метаданных наиболее важны и где они живут и как они взаимодействуют.
Я не уверен, какую технологию вы используете для своего приложения. Если вы можете переключиться на 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 в свой проект.
Пожалуйста, дайте мне знать за любую помощь
Единый механизм единого входа (SSO), такой как SAML или OpenID Connect, даст вам то, что вы хотите.
Это a.com
с тем важным различием, что форма входа не будет представлена на a.com
или b.com
но эти сайты скорее перенаправит cauth.com
и пользователь будет аутентифицироваться там. cauth.com
отправил бы проверенное «утверждение» на a.com
и b.com
что пользователь успешно прошел аутентификацию. Это составляет одну из основных целей федеративного единого входа, а именно, что учетные данные пользователя не должны быть представлены / сохранены на иностранных сайтах и делают средства аутентификации независимыми от целевых веб-сайтов («Оповещающие стороны»).
Так что вы должны искать подходящую реализацию SAML или OpenID Connect для своей платформы (не пишите сами!) И используйте это.
Shibboleth является открытым исходным кодом и одним из самых популярных решений SSO. Он включает в себя SAML Identity Provider, который вы можете скачать здесь: https://shibboleth.net/downloads/identity-provider/latest/ .
Если ваш клиент готов, одним из подходов будет использование облачного SSO-провайдера, такого как 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.
Ответ Ганса Z подтверждает тот факт, что IDP отправляет только утверждения по запросу a или b (полагающиеся стороны или RP, также известные как Поставщики услуг или SP). Это не трансляция для всех РП.
Я подтвержу, что SAML НЕ поддерживает a.com, получая учетные данные от пользователя, а затем передавая их в механизм проверки подлинности. Это шаблон, с которым можно ознакомиться в LDAP.
Взгляните на диаграмму последовательности в записи wikipedia на SAML.
Следуйте инструкциям ниже, чтобы внедрить SAML с помощью PHP.
Он отлично работал для меня с CI и php