You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure AD B2C中实现用户每30天重新验证登录?

实现Azure AD B2C每30天强制邮件OTP重验证(自定义策略)

由于你使用的是基于SAML的自定义策略,条件访问策略确实无法直接实现这种基于用户上次验证时间的触发逻辑,以下是可行的落地方案:

1. 扩展用户属性存储验证时间

先在Azure AD B2C中创建自定义用户属性,比如extension_LastMfaVerificationDate,用来记录用户最后一次完成邮件OTP验证的时间。

2. 加入时间差判断逻辑

在自定义策略的登录流程里,添加读取用户属性、计算时间间隔的步骤:

  • 先配置读取用户属性的技术配置文件,获取extension_LastMfaVerificationDate的值
  • 使用DateTimeCompare断言判断当前时间与上次验证时间的间隔是否超过30天:
<ClaimsTransformation Id="CheckNeedMfa" TransformationMethod="DateTimeCompare">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_LastMfaVerificationDate" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="operator" DataType="string" Value="greaterThan" />
    <InputParameter Id="timeSpan" DataType="string" Value="P30D" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="NeedMfa" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

其中currentDateTime可通过GetCurrentDateTime断言获取,NeedMfa为布尔类型声明,标记是否需要触发OTP验证。

3. 分支流程触发OTP验证

在登录编排步骤中,根据NeedMfa的值分支处理:

  • 若NeedMfa为true,跳转至邮件OTP验证的技术配置文件(比如内置的EmailVerification)
  • 验证完成后,更新extension_LastMfaVerificationDate为当前时间,同步回用户属性

4. 处理首次登录场景

对于新用户或无验证记录的用户,直接触发邮件OTP验证,并初始化extension_LastMfaVerificationDate的值。

5. 嵌入SAML登录流程

将上述逻辑整合到SAML登录的用户旅程中,确保用户完成初始身份验证(如用户名密码校验)后,先执行时间判断和OTP验证,再颁发SAML令牌。

内容的提问来源于stack exchange,提问作者AskMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:29:52