Один из наших клиентов просит, чтобы мы реализовали Single Logout (SLO) через SAML. Их стороной службы SAML является поставщик удостоверений, в то время как наш поставщик услуг. Single-Signon (SSO) работает, проверяя учетные данные пользователя с клиентом IdP, а затем перенаправляя пользователя на страницу входа на другой платформе с маркером, который позволяет им войти в систему. Эта платформа абсолютно ничего не знает о SAML и в в частности, не разделяет состояние сеанса SimpleSAMLphp.
Выход из системы должен произойти двумя способами:
-
Если пользователь нажимает кнопку выхода на нашей платформе, необходимо вывести их на нашем сайте и нажать на службу IdP SLO.
-
Если пользователь нажимает кнопку выхода на стороне клиента или на другой стороне поставщика услуг, клиент IdP попадает в нашу службу SP SLO, которая затем должна вывести их из нашей реальной платформы, прежде чем перенаправить пользователя вернуться к странице ответа на выход из системы.
Я могу убедить нашу платформу перенаправить пользователя на произвольную страницу при выходе из системы, поэтому я думаю, что первая часть может быть достигнута на странице, использующей SimpleSAML_Auth_Simple::getLogoutURL()
.
Такая страница может также работать при ударе со стороны IdP, но спецификации SAML достаточно сложны, и я не могу быть уверен, пока не попробуем. Однако конфигурация SP в config/authsources.php
не принимает параметр SingleLogoutService
; метаданные, созданные в /www/module.php/saml/sp/metadata.php/entityid
, по-прежнему отображают /www/module.php/saml/sp/saml2-logout.php/entityid
как местоположение SingleLogoutService. Если эта страница необходима для очистки сеанса SimpleSAMLphp, это хорошо, но мне нужно знать, как проскальзывать дополнительные перенаправления, необходимые для входа пользователя из нашей платформы.
Я попытался найти примеры, но все, что я получаю, это ссылки API. Было бы также неплохо узнать, как я могу проверить выход из системы, не пытаясь настроить собственный IdP; существует ли такая служба, как openidp.feide.no
, которая обрабатывает SLO, а также SSO?