我们有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会显示错误消息“您已注册,请按向后按钮并登录”。并且不会离开注册页面。
请帮助。
谢谢
答案 0 :(得分:0)
该错误表明您的策略正在创建目录中已经存在的userPrincipalName
。通常,在入门包中,userPrincipalName
不会在配置文件AAD-UserWriteUsingLogonEmail
中发送。而是将signInNames.emailAddress
或signInNames.userName
发送到目录。 (logonIdentifier.userName
和logonIdentifier.emailAddress
是错误消息中的错别字,应尽快解决。)
如果您打算将userPrincipalName
写到目录中,那么最好的选择是collect Application Insights logs,然后查看发送到目录中的内容以供用户创建。然后,您可以验证这些值是否适合正在注册的用户帐户。
如果需要,可以使用这些值将请求直接发送到Azure AD Graph API,并查看行为是否符合预期。