Единый выход из системы (SLO) — это важная функция реализаций SAML (языка разметки утверждений безопасности), которая позволяет пользователям одновременно выходить из нескольких приложений. SimpleSAMLphp — популярная библиотека PHP, которая упрощает интеграцию SAML, включая функциональность SLO. В этой статье мы рассмотрим различные методы реализации единого выхода из системы с использованием SimpleSAMLphp и приведем примеры кода.
- Выход из системы, инициированный поставщиком услуг (SP):
Поставщики услуг — это приложения, использующие SimpleSAMLphp для аутентификации SAML. Чтобы инициировать единый выход со стороны поставщика услуг, вы можете использовать функцию logout()
следующим образом:
<?php
require_once('/path/to/simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple('sp');
$as->logout('https://idp.example.com');
?>
- Выход из системы, инициированный поставщиком удостоверений (IdP):
Поставщики удостоверений отвечают за управление аутентификацией пользователей и могут инициировать сеансы единого выхода. Чтобы обработать выход из системы, инициированный поставщиком удостоверений, вы можете использовать следующий код у своего поставщика услуг:
<?php
require_once('/path/to/simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple('sp');
$as->logout('https://idp.example.com', ['ReturnTo' => 'https://sp.example.com']);
?>
- Единый запрос на выход (SLO):
Чтобы отправить запрос на единый выход от поставщика услуг поставщику удостоверений, вы можете использовать метод sendLogoutRequest()
, как показано ниже:
<?php
require_once('/path/to/simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple('sp');
$logoutRequest = $as->getLogoutRequest();
// Send the logoutRequest to the Identity Provider
?>
- Ответ на единый выход из системы (SLOR):
Чтобы обработать ответ однократного выхода из системы от поставщика удостоверений, вы можете использовать метод receiveLogoutResponse()
:
<?php
require_once('/path/to/simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple('sp');
$as->receiveLogoutResponse();
?>
- Настройка процесса выхода:
SimpleSAMLphp позволяет настроить процесс выхода из системы, реализуя функции обратного вызова PHP. Например, вы можете определить собственный обработчик выхода из системы, используя класс SimpleSAML_Auth_ProcessingFilter
. Вот пример:
<?php
class CustomLogoutHandler extends SimpleSAML_Auth_ProcessingFilter
{
public function process(&$state)
{
// Custom logout logic
}
}
$as = new SimpleSAML_Auth_Simple('sp');
$as->logout(null, null, ['SimpleSAML_Auth_ProcessingFilter' => [CustomLogoutHandler::class]]);
?>
Реализация единого выхода из системы с использованием SimpleSAMLphp имеет решающее значение для поддержания пользовательских сеансов в нескольких приложениях в среде на основе SAML. В этой статье мы рассмотрели различные методы достижения функциональности единого выхода из системы, включая выходы, инициированные поставщиком услуг и поставщиком удостоверений, отправку и получение запросов и ответов единого выхода, а также настройку процесса выхода из системы с помощью функций обратного вызова. Используя возможности SimpleSAMLphp, разработчики могут оптимизировать реализацию SLO, повышая общее удобство работы пользователей и повышая безопасность.