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

如何为Azure AD B2C自定义策略设置2FA登录免验证期(如21天)?

解决Azure AD B2C自定义策略中记住MFA状态的问题

由于Azure AD B2C自定义策略完全独立于租户内置的MFA设置,你需要通过修改自定义策略的会话管理配置来实现“记住MFA状态”的功能,具体步骤如下:

1. 添加RememberMFA技术配置文件

在你的TrustFrameworkExtensions.xml文件中,找到<ClaimsProviders>节点,添加以下技术配置文件,用于定义MFA状态的过期时长(这里设置为21天,即1814400秒):

<ClaimsProvider>
  <DisplayName>Session Management</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="SM-RemoveMFA">
      <DisplayName>Session Management Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="SessionExpiryType">Absolute</Item>
        <Item Key="SessionExpiryInSeconds">1814400</Item>
      </Metadata>
    </TechnicalProfile>
    <TechnicalProfile Id="SM-RememberMFA">
      <DisplayName>Session Management Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="SessionExpiryType">Rolling</Item>
        <Item Key="SessionExpiryInSeconds">1814400</Item>
        <Item Key="RememberMFAToCookie">true</Item>
      </Metadata>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

2. 修改MFA验证的技术配置文件

找到你合并策略中负责MFA验证的技术配置文件(比如邮件OTP的Email-Verify、电话OTP的PhoneFactor-Verify、TOTP的TOTP-Verify),在每个对应的<TechnicalProfile>节点中添加<SessionManagement>引用,指定使用上面的SM-RememberMFA:

以邮件OTP为例:

<TechnicalProfile Id="Email-Verify">
  <!-- 原有配置内容 -->
  <SessionManagement ReferenceId="SM-RememberMFA" />
</TechnicalProfile>

对电话OTP和TOTP的验证技术配置文件执行同样操作,添加上述SessionManagement节点。

3. 调整用户旅程中的MFA步骤逻辑

在你的用户旅程(UserJourney)中,找到触发MFA验证的步骤(通常是<OrchestrationStep>中Type为ClaimsExchange,引用MFA验证技术配置的步骤),添加前置判断:检查用户是否已有有效的MFA会话,如果有则跳过验证步骤。

在用户旅程的MFA步骤之前,添加一个新的编排步骤:

<OrchestrationStep Order="X" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
      <Value>isActiveMFASession</Value>
      <Value>true</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <!-- 这里是你原有的MFA验证ClaimsExchange,比如选择MFA方法、验证OTP/TOTP的交换 -->
  </ClaimsExchanges>
</OrchestrationStep>

关键说明

  • 时长计算:21天 = 212460*60 = 1814400秒,你可以根据需求修改SessionExpiryInSeconds的值。
  • Rolling类型表示在用户活跃期间会自动延长会话有效期,Absolute则是固定时长后过期,可根据业务需求选择。
  • 确保用户完成MFA验证后,策略会将isActiveMFASession声明设置为true,这通常由RememberMFA的会话管理自动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:44:55