ASPNETCORE Azure AD B2C SPA登录弹窗显示错误邮箱的问题求助
解决Azure AD B2C登录弹窗显示@GUID而非正确UPN的问题
检查用户流/自定义策略的属性映射
- 如果使用内置用户流:
- 进入Azure AD B2C门户,找到对应登录/注册用户流
- 进入「用户属性」页面,确认已勾选「用户主体名称(UPN)」作为需收集或返回的属性
- 进入「应用程序声明」页面,确保「用户主体名称」已添加为要返回给应用的声明
- 如果使用自定义策略:
- 在信任框架扩展文件中,确认
<ClaimsSchema>里已定义upn声明:<ClaimType Id="upn"> <DisplayName>User Principal Name</DisplayName> <DataType>string</DataType> <UserHelpText>Your user principal name (UPN)</UserHelpText> </ClaimType> - 检查
<OutputClaims>配置,确保从身份提供者返回的UPN属性正确映射到B2C的upn声明,示例:<OutputClaim ClaimTypeReferenceId="upn" PartnerClaimType="upn" />
- 在信任框架扩展文件中,确认
验证用户对象的UPN属性
- 进入Azure AD B2C的「用户」界面,定位出现问题的用户,查看其「用户主体名称」字段是否为合法UPN格式(如
user@domain.com) - 若用户UPN未正确设置,可手动编辑用户信息修改UPN,或在注册流中强制关联邮箱作为UPN
调整登录页面的显示逻辑
- 若使用自定义登录UI:
- 检查UI模板中渲染用户信息的代码,确认调用的是
upn声明属性,而非自动生成的标识属性 - 确保从B2C返回的令牌中正确提取
upn值并渲染
- 检查UI模板中渲染用户信息的代码,确认调用的是
检查外部身份提供者的属性返回
- 若依赖外部身份提供者(如Azure AD):
- 确认身份提供者的应用注册中,已配置返回
upn属性(如添加profile或upn范围) - 验证身份提供者返回的令牌中包含正确的
upn值
- 确认身份提供者的应用注册中,已配置返回
内容的提问来源于stack exchange,提问作者Babu James
相关产品推荐
相关产品推荐

