如何使用自定义验证在Azure AD B2C sigup流中停止用户创建

时间:2019-08-26 14:05:27

标签: azure-ad-b2c

我想根据Azure AD B2C自定义注册流程中的自定义逻辑来验证用户电子邮件。如果验证失败,则不应创建用户,并且应显示一条错误消息以提供新的电子邮件。

我遵循以下示例:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-rest-api-validation-custom

这是我的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的用户。请选择其他用户。”

1 个答案:

答案 0 :(得分:0)

创建一个从API返回的属性作为输出声明。

该值例如T / F。

然后在您的用户旅程中,对用户创建有一个前提(“ ClaimsEquals”)。如果该标志为假(即验证失败),请跳过编排步骤。