Azure OpenID profile scope未返回头像Claim?JWT id_token问题排查
我来帮你排查这个头像Claim缺失的问题~
微软的profile scope确实包含访问用户头像的权限,但默认情况下,头像对应的picture Claim并不会自动出现在id_token里,它属于可选Claim,需要你额外配置或者在请求中明确指定,具体可以按下面两种方式解决:
方法1:在Azure应用注册里配置可选Claim
- 登录Azure门户,找到你的应用注册
- 进入「令牌配置」页面
- 点击「添加可选Claim」,选择「ID令牌」类型,然后勾选
picture这个Claim,保存你的配置
方法2:在授权请求中添加claims参数
你可以直接在请求链接里附加claims参数,明确要求返回picture Claim,修改后的请求示例如下:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize? client_id=myclientid &response_type=id_token &redirect_uri=myredirecturi &response_mode=form_post &scope=openid%20email%20profile &nonce=mynonce &claims={"id_token":{"picture": {"essential": true}}}
这个参数会告知授权服务器你需要这个Claim,确保它被包含在返回的id_token中。
额外提醒
- 如果用户的微软账户本身没有设置自定义头像,
pictureClaim可能不会返回,或者返回微软默认的占位图链接 - 确认你的应用注册已经正确配置了相关权限(不过从你描述的授权界面已显示头像权限来看,这一步应该没问题)
内容的提问来源于stack exchange,提问作者Nth.gol
相关产品推荐
相关产品推荐

