首页 > 解决方案 > Azure AD Auth - 仅注销特定应用程序/?

问题描述

这是我的注销代码(使用 CakePHP)。

public function logout()
{
    $this->clearTokens();
    $this->Authentication->logout();
    return $this->redirect('https://login.microsoftonline.com/' . 
         Configure::read('Azure.tenantId') . '/oauth2/logout?post_logout_redirect_uri=' 
         . urlencode('https://example.com/'));     
}

所以用户在应用程序中点击“注销”;它清除了一些会话数据;然后重定向到 Microsoft 以正确注销并再次重定向回来。

这似乎工作正常,但它让我退出一切 - 我希望只退出特定的应用程序 - 我已经替换tenantIdappId似乎没有任何区别。

这可能吗?

标签: phpazureauthenticationazure-active-directory

解决方案


您的注销行为与官方文档中的描述不符。

当您将用户重定向到 end_session_endpoint 时,Microsoft 标识平台会从浏览器中清除用户的会话。但是,用户可能仍会登录到使用 Microsoft 帐户进行身份验证的其他应用程序。为了使这些应用程序能够同时注销用户,Microsoft 标识平台向用户当前登录的所有应用程序的已注册 LogoutUrl 发送 HTTP GET 请求。

换句话说,仅调用/logout?post_logout_redirect_uri={0}端点不足以让您的用户退出所有应用程序。您仍然需要LogoutUrl从应用程序注册门户设置并LogoutUrl在应用程序代码中实现此类以支持应用程序中的单点注销。

确保您删除了LogoutUrl配置中的部分,它不会让您从任何地方注销。


推荐阅读