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

Active Directory B2C Logout: what is the purpose then?

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

  1. 注销过程不会撤销已颁发的 ID 令牌
  2. 没有什么可以阻止被阻止的用户使用他们的刷新令牌(在阻止之前授予)来获取另一个访问代码,并继续这样做直到他们自己注销(从 here
  3. 来自 this link (actually the same..) they suggest to use the Azure Graph command "invalidateAllRefreshTokens", but from the 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 已清除

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

你所说的一切都是关于一个合法用户捕获他们的令牌并重播他们。当用户是第一个进行身份验证的人,并且是无论如何都可以重新进行身份验证以获得这些令牌的人时,这不是一个问题。

如果您担心您作为管理员会因为您的要求而迫使最终用户失去完全访问权限,而用户自愿注销无法实现这一点,则由您作为管理员调用 /revoke 来确定按需终结点(尽管 AAD B2Cs 会话 cookie 不会失效,只会刷新 token/s)。

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