ADB2C自定义策略写入联合用户时用户配置文件UPN设置错误
问题根源
你当前的配置存在两处问题导致UPN未按预期设置:
- 多租户Azure AD登录技术配置文件
AADCommon-OpenIdConnect中使用了默认的CreateUserPrincipalName声明转换,这个转换会自动生成cpim_<随机GUID>@你的B2C租户域名格式的userPrincipalName声明,不会用到你从联邦身份源拿到的federated_upn值。 - 后续将用户写入B2C目录的技术配置文件
AAD-UserWriteUsingAlternativeSecurityId中,直接持久化了上述自动生成的userPrincipalName值,没有替换为你期望的federated_upn。
修复方案
可任选以下一种方式修改配置:
方案一:修改用户写入配置(操作最简单)
直接修改AAD-UserWriteUsingAlternativeSecurityId技术配置文件的持久化声明部分,调整userPrincipalName的取值来源:
<!-- 替换原有配置行 <PersistedClaim ClaimTypeReferenceId="userPrincipalName" /> 为以下内容 --> <PersistedClaim ClaimTypeReferenceId="federated_upn" PartnerClaimType="userPrincipalName" />
方案二:修改联邦登录配置
在AADCommon-OpenIdConnect技术配置文件中做两处调整:
- 移除输出声明转换列表中的
CreateUserPrincipalName规则 - 在输出声明中新增映射,直接将身份源返回的
upn赋值给userPrincipalName:
<OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="upn"/>
注意事项
如果federated_upn的后缀不属于你的B2C租户已验证的域名,直接写入userPrincipalName属性会触发报错。这种情况建议保留系统自动生成的userPrincipalName,将federated_upn存储到signInNames.emailAddress等其他属性即可,不会影响正常登录逻辑。
内容的提问来源于stack exchange,提问作者Sdiego
相关产品推荐
相关产品推荐

