刷新 Azure AD B2C 中的令牌撤销

2024-02-13

在我的 AD B2C 应用程序中,我需要撤销 AD B2C 为用户提供的所有刷新令牌。当用户帐户登录多个应用程序并且在一个应用程序中用户更改了密码时,这是一项需要实施的要求。更改密码后,我已撤销给予其他应用程序的所有刷新令牌。 怎么做?

Update:
我尝试过以下,

  1. B2C - 通过策略获取令牌
    https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/authorize https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/authorize
    https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/token https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/token
    a) 使用广告 b2c 用户帐户获取访问令牌和刷新令牌(直接通过租户创建,而不是通过注册策略创建)。
    b)尝试使用令牌端点和grant_type刷新令牌来获取新的访问和刷新令牌->能够获取令牌
    c)使用撤销令牌https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6 https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6和客户端凭证流(在广告 B2C 租户的 AD 刀片中注册并授予对图形 api 的访问权限的应用程序)
    d) 上述令牌撤销 api 调用成功并尝试了步骤 (b)。
    e)仍然能够从步骤(b)获得新的代币

  2. B2C - 按策略获取令牌 - 使用 GA 帐户撤销
    https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/authorize https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/authorize
    https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/token https://login.microsoftonline.com/te/tenantname.onmicrosoft.com/b2c_1a_policyname/oauth2/v2.0/token
    a) 使用广告 b2c 用户帐户获取访问令牌和刷新令牌(直接通过租户创建,而不是通过注册策略创建)。
    b)尝试使用令牌端点和grant_type刷新令牌来获取新的访问和刷新令牌->能够获取令牌
    c)使用撤销令牌https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6 https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6这是通过使用直接在租户中创建的 GA 帐户登录到 graph api explorer 来完成的。
    d) 上述令牌撤销 api 调用成功并尝试了步骤 (b)。
    e)仍然能够从步骤(b)获得新的代币

  3. B2C - 无策略获取Token
    https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/authorize https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/authorize
    https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/token https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/token
    a) 使用广告 b2c 用户帐户获取访问令牌和刷新令牌(直接通过租户创建,而不是通过注册策略创建)。
    b)尝试使用令牌端点和grant_type刷新令牌来获取新的访问和刷新令牌->能够获取令牌
    c)使用撤销令牌https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6 https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6和客户端凭证流(在广告 B2C 租户的 AD 刀片中注册并授予对图形 api 的访问权限的应用程序)
    d) 上述令牌撤销 api 调用成功并尝试了步骤 (b)。
    e) 无法从步骤(b) 获取新令牌

  4. B2C - 无需 Poicy 即可获取代币 - 使用 GA 帐户撤销
    https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/authorize https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/authorize
    https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/token https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/token
    a) 使用广告 b2c 用户帐户获取访问令牌和刷新令牌(直接通过租户创建,而不是通过注册策略创建)。
    b)尝试使用令牌端点和grant_type刷新令牌来获取新的访问和刷新令牌->能够获取令牌
    c)使用撤销令牌https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6 https://graph.windows.net/myorganization/users/xxxxx-userObjectID-xxxx/invalidateAllRefreshTokens?api-version=1.6这是通过使用直接在租户中创建的 GA 帐户登录到 graph api explorer 来完成的。
    d) 上述令牌撤销 api 调用成功并尝试了步骤 (b)。
    e)仍然能够从步骤(b)获得新的代币

基本上无法撤销从 B2C 策略工作流程创建的令牌。

解决方案:
刷新令牌撤销图 api 正在运行。但完成该操作大约需要 5 分钟。
但这里的问题是在等待期间,我能够获得新的刷新令牌和访问令牌,并且即使在撤销后,这些新的刷新令牌仍然可以工作。这意味着 Azure AD 考虑了刷新令牌撤销 api 调用的请求时间,并撤销该时间之前颁发的所有刷新令牌。
那么如何避免这种情况呢?
当使用现有刷新令牌在离线范围内请求新的访问令牌时,为什么 Azure AD 会提供新的刷新令牌,即使现有刷新令牌有有效期。


You can 使特定用户的所有刷新令牌无效 https://learn.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#invalidate-all-refresh-tokens-for-a-user使用 Azure AD 图形 API:

POST https://graph.windows.net/myorganization/users/{user_id}/invalidateAllRefreshTokens?api-version=1.6

Azure AD Graph API 将被弃用。在 Microsoft Graph API 中,文档是电话是:

POST https://graph.microsoft.com/v1.0/me/revokeSignInSessions
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

刷新 Azure AD B2C 中的令牌撤销 的相关文章

随机推荐