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
相关产品推荐
相关产品推荐

