由于偏斜导致撤销会话后 Azure B2C 刷新令牌问题

问题描述 投票:0回答:1

我正在关注策略启动包最近更新的详细信息:https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack

这个过程中似乎有一个底线(或者我认为是这样)。
我试图详细说明工作和非工作流程。

5 分钟的偏差真的有必要吗?还是我的方法中遗漏了一些东西。

谢谢 奈杰尔。

--- 工作中---

  1. 请求刷新令牌:refreshTokenIssuedOnDateTime = 13:10
  2. 撤销会话:refreshTokensValidFromDateTime = 13:20
  3. 在 13:30 请求新的刷新令牌: AssertRefreshTokenIssuedLaterThanValidFromDate 正确抛出错误,如refreshTokensValidFromDateTime (13:20) > refreshTokenIssuedOnDateTime (13:10)(有 5 分钟偏差)

--- 不工作 ---

  1. 请求刷新令牌:refreshTokenIssuedOnDateTime = 13:10
  2. 撤销会话:refreshTokensValidFromDateTime = 13:12
  3. 在 13:30 请求新的刷新令牌: AssertRefreshTokenIssuedLaterThanValidFromDate 不会抛出错误refreshTokensValidFromDateTime (13:12) ==refreshTokenIssuedOnDateTime (13:10)(有 5 分钟偏差) 刷新令牌发布日期时间 = 13:10
  4. 在 15:00 请求新的刷新令牌: AssertRefreshTokenIssuedLaterThanValidFromDate 不会抛出错误refreshTokensValidFromDateTime (13:12) < refreshTokenIssuedOnDateTime (13:30) (with 5 minute skew) refreshTokenIssuedOnDateTime = 15:00
  5. 与 4 相同,因为新的刷新令牌始终晚于刷新令牌ValidFromDateTime

总而言之,如果我在刷新令牌发出后 5 分钟内撤销会话,那么我将陷入非工作流程。

azure-ad-b2c-custom-policy azure-ad-b2c
1个回答
0
投票

这是正确的,这是因为以下技术配置文件的 TreatAsEqualIfWithinMillseconds 参数的默认值为 300000 毫秒或 5 分钟。

  <!--claims transformation for refresh token revocation -->
  <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" />
      <InputParameter Id="TreatAsEqualIfWithinMillseconds" DataType="int" Value="300000" />
    </InputParameters>
  </ClaimsTransformation>

可以按照此常见问题解答中的记录进行自定义:https://learn.microsoft.com/en-us/azure/active-directory-b2c/faq?tabs=app-reg-ga#i-ve-revoked-刷新令牌使用-microsoft-graph-invalidateallrefreshtokens--或-microsoft-graph-powershell---撤销-mgusersigninsession--为什么-is-azure-ad-b2c-仍然接受-旧的刷新--代币-

© www.soinside.com 2019 - 2024. All rights reserved.