我正在使用自定义策略。
所需的用户旅程是:
- 用户在屏幕 1 上输入电子邮件/密码。
- 成功验证屏幕 1 后,用户将被发送到屏幕 2。在屏幕 2 中,用户必须输入发送到其电子邮件的代码。(注意用户在注册时已经验证了邮箱)
我坚持让 2 工作。当前策略如下所示: 步骤 1 输出电子邮件声明。
第 2 步将电子邮件声明作为输入。
在第 2 步中,将显示一个预填充电子邮件的可编辑文本框。不要求任何代码。但是,如果电子邮件被编辑,则要求输入代码。
<TechnicalProfile Id="VerifyEmailAddress">
<DisplayName>Local Account Signin</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.selfasserted</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="Verified.Email" Required="true"/>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingEmailAddress" />
</ValidationTechnicalProfiles>
</TechnicalProfile>