配置Azure AD为OIDC提供商后,如何查找ID Token/Access Token?
解决Azure AD OIDC流程中找不到ID Token/Access Token的问题
你当前拿到的code是授权码,并非最终的ID Token或Access Token。因为你使用的是OIDC的授权码流程(Authorization Code Flow),这个流程的设计就是先返回授权码,再通过后端请求交换得到token,避免token直接暴露在前端环境中。
如何获取ID Token和Access Token
需要用拿到的授权码,向Azure AD的Token端点发送POST请求来交换:
- 请求地址:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token - 请求格式:
application/x-www-form-urlencoded - 必须携带的参数:
grant_type=authorization_codeclient_id={你的应用Client ID}client_secret={你的应用客户端密钥,需在Azure AD应用注册中生成}code={步骤4中回调地址返回的授权码}redirect_uri={与授权请求中完全一致的回调地址}scope=openid email profile(与授权请求中的scope保持一致)
请求成功后,你会收到JSON格式的响应,其中包含:
id_token:JWT格式的身份令牌,可解码查看用户声明access_token:访问令牌,用于调用受保护的资源refresh_token:刷新令牌,用于在access_token过期后获取新的令牌
额外检查点
- 如果是第三方现成应用,确认该应用的OIDC配置中已正确填写客户端密钥,且开启了授权码流程的token交换逻辑
- 确保授权码仅使用一次,重复使用会被Azure AD拒绝
内容的提问来源于stack exchange,提问作者JakeUT
相关产品推荐
相关产品推荐

