当我断开 azure 用户的连接时,他仍然在 saml2 会话中

when i disconnect the azure user he remains in the saml2 session

我在 azure 上有一个与 saml2 集成的应用程序,在我的系统上我总是检查用户是否使用以下方式登录:

$as = new \SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();

然而,当我从 azure 中注销用户时,requireAuth returns 表明用户仍处于登录状态,只有当我关闭浏览器并再次输入时,它才会让用户重新登录。

SimpleSAMLphp 中使用 PHP sessions 将在第一次调用时关闭任何现有会话,之后以其自己的会话为准。

如果您想在调用 SimpleSAMLphp 后恢复您自己的会话,您可以使用以下步骤清理会话:

$session = \SimpleSAML\Session::getSessionFromRequest();
$session->cleanup();

如果您不想清理 SimpleSAMLphp 的会话并在之后尝试使用 $_SESSION,您将不会使用自己的会话,并且您的所有数据都可能丢失或无法访问。

请注意,如果您的应用程序使用 custom session handler。您可能会导致问题,因为 SimpleSAMLphp's 独立网络 UI 使用默认的 PHP 会话处理程序。因此,您需要在对 SimpleSAMLphp:

进行任何调用之前取消设置自定义处理程序
// use custom save handler
session_set_save_handler($handler);
session_start();

// close session and restore default handler
session_write_close();
session_set_save_handler(new SessionHandler(), true);

// use SimpleSAML\Session
$session = \SimpleSAML\Session::getSessionFromRequest();
$session->cleanup();
session_write_close();

// back to custom save handler
session_set_save_handler($handler);
session_start();

参考Doc &