AzureAD v2令牌无法返回family_name和given_name问题求助
解决Azure AD OIDC令牌无法返回family_name和given_name声明的问题
先确认用户数据完整性:Azure AD只会返回用户个人资料中已填写的字段。先检查Azure AD用户的个人信息页面,确认
姓氏(family_name)和名字(given_name)是否已经正确录入——如果用户资料里这两个字段为空,无论怎么配置都不会返回。修正optionalClaims配置格式:确保应用注册manifest中的
optionalClaims格式正确,以下是标准配置示例:
"optionalClaims": { "idToken": [ { "name": "family_name", "essential": true }, { "name": "given_name", "essential": true } ], "accessToken": [ { "name": "family_name", "essential": true }, { "name": "given_name", "essential": true } ] }
配置完成后保存manifest,等待5-10分钟让配置生效。
纠正scope请求的误区:你不需要将
given_name或family_name单独作为scope请求——这些是声明字段,不是scope。保持原有的scope列表openid profile email offline_access即可,profile范围已经包含了用户资料类声明(包括family_name和given_name)。之前的错误提示就是因为把声明字段当成了scope来请求导致的。确认使用v2.0端点:确保OIDC流程调用的是Azure AD v2.0授权和令牌端点:
- 授权端点:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize - 令牌端点:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
v1.0端点的声明返回逻辑与v2.0不同,需严格匹配文档要求的端点版本。
- 授权端点:
验证权限与令牌解析:如果是多租户应用,确认
profile权限已经获得管理员同意;请求令牌后,用jwt.ms解析令牌内容,检查声明是否存在。
内容的提问来源于stack exchange,提问作者stuzor
相关产品推荐
相关产品推荐

