使用custom policy实现可信设备MFA认证多日免验证咨询
可以通过自定义策略配置实现勾选KMSI后MFA认证状态保留指定天数,无需重复验证,具体配置方式如下:
1. 配置MFA会话有效期
在你的自定义策略信赖方(RP)文件的<RelyingParty>节点下,新增/修改会话控制配置,指定MFA会话的保留时长:
<UserJourneyBehaviors> <!-- 配置KMSI整体保留天数,X替换为你需要的数值,比如14 --> <SingleSignOn Scope="Tenant" KeepAliveInDays="X" /> <!-- 滑动过期:用户每次访问都会刷新有效期,也可设置为Absolute使用固定过期规则 --> <SessionExpiryType>Rolling</SessionExpiryType> <!-- 指定MFA会话的计时单位,可选值:InHours、InDays --> <MfaSessionDuration>InDays</MfaSessionDuration> <!-- 配置MFA状态保留天数,Y建议和上方的KMSI保留天数X保持一致 --> <MfaSessionDurationInDays>Y</MfaSessionDurationInDays> </UserJourneyBehaviors>
2. 调整用户旅程的MFA触发逻辑
在用户旅程中触发MFA验证的编排步骤前,新增前置判断条件:如果用户已存在有效的MFA会话,且已勾选KMSI选项,则直接跳过MFA验证步骤,参考配置如下:
<OrchestrationStep Order="X" Type="ClaimsExchange"> <Preconditions> <!-- 不存在活跃MFA会话时才执行当前步骤,否则跳过 --> <Precondition Type="ClaimsExist" ExecuteActionsIf="false"> <Value>isActiveMfaSession</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> <!-- 未勾选KMSI时才执行当前步骤,否则跳过 --> <Precondition Type="ClaimEquals" ExecuteActionsIf="true"> <Value>extension_kmsiEnabled</Value> <Value>True</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" /> </ClaimsExchanges> </OrchestrationStep>
3. 配置验证
按你给出的测试场景验证即可:
- 首次登录应用,勾选「记住我」选项,完成MFA验证后成功登录
- 关闭浏览器重新打开访问应用,系统读取已留存的MFA会话状态,直接完成登录,不会弹出MFA验证页面
注意:如果你的自定义策略中包含自研的会话清理、声明重置逻辑,需要确保不会提前清除MFA会话相关的声明,否则会导致上述配置不生效。
内容的提问来源于stack exchange,提问作者user2903316
相关产品推荐
相关产品推荐

