Azure AD B2C 自定义策略中的刷新令牌吊销
Refresh token revocation in Azure AD B2C Custom Policy
我已经提出问题 并且在 1-5 分钟后有效。
但它仅适用于内置策略(用户流),不适用于自定义策略。
我从内置策略中得到 refresh_token A,从自定义策略中得到 refresh_token B。
为同一租户中的同一用户收到两个令牌。
执行revoke(Graph API) 后,当我尝试使用refresh_token A 获取新的访问权限和刷新令牌时,它失败了。但是当我尝试使用 refresh_token B(通过自定义策略接收)时,它仍然有效。可以获得新的代币。
撤销呼叫后我给了 15 分钟的时间间隔。
请帮我解决这个问题。
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 用户旅程
- 从 RefreshTokenUserJourneyId 技术配置文件 JwtIssuer 元属性中引用此用户旅程
默认情况下,时钟偏移设置为 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>
我已经提出问题
但它仅适用于内置策略(用户流),不适用于自定义策略。
我从内置策略中得到 refresh_token A,从自定义策略中得到 refresh_token B。
为同一租户中的同一用户收到两个令牌。
执行revoke(Graph API) 后,当我尝试使用refresh_token A 获取新的访问权限和刷新令牌时,它失败了。但是当我尝试使用 refresh_token B(通过自定义策略接收)时,它仍然有效。可以获得新的代币。
撤销呼叫后我给了 15 分钟的时间间隔。
请帮我解决这个问题。
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 用户旅程
- 从 RefreshTokenUserJourneyId 技术配置文件 JwtIssuer 元属性中引用此用户旅程
默认情况下,时钟偏移设置为 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>