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

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

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

что хочет клиент, так это …

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

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

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

То, что я хочу знать, это:

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

12

Решение

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, чтобы сделать его поставщиком услуг (SP), а также развернуть его в другом домене. Затем вам нужно иметь один IDP (сервер провайдера идентификации) для ваших SP. Таким образом, вы можете использовать либо ADFS с Active Directory, либо LDAP, чтобы действовать как IDP.

У нас было похожее требование к нашему клиенту. Я недавно интегрировал Spring-Saml в свой проект.

Пожалуйста, дайте мне знать о любой помощи

2

Механизм федеративного единого входа (SSO), такой как SAML или OpenID Connect, даст вам то, что вы хотите.

Это связано с важным отличием, что форма входа не будет представлена ​​на a.com или же b.com но эти сайты скорее перенаправят на cauth.com и пользователь будет проходить аутентификацию там. cauth.com затем отправил бы проверяемое «утверждение» a.com а также b.com что пользователь успешно прошел аутентификацию. Это составляет одну из основных целей федеративного единого входа, а именно то, что учетные данные пользователя не должны представляться / храниться на иностранных веб-сайтах и ​​делает средства аутентификации независимыми от целевых веб-сайтов («Проверяющие стороны»).

Так что вам нужно найти подходящую реализацию SAML или OpenID Connect для вашей платформы (не пишите сами!) И использовать это.

1

шибболет является открытым исходным кодом и одним из самых популярных решений SSO. Включает в себя SAML Поставщик удостоверений который вы можете скачать здесь: https://shibboleth.net/downloads/identity-provider/latest/ .

Если ваш клиент готов, один из подходов — использовать поставщика единого облака, такого как Okta который имеет программа для разработчиков и может сделать вещи проще.

0

Я думаю, что в вашем описании есть тонкое недоразумение. Для проверки подлинности 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.

0

Следуйте инструкциям ниже, чтобы получить поддержку SAML с PHP.

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

Это отлично сработало для меня с CI и PHP

0
По вопросам рекламы [email protected]