azure-active-directory - Azure AD B2C 自定义策略中的刷新令牌吊销
问题描述
我已经提出了Refresh token revoke问题,它在 1-5 分钟后起作用。
但它仅适用于内置策略(用户流),不适用于自定义策略。
我从内置策略中获得了 refresh_token A,从自定义策略中获得了 refresh_token B。
为同一租户中的同一用户接收两个令牌。
执行撤销(图形 API)后,当我尝试使用 refresh_token A 获取新的访问和刷新令牌时,它失败了。但是当我尝试使用 refresh_token B(通过自定义策略接收)时,它仍然有效。能够获得新的令牌。
撤销电话后,我给了 15 分钟的时间间隔。
请帮我解决这个问题。
解决方案
使用自定义策略在 Azure Active Directory B2C 中配置资源所有者密码凭据流一文描述了必须实施的自定义元素,以管理刷新令牌并测试已发布的令牌是否无效。
你必须:
- 创建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>
推荐阅读
- javascript - 如何在悬停时设置 Bootstrap 下拉菜单?
- reactjs - 在 CI 管道上构建项目以及尝试通过 Yarn 添加包时出现错误“错误找不到包“XXX”
- python - 如果它们不在预选列表中,如何遍历图中的边
- c - Libcurl 将更改请求从 PUT 上传到 POST
- r - 如何通过传递字符向量重命名 tibble 中的所有列名?
- java - 扫描仪扫描输入后,我需要输入 2 次数字
- angular - 如何为 ngSelect 选项添加工具提示?在将选项悬停在下拉列表中时,我需要显示工具提示
- javascript - fetch 在使用身份验证进行 cors 请求时拒绝响应代码为 200 的请求
- kubernetes - 当 kubernetes pod 启动时,嵌套异常是 java.net.UnknownHostException
- asp.net-core - 从 ASP.NET Core 2.2 迁移到 3.1