You need to enable JavaScript to run this app. Azure AD B2C 自定义策略如何在令牌刷新时跳过邮箱2FA验证
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C 自定义策略如何在令牌刷新时跳过邮箱2FA验证

配置错误点及修复方案

1. 业务流程前置条件语法错误

你当前的Orchestration Step前置条件采用ClaimEquals类型,但缺少必填的目标匹配值,导致预条件永远无法触发,2FA步骤始终会执行。ClaimEquals类型要求传入两个Value节点:第一个为声明名,第二个为要匹配的声明值。
修正后的前置条件代码:

<OrchestrationStep Order="5" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
      <Value>isActiveMFASession</Value>
      <Value>true</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="Email-2FA" TechnicalProfileReferenceId="SelfAsserted-Email-2FA"/>
  </ClaimsExchanges>
</OrchestrationStep>

2. MFA会话管理未开启SSO同步

你的SM-MFA技术配置文件没有设置IncludeInSso参数为true,刷新令牌流程默认不会拉取非SSO会话内的声明,导致即使登录时生成了isActiveMFASession,刷新时也无法读取到该声明,预条件不生效。
修正后的SM-MFA代码:

<TechnicalProfile Id="SM-MFA">
  <DisplayName>MFA 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="IncludeInSso">true</Item>
  </Metadata>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isActiveMFASession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

3. 可选:适配刷新流程的无交互特性

刷新令牌是无UI交互的后台流程,建议给SelfAsserted-Email-2FA技术配置文件增加如下元数据,避免触发无交互场景下的执行错误:

<Metadata>
  <!-- 原有其他配置保持不变,新增下面一行 -->
  <Item Key="AllowGenerationOfClaimsWithoutUserInteraction">true</Item>
</Metadata>

内容的提问来源于stack exchange,提问作者Moon Is Cool

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 13:45:03