【问题标题】:Refresh token revocation in Azure AD B2C Custom PolicyAzure AD B2C 自定义策略中的刷新令牌吊销
【发布时间】:2019-03-14 15:18:52
【问题描述】:

我已经提出了问题Refresh token revoke,它会在 1-5 分钟后起作用。
但它仅适用于内置策略(用户流),不适用于自定义策略。

我从内置策略中获得了 refresh_token A,从自定义策略中获得了 refresh_token B。

为同一租户中的同一用户接收两个令牌。

执行 revoke(Graph API) 后,当我尝试使用 refresh_token A 获取新的访问权限和刷新令牌时,它失败了。但是当我尝试使用 refresh_token B(通过自定义策略接收)时,它仍然有效。能够获得新的令牌。

我在撤销电话后给了 15 分钟的时间间隔。

请帮我解决这个问题。

【问题讨论】:

    标签: azure-active-directory azure-ad-b2c azure-ad-graph-api


    【解决方案1】:

    The Configure the resource owner password credentials flow in Azure Active Directory B2C using a custom policy article 描述了必须实现的自定义元素,以管理刷新令牌并测试已发布的令牌是否无效。

    你必须:

    • 创建 refreshTokenIssuedOnDateTimerefreshTokensValidFromDateTime 声明类型
    • 创建 AssertRefreshTokenIssuedLaterThanValidFromDate 声明转换
    • 创建 AAD-UserReadUsingObjectId-CheckRefreshTokenDateSM-RefreshTokenReadAndSetup 技术配置文件
    • 创建 ResourceOwnerPasswordCredentials-RedeemRefreshToken 用户旅程
    • 请参阅 JwtIssuer 技术配置文件的 RefreshTokenUserJourneyId 元属性中的此用户旅程

    默认情况下,时钟偏差设置为 0,但您可以使用 AssertRefreshTokenIssuedLaterThanValidFromDate 声明转换的 TreatAsEqualIfWithinMillseconds 参数进行更改:

    <ClaimsTransformation Id="AssertRefreshTokenIssuedLaterThanValidFromDate" TransformationMethod="AssertDateTimeIsGreaterThan">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="refreshTokenIssuedOnDateTime" TransformationClaimType="leftOperand" />
        <InputClaim ClaimTypeReferenceId="refreshTokensValidFromDateTime" TransformationClaimType="rightOperand" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="AssertIfEqualTo" DataType="boolean" Value="false" />
        <InputParameter Id="AssertIfRightOperandIsNotPresent" DataType="boolean" Value="true" />
        <!-- Set the clock skew to 5 minutes (300000 milliseconds). -->
        <InputParameter Id="TreatAsEqualIfWithinMillseconds" DataType="int" Value="300000" />
      </InputParameters>
    </ClaimsTransformation>
    

    【讨论】:

    • @Chris,我在使用 oidc 客户端的 javascript SPA 客户端时遇到了同样的问题。您指向的文档顶部有一条不支持 SPA 的注释。这实际上意味着什么?
    • 嗨@DouglasWoods。 SPA 不应接收刷新令牌,因为 (i) 刷新令牌代表帐户凭据,(ii) 它必须安全存储,以及 (iii) 它不得暴露在客户端。相反,SPA 可以使用silent authentication 更新访问令牌。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多