在Azure AD B2C自定义策略中刷新令牌吊销

时间:2019-03-14 15:18:52

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

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

我有内置策略的refresh_token A和自定义策略的refresh_token B。

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

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

撤消电话后,我给了15分钟的时间间隔。

请帮助我解决此问题。

1 个答案:

答案 0 :(得分:1)

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

您必须:

  • 创建 refreshTokenIssuedOnDateTime refreshTokensValidFromDateTime 声明类型
  • 创建 AssertRefreshTokenIssuedLaterThanValidFromDate 声明转换
  • 创建 AAD-UserReadUsingObjectId-CheckRefreshTokenDate SM-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>