【问题标题】:Active Directory B2C Logout: what is the purpose then?Active Directory B2C 注销:那么目的是什么?
【发布时间】:2021-06-04 23:52:51
【问题描述】:

目前,我仍在研究为我的桌面应用程序实现 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. 但此刻我无法理解这句话(可能是因为我对所有这些坏消息感到有些震惊)。所以我的问题是:您如何完成注销过程?当我从桌面应用程序中注销时,有什么需要注意的事项吗?感谢您的耐心和时间。

【问题讨论】:

    标签: wpf azure-ad-b2c logout azure-ad-graph-api


    【解决方案1】:

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

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

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

    您所说的所有问题都是指合法用户获取其令牌并重放它们。当用户是首先进行身份验证的人,并且无论如何都可以重新进行身份验证以获得这些令牌时,这不是问题。

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

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

    【讨论】:

    • 这如何防止使用共享设备的其他人登录之前用户的帐户?
    • 因为所有本地工件(cookies/tokens)都被销毁了。
    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 2019-02-23
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2023-03-07
    相关资源
    最近更新 更多