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

Orchestration Step预条件为OR逻辑,如何调整实现kmsiValue为False时强制执行

实现方案

要满足「只要记住我复选框未勾选(kmsiValue为False)就必须执行MFA步骤,kmsiValue为True时仅符合MFA跳过条件才跳过」的需求,可通过拆分编排步骤为两个环节实现:第一步计算是否符合跳过MFA的全部条件,第二步根据计算结果判断是否执行MFA。


1. 新增临时声明

在你的策略声明架构中新增两个布尔类型临时声明:

<ClaimType Id="isEligibleForMFASkip">
  <DisplayName>是否符合MFA跳过的业务条件</DisplayName>
  <DataType>boolean</DataType>
</ClaimType>
<ClaimType Id="shouldSkipMFA">
  <DisplayName>是否跳过当前MFA步骤</DisplayName>
  <DataType>boolean</DataType>
</ClaimType>

2. 新增跳过标识计算逻辑

新增声明转换和对应的技术配置文件,用于生成最终跳过标识:

<ClaimsTransformation Id="CalculateShouldSkipMFA" TransformationMethod="BooleanAnd">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="kmsiValue" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="isEligibleForMFASkip" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="shouldSkipMFA" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

<TechnicalProfile Id="CalculateMFASkipFlag">
  <DisplayName>计算MFA步骤跳过标识</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isEligibleForMFASkip" DefaultValue="false" />
    <!-- 存在活跃MFA会话或上次MFA时间在窗口内,则标记为符合跳过条件 -->
    <OutputClaim ClaimTypeReferenceId="isEligibleForMFASkip" DefaultValue="true">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
          <Value>isActiveMFASession</Value>
          <Action>SkipThisClaim</Action>
        </Precondition>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
          <Value>isLastMFATimeGreaterThanWindow</Value>
          <Value>False</Value>
          <Action>SkipThisClaim</Action>
        </Precondition>
      </Preconditions>
    </OutputClaim>
    <OutputClaim ClaimTypeReferenceId="shouldSkipMFA" DefaultValue="false" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="CalculateShouldSkipMFA" />
  </OutputClaimsTransformations>
</TechnicalProfile>

3. 拆分原有编排步骤

把原来的MFA编排步骤拆分为「标识计算」和「MFA执行」两个步骤:

<!-- 新增步骤7:计算MFA跳过标识 -->
<OrchestrationStep Order="7" Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="CalculateMFASkip" TechnicalProfileReferenceId="CalculateMFASkipFlag" />
  </ClaimsExchanges>
</OrchestrationStep>

<!-- 原MFA步骤调整为步骤8,仅根据最终标识判断是否跳过 -->
<OrchestrationStep Order="8" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
      <Value>shouldSkipMFA</Value>
      <Value>True</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="PhoneFactor-Verify-MFATimeWindow" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
  </ClaimsExchanges>
</OrchestrationStep>

逻辑验证

  • 记住我未勾选时,kmsiValue为False,shouldSkipMFA通过布尔与计算后永远为False,MFA步骤必然执行
  • 记住我已勾选时,仅当同时满足「存在活跃MFA会话」或「上次MFA时间在有效窗口内」,才会跳过MFA步骤,否则仍需执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:09:03