我们最近使用 Azure AD B2C 自定义策略为我们的网站配置了 MFA。
该网站允许用户选择加入(或退出)MFA,以及更新他们的手机详细信息。
遗憾的是,当之前选择退出 MFA 的用户登录网站并选择加入 MFA 时,他们必须提供两次手机号码。一次验证他们的号码,一次进行身份验证。
这是一个尴尬的工作流程。理想情况下,我们希望用户只输入一次他们的号码。
当此更新发生时,我们已将问题缩小到运行 2 个连续 UserJourneys 的站点。第一个 UserJourney 验证号码(这是我想要的),但第二个 UserJourney 请求用户使用该号码进行身份验证。很遗憾,我们无法更改站点以仅运行第一个 UserJourney。
我已在第二个 UserJourney 中配置了有问题的 OrchestrationStep,以便在存在“isActiveMFASession”声明时应跳过它(见下文)。
<OrchestrationStep Order="7" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>extension_mfaFlag</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>extension_mfaFlag</Value>
<Value>No</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>isActiveMFASession</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
</ClaimsExchanges>
</OrchestrationStep>
但是,不会跳过此 OrchestrationStep,大概是因为“isActiveMFASession”声明不存在。
我正在尝试使用以下配置在第一个 UserJourney 中设置“isActiveMFASession”声明
<TechnicalProfile Id="SM-Noop">
<DisplayName>Noop Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isActiveMFASession" DefaultValue="true"/>
</OutputClaims>
</TechnicalProfile>
我是否缺少创建声明以便跳过第二个 UserJourney 中的 OrchestrationStep 的内容?