在身份验证失败时继续 Azure B2C 用户之旅

Continue Azure B2C user journey on authentication failure

我正在使用 Azure B2C 身份体验框架创建自定义用户旅程。我的问题是我想在身份验证失败时继续用户旅程。但是,似乎将身份验证失败解释为异常,从而导致旅程终止。

此旅程旨在适应从旧身份提供商到 B2C 的即时帐户迁移过程。

我要实现的流程是:

  1. 尝试使用 B2C 登录表单进行身份验证
  2. 身份验证失败时,查询 REST API 以确定用户的电子邮件地址是否存在于遗留系统中
  3. 如果电子邮件地址存在,则向用户提供 B2C 注册表单

这种情况有可能吗?

我不确定是否有办法在完全身份验证失败时继续,但如果仅检查用户帐户是否存在就足够了,您可能不需要这样做。

您可以在不尝试验证的情况下检查输入的用户名是否存在于B2C中。如果目录中不存在用户,则将 RaiseErrorIfClaimsPrincipalDoesNotExist 元数据设置为 false 允许 B2C 策略继续。然后您可以使用输入的用户名并继续使用其他技术配置文件。

我使用以下代码片段作为验证技术配置文件,如果找到对象 ID,我 运行 login-NonInteractive 配置文件,如果没有,我 运行 自定义身份验证配置文件

   <TechnicalProfile Id="AAD-UserReadUsingEmailAddress-NoError">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames.emailAddress" />
  </InputClaims>
  <OutputClaims>
    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
    <OutputClaim ClaimTypeReferenceId="extension_isMigrated" DefaultValue="False" />
    <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />
    <!-- Optional claims -->
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="accountEnabled" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
    <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>