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

Поэтому мой сценарий выглядит так:

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

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

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

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

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

Я хочу знать:

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

    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.

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

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