首页 > 解决方案 > 如果清除本地状态,什么可以允许 Azure AD 应用程序访问而无需注销?

问题描述

根据https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-openid-connect-code#send-a-sign-out-request

当您希望将用户从应用程序中注销时,仅清除应用程序的 cookie 或以其他方式结束与用户的会话是不够的。您还必须将用户重定向到 end_session_endpoint 以退出。如果你不这样做,用户将能够重新对你的应用进行身份验证,而无需再次输入其凭据,因为他们将与 Azure AD 终结点进行有效的单点登录会话。

所以,我的问题很简单:如果应用程序已经清除了所有本地状态,那么当应用程序重新登录时,什么会告诉 Azure AD 存在有效的单点登录会话?那里没有 cookie,并且您没有在 URL 中发送任何内容来指示登录会话,那么在引用的场景中,Azure AD 使用什么来确定这一点?

标签: azure-active-directory

解决方案


那是 Azure AD 本身的 SSO cookie。

如果您仔细查看Azure AD 集成的应用程序模型,您会注意到每个身份验证请求都会发送到https://login.microsoftonline/[tenant_id|common]/.. 端点中的授权端点。此端点维护与用户代理的 SSO 会话。即使您注销单个应用程序,Azure AD 上的 SSO 仍会保留。这就是为什么当您的应用程序稍后将用户重定向到登录时,他/她已经登录并且不会收到提示。

这在文档的“隐藏”部分中得到了很好的描述,关于弃用的功能 -可配置令牌生命周期。检查单点登录会话令牌部分。尽管该功能(可配置令牌生命周期)本身已被弃用并且将在某个时间点停用,但单点登录会话令牌是 Azure AD 的工作方式,并且不会更改或受影响。我希望一旦令牌生命周期功能退役,部分文档将找到它的位置。


推荐阅读