gpt4 book ai didi

azure - 填充 Azure AD B2C Orchestration 中的电子邮件地址文本框

转载 作者:行者123 更新时间:2023-12-04 12:42:00 25 4
gpt4 key购买 nike

我正在使用自定义策略来执行一些用户旅程并使用 SocialAndLocalAccountsWithMfa 。在其中一个步骤中,我要求用户提供他们的电子邮件地址

我正在使用“LocalAccountDiscoveryUsingEmailAddress”在第一个屏幕上获取他们的电子邮件地址。然后,根据他们是否注册了 MFA,他们将被发送到移动 OTP 屏幕或发送到邮件地址 OTP 屏幕。

现在发生的情况是,在他们输入电子邮件地址并按确定(并且他们被发送到 emial OTP 屏幕)后,他们会再次出现另一个屏幕,以再次输入他们的电子邮件地址以进行验证。我在这里寻找两种可能性

1) (首选)他们会立即收到一封电子邮件 OTP - 因此他们无需输入电子邮件地址,然后单击“验证 emial”即可发送 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>

最佳答案

首先,对于#2,您可以实现一个技术配置文件,该配置文件接受电子邮件地址作为输入声明,以便将其预先填充在自声明页面中,例如:

<TechnicalProfile Id="SelfAsserted-LocalAccount-EmailVerification">
<DisplayName>Local Account Email Address Verification</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.localaccount.emailverification</Item>
<Item Key="EnforceEmailVerification">true</Item>
</Metadata>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateReadonlyEmailClaim" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="readonlyEmail" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="readonlyEmail" PartnerClaimType="verified.email" Required="true" />
</OutputClaims>
</TechnicalProfile>

此技术配置文件指的是只读电子邮件地址,因此最终用户无法更改用于 OTP 验证的电子邮件地址。

CreateReadonlyEmailClaim 声明转换定义为:

<ClaimsTransformation Id="CreateReadonlyEmailClaim" TransformationMethod="FormatStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat" DataType="string" Value="{0}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="readonlyEmail" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>

readonlyEmail 声明类型声明为:

<ClaimType Id="readonlyEmail">
<DisplayName>E-mail Address</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>

对于#1,您可以实现上述更改,并在自定义页面 UI 中实现 JavaScript 函数,以“单击”验证电子邮件按钮来启动 OTP 验证。

关于azure - 填充 Azure AD B2C Orchestration 中的电子邮件地址文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54118940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com