Active Directory B2C 注销:那么目的是什么?

问题描述

目前我仍在研究为我的桌面应用程序实现 ADB2C 注销的解决方案(我们实现了访问令牌(用于隐式流))。到目前为止,我的发现让我对 AD B2C 中的注销功能的目的感到非常困惑(也可能在 OpenId 中?)。我意识到以下几点:

  1. 注销过程不会撤销已经颁发的 id 令牌
  2. 没有什么能阻止被阻止的用户使用他们的刷新令牌(在被阻止之前授予)来获取一个访问代码,并继续这样做直到他们自己退出(从 here
  3. this link(实际上相同..)他们建议使用 Azure Graph 命令“invalidateallRefreshTokens”,但从 Official Microsoft documentation 看来仍处于测试阶段,不支持生产。立>

所以目前我想知道使用注销过程的真正目的是什么。似乎我应该自己处理这一切(这很好),但是我还需要调用注销端点吗? Here 他们说: If your app didn't go to the logout endpoint,the user will reauthenticate to your app without entering their credentials again. The reason is that they'll have a valid single sign-in session with the Microsoft identity platform. 但目前我无法理解这句话(可能是因为我仍然对所有这些坏消息感到震惊)。所以我的问题是:您如何完成注销过程?当我从桌面应用程序注销时,有什么需要注意的事项吗?感谢您的耐心和时间。

解决方法

当您调用注销端点时,会发生一些事情:

  1. 访问和刷新令牌被客户端或机密服务器销毁
  2. AAD B2C 会话 cookie 已清除

此处注销的要点是,当合法用户请求在特定设备上注销时,再次登录时,用户必须提供凭据。想象一下家庭住宅或图书馆中的共享设备。用户必须退出以保护他们自己。

您表示关注的所有内容均与捕获其令牌并重放它们的合法用户有关。如果用户是首先进行身份验证的人,并且无论如何都可以重新进行身份验证以获取这些令牌,那么这不是问题。

如果您担心作为 ADMIN 的您因为您的要求而迫使最终用户失去完全访问权限,这不是通过用户自愿注销来实现的,则由您作为 ADMIN 调用 /revoke 端点确定需求(尽管 AAD B2C 会话 cookie 不会失效,只会使刷新令牌失效)。

在这种情况下,用户将保持登录状态,直到其访问令牌过期。如果帐户在令牌撤销时被标记为禁用,他们将无法再次进行身份验证。如果这种情况对您的服务安全运行至关重要,您希望缩短访问令牌的生命周期(最短:5 分钟)。