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 自定义登录策略显示 SignUpSignIn