我使用自定义策略来执行一些用户旅程,并使用SocialAndLocalAccountsWithMfa。
我正在使用“LocalAccountDiscoveryUsingEmailAddress”在第一个屏幕上获取他们的电子邮件地址。然后根据他们是否注册了MFA,将他们发送到移动的OTP屏幕或发送到邮件地址OTP屏幕。
现在所发生的是,他们把他们的电子邮件地址后,按下确定(他们被发送到emial OTP屏幕),他们再次提出了另一个屏幕,把他们的电子邮件地址再次验证.我在这里寻找两种可能性
1)(首选)他们将立即收到一封OTP电子邮件-因此他们不必键入电子邮件地址,然后单击“验证电子邮件”来发送OTP
或者
2)他们的电子邮件地址已经填充在屏幕上,所以他们不必再次键入,因此他们所要做的就是单击“验证电子邮件”按钮。
我的用户之旅类似于
<UserJourney Id="PasswordReset">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="PasswordResetUsingEmailAddress" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>strongAuthenticationPhoneNumber</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="PasswordResetUsingEmailAddressExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddressOTP" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>strongAuthenticationPhoneNumber</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="4" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
1条答案
按热度按时间unftdfkk1#
首先,对于#2,您可以实现一个技术配置文件,该配置文件接受电子邮件地址作为输入声明,以便在自声明页面中预填充该声明,例如:
此技术配置文件引用只读电子邮件地址,因此最终用户无法更改OTP验证的电子邮件地址。
CreateReadonlyEmailClaim
声明转换定义为:readonlyEmail
声明类型声明为:对于#1,您可以实施上述更改,并在自定义页面UI中实施JavaScript函数,以“单击”验证电子邮件按钮来启动OTP验证。