Azure B2C 自定义策略 REST API CALL 不适用于 Microsoft 帐户

Posted

技术标签:

【中文标题】Azure B2C 自定义策略 REST API CALL 不适用于 Microsoft 帐户【英文标题】:Azure B2C custom policy REST API CALL not working for Microsoft account 【发布时间】:2020-05-08 17:50:43 【问题描述】:

我已使用此链接 [https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-microsoft-account-custom?tabs=applications][1] 将 Microsoft IDP 添加到自定义策略。 用户可以单击 Microsoft 帐户按钮并使用其 MSA 帐户进行注册\登录。 当用户使用 MS 帐户注册时,我们希望根据我们的数据库验证电子邮件。如果用户的电子邮件在我们的数据库中,让他们继续注册;否则我们想阻止他们注册并显示错误消息。这将阻止在我们的 Azure B2C AD 中创建用户。 我在

中使用了以下 TechnicalProfile
<ClaimsProvider>
  <Domain>live.com</Domain>
  <DisplayName>Microsoft Account</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="MSA-OIDC">
      <DisplayName>Microsoft Account</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <Metadata>
        <Item Key="ProviderName">https://login.live.com</Item>
        <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
        <Item Key="response_types">code</Item>
        <Item Key="response_mode">form_post</Item>
        <Item Key="scope">openid profile email</Item>
        <Item Key="HttpBinding">POST</Item>
        <Item Key="UsePolicyInRedirectUri">0</Item>
        <Item Key="client_id">12344</Item>
      </Metadata>

      <CryptographicKeys>
        <Key Id="client_secret" StorageReferenceId="B2C_1A_MSASecret" />
      </CryptographicKeys>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid" />
        <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
        <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
        <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
        <OutputClaim ClaimTypeReferenceId="email" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
        <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
        <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
        <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
      </OutputClaimsTransformations>
      <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile" />
      </ValidationTechnicalProfiles>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
      </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

我添加了 REST API 调用

<ValidationTechnicalProfiles>
 <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile" />
 </ValidationTechnicalProfiles>

但不工作。 有什么想法吗?

【问题讨论】:

您是否确保您的 API 按预期工作?你让它返回properly formated B2C error responses吗?你能分享你的完整政策吗? 有同样的问题。你解决了吗? 【参考方案1】:

检查您是否在自定义策略中提到了自我断言技术配置文件,该配置文件收集提交给 b2c 的用户详细信息,您可以使用 REST API 验证电子邮件。

您可以通过这些文章了解更多信息

    REST API Claims exchange integration with user journey to validate user input

    LocalAndSocialAccount Sign In and Sign Up policy wiki

还有一个与验证用户输入数据相关的类似discussion

【讨论】:

以上是关于Azure B2C 自定义策略 REST API CALL 不适用于 Microsoft 帐户的主要内容,如果未能解决你的问题,请参考以下文章

Azure AD B2C 自定义策略

Azure AD B2C 自定义登录策略显示 SignUpSignIn

Azure B2C 自定义策略注册 UI - 删除显示名称

Azure AD B2C:自定义策略 - 登录不起作用

Azure AD B2C - 自定义策略中的“电子邮件”声明

Azure AD B2C密码更改自定义策略,用户每次都需要登录