Один из наших клиентов просит нас внедрить единый выход (SLO) через SAML. Их сторона службы SAML — поставщик удостоверений, а наша — поставщик услуг. Единый вход (SSO) работает, проверяя учетные данные пользователя с помощью IdP клиента, а затем перенаправляя пользователя на страницу входа на еще одну платформу с токеном, который позволяет им войти прямо в систему. Эта платформа абсолютно ничего не знает о SAML, и в частности, не разделяет состояние сеанса SimpleSAMLphp.
Однако выход из системы должен происходить двумя способами:
Если пользователь нажимает кнопку выхода из системы на нашей платформе, ему необходимо выйти из нашего сайта и нажать на службу SLO поставщика удостоверений.
Если пользователь нажмет кнопку выхода из системы на стороне клиента или на стороне другого поставщика услуг, IdP клиента вызовет службу 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?