Центральный вход с SAML и создание сайта для работы в качестве поставщика удостоверений

Итак, мой сценарий выглядит следующим образом:

У меня есть два сайта a.com и сайт b.com и один сервер аутентификации cauth.com.

что клиент хочет...

Когда пользователь приземляется на пользователя a.com или b.com, заполняется форма входа в систему на соответствующем сайте, но действие формы будет на cauth.com(cauth.com/authenticate). когда пользователь аутентифицируется на cauth, он зарегистрирован на обоих сайтах.

Я собираюсь реализовать SAML для достижения того же, и поток похож на после аутентификации iDP (cauth.com) отправит ответ SAML на обоих поставщиков услуг, и пользователю будет предоставлен доступ к обоим сайтам.

Я новичок в SAML и не могу получить правильную документацию и понимание для того же самого.

Что я хочу знать:

  • Является ли решение проблемы стоящей проблемой?
  • Возможно ли сделать сайт (cauth.com) поставщиком идентификационных данных. Я просмотрел нить Создание вашего сайта PHP в SAML Identity Provider, но не смог получить правильное решение.

Ответ 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.

  • Настройка входа в SAML очень проста в php.
  • Первый регистр на сервере onelogin https://www.onelogin.com/signup и создать на нем демо-приложение. После он выполняет всю инструкцию для установки Idp (настройка поставщика удостоверений) и sp (настройка поставщика услуг) на settings.php https://developers.onelogin.com/saml/php

Он работал идеально для меня с CI и php