依赖方策略中的Azure AD B2C扩展属性

时间:2018-08-07 21:14:17

标签: azure-ad-b2c

我们有4个应用程序使用Azure AD B2C自定义登录/注册策略。每个应用程序都有自己的自定义属性,但是使用相同的IDP和Azure AD配置。当前,每个应用程序都维护自己的一组Base,Extension和RP文件,并且都可以正常工作。

我们正在实现可在所有应用程序中使用的通用Base和Extension文件,并实现包含扩展属性的应用程序特定的RelyingParty文件。

将所有扩展属性声明和定义移至SignUpSignIn策略时,在上载策略时遇到此错误

Unable to upload policy. Reason : Validation failed: 1 validation error(s) found in policy "B2C_1A_XXXXXX" of tenant "XXXXXX.onmicrosoft.com".Persisted claims for technical profile "AAD-UserWriteUsingLogonEmail" in policy "B2C_1A_XXXXX" of tenant "XXXXXX.onmicrosoft.com" must have one of the following claims: logonIdentifier.userName, logonIdentifier.emailAddress, userPrincipalName.

当我添加

    <"PersistedClaim ClaimTypeReferenceId="userPrincipalName">

    "TechnicalProfile Id="AAD-UserWriteUsingLogonEmail", 

我能够上载该策略,并且在单击“注册”后立即在SignUp上注册,将在AD中创建用户,但是UI会显示错误消息“您已注册,请按向后按钮并登录”。并且不会离开注册页面。

请帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

该错误表明您的策略正在创建目录中已经存在的userPrincipalName。通常,在入门包中,userPrincipalName不会在配置文件AAD-UserWriteUsingLogonEmail中发送。而是将signInNames.emailAddresssignInNames.userName发送到目录。 (logonIdentifier.userNamelogonIdentifier.emailAddress是错误消息中的错别字,应尽快解决。)

如果您打算将userPrincipalName写到目录中,那么最好的选择是collect Application Insights logs,然后查看发送到目录中的内容以供用户创建。然后,您可以验证这些值是否适合正在注册的用户帐户。

如果需要,可以使用这些值将请求直接发送到Azure AD Graph API,并查看行为是否符合预期。