【问题标题】:Azure AD B2C Signout does not invalidate the tokenAzure AD B2C 注销不会使令牌无效
【发布时间】:2019-07-23 14:23:41
【问题描述】:

我们正在使用 MSAL 库并调用 end_session_endpoint url 进行注销,它不会使访问令牌无效。 如果我们在注销后使用相同的令牌,它仍然有效。任何相同的修复。 是否有任何特殊的方法可以从 Web 应用程序中注销

注意:我们在移动设备中也看到了这个问题,库 react-native-ios-android-appauth-b2c

【问题讨论】:

  • 您确定将注销发送到正确的 B2C 端点吗?你能给我们端点 URL 吗?
  • "end_session_endpoint": "https://.xxx.xxx/.xxxx.xxx/oauth2/v2.0/logout?p="
  • 访问令牌是不记名令牌,它们在到期之前一直有效,并且没有使它们失效的机制。你确定你不是在谈论客户端会话吗?
  • 你的网址中的 xxx.xxx 是什么? fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/… 之类的东西? p=b2c_1_sign_in &post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F ?请注意,您屏蔽的 2 个部分不相同!
  • 您可能将访问令牌与会话 cookie 或类似的东西混淆了。 end_session_endpoint 只会清除会话。

标签: azure azure-ad-b2c


【解决方案1】:

这是按照规范。访问令牌不能被撤销或失效。

记录在案here

“客户端使用访问令牌来访问受保护的资源。访问令牌只能用于用户、客户端和资源的特定组合。访问令牌不能被撤销并且在到期之前一直有效。 获得访问令牌的恶意行为者可以在其生命周期内使用它。调整访问令牌的生命周期是在提高系统性能和增加客户端在用户访问后保留访问权限之间的权衡帐户被禁用。通过减少客户端需要获取新访问令牌的次数来提高系统性能。默认值为 1 小时 - 1 小时后,客户端必须使用刷新令牌(通常是静默)获取新的刷新令牌和访问令牌。”

可以撤销刷新令牌。

【讨论】:

    【解决方案2】:

    访问令牌不能失效。它是不记名令牌,因此任何持有它的人都可以使用它直到过期。

    在您的情况下,可能不需要在注销时使令牌无效。您可以简单地删除它,确保它不会保留在任何地方。

    你提到的end_session_endpoint端点只会清除浏览器中的B2C会话cookie和B2C服务器上的用户状态,与访问令牌没有直接关系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2020-11-27
      • 2021-03-03
      • 2020-12-21
      • 2021-09-18
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多