SLO Issue
Представьте себе такую схему:
Платформа - SP1 ----- IdP ----- SP2 ----- Приложение
Платформа и приложения связаны с simpleSAMLphp SP, который также образует федерацию с IdP.
Вы должны найти обычную функцию выхода из Platffom, app1 и app2 и переписать ее:
normal_app_logout() {
// code of the normal logout
....
....
// new code
require_once('<path-to-ssp>/simplesamlphp/lib/_autoload.php'); //load the _autoload.php
$auth = new SimpleSAML_Auth_Simple('default-sp'); // or the auth source you using at your SP
$auth->logout(); <--- call to the SLO
}
Это завершит локальный сеанс, сеанс SP, подключенный к этому приложению, сеанс IdP и сеансы SP SP, подключенные к IdP, но ... что происходит с сеансом других приложений? Они все еще будут активны. Вы думали об активном вызове, чтобы завершить его, но я думаю, что лучше, если вы также переопределите функцию is_logged_in (), которую реализуют многие приложения.
Вы должны переопределить эту функцию и возвращать true только в том случае, если существует также активный сеанс SP, активный с использованием функции
$auth->isAuthenticated()
Недавно я реализовал эту функцию в плагине Wordpess SAML , проверьте код
IdP Issue
Используйте Onelogin бесплатную пробную версию , вы можете зарегистрировать свой SP там и использовать его IdP. Следуйте этому руководству по настройке разъемов SAML
Но я думаю, что вам лучше попытаться создать IdP самостоятельно.
Есть хорошая документация , и все просто. Используйте authsource «example-userpass», если вы не хотите тратить время на настройку базы данных / ldap.
Также вы можете установить свой фактический экземпляр simplesamlphp как SP & IdP, но я думаю, что если вы изучаете simplesamlphp, лучше не смешивать.