SM-MFA未返回isActiveMFASession导致SSO重复触发MFA问题咨询
故障根因
你当前的SM-MFA会话提供器配置存在三处核心缺陷,导致isActiveMFASession声明无法正常从SSO会话中读取生成:
isActiveMFASession仅配置了输出声明默认值,未配置强制生效参数,SSO会话加载时不会主动生成该声明isActiveMFASession未加入持久化声明列表,MFA验证通过后不会被写入SSO会话- 未确认MFA验证技术配置是否绑定了
SM-MFA会话管理提供器
修复步骤
1. 修正SM-MFA技术配置
更新你的SM-MFA技术配置代码如下,新增isActiveMFASession持久化配置和强制输出参数:
<TechnicalProfile Id="SM-MFA"> <DisplayName>Session Mananagement Provider</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <PersistedClaims> <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" /> <!-- 新增:将MFA会话标记持久化到SSO存储 --> <PersistedClaim ClaimTypeReferenceId="isActiveMFASession" /> </PersistedClaims> <OutputClaims> <!-- 新增AlwaysUseDefaultValue="true",确保SSO会话加载时必然输出该标记 --> <OutputClaim ClaimTypeReferenceId="isActiveMFASession" DefaultValue="true" AlwaysUseDefaultValue="true" /> </OutputClaims> </TechnicalProfile>
2. 绑定MFA验证技术配置的会话管理
找到你的PhoneFactor-InputOrVerify技术配置,在节点末尾新增会话管理引用,确保MFA验证通过后会写入SM-MFA会话:
<TechnicalProfile Id="PhoneFactor-InputOrVerify"> <!-- 原有所有配置保持不变,新增以下节点 --> <UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA" /> </TechnicalProfile>
3. 确认声明类型定义
检查BuildingBlocks下的ClaimsSchema节点,确认已定义isActiveMFASession,未定义则补充:
<ClaimType Id="isActiveMFASession"> <DisplayName>Is Active MFA Session</DisplayName> <DataType>boolean</DataType> </ClaimType>
验证逻辑
修复完成后,用户首次完成MFA验证时isActiveMFASession会被写入SSO会话,后续SSO登录加载会话时会直接输出该声明,触发MFA步骤的前置跳过规则,不会再重复要求MFA验证。
内容的提问来源于stack exchange,提问作者Christopher Norris
相关产品推荐
相关产品推荐

