我想根据Azure AD B2C自定义注册流程中的自定义逻辑来验证用户电子邮件。如果验证失败,则不应创建用户,并且应显示一条错误消息以提供新的电子邮件。
这是我的RESTful API声明交换声明:
<ClaimsProvider>
<DisplayName>REST APIs Check User Email</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="APIFunctionsCheckUserEmail">
<DisplayName>Check user email</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://my.service.net/api/validate</Item>
<Item Key="AuthenticationType">None</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AllowInsecureAuthInProduction">true</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="userEmail" Required="true" />
</InputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
我已将LocalAccountSignUpWithLogonEmail配置文件包含在LocalAccountSignUpWithLogonEmail技术配置文件中,作为ValidationTechnicalProfile。
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
...
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" ContinueOnError="false" />
<ValidationTechnicalProfile ReferenceId="APIFunctionsCheckUserEmail" ContinueOnError="false" ContinueOnSuccess="true" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
如果验证成功,一切都很好。如果不是,则显示自定义错误消息,但是已经创建了用户。 我试图将APIFunctionsCheckUserEmail作为第一个ValidationTechnicalProfile。
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="APIFunctionsCheckUserEmail" ContinueOnError="false" ContinueOnSuccess="true" />
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" ContinueOnError="false" />
</ValidationTechnicalProfiles>
现在出现错误消息时,将显示该消息,并且不会创建用户,但是成功后,而不是将声明发送到返回URL,将显示此错误-“已存在具有指定ID的用户。请选择其他用户。”
答案 0 :(得分:0)
创建一个从API返回的属性作为输出声明。
该值例如T / F。
然后在您的用户旅程中,对用户创建有一个前提(“ ClaimsEquals”)。如果该标志为假(即验证失败),请跳过编排步骤。