Postman调用Azure AD Auth code flow未返回ID令牌与刷新令牌问题
Azure AD 令牌请求问题修复方案
你无法同步获取ID token、Refresh token是流程和请求参数存在错误,按以下步骤调整即可:
1. 修正请求方法与参数格式
- token端点仅支持
POST请求,不支持GET方法,所有参数需放在application/x-www-form-urlencoded格式的请求体中,不要拼接在URL后 - 所有参数的取值不要包裹单引号,直接填写实际值即可,不要写成
client_id='xxx'的格式
2. 补全scope必填值
当前配置的scope=https://graph.microsoft.com/.default仅会返回Microsoft Graph对应的access token,要获取另外两类令牌必须追加两个强制scope:
openid:OIDC协议要求的必填项,声明服务端需要返回ID tokenoffline_access:声明服务端需要返回Refresh token的必填项
调整后完整scope值为:openid offline_access https://graph.microsoft.com/.default
3. 修正Authorization Code Flow的执行逻辑
你当前的token请求缺少核心的code参数,没有走完授权码流程的完整步骤,授权码流需要分两步执行:
- 获取授权码:通过浏览器访问授权端点,完成账号登录与授权
授权完成后页面会跳转到jwt.ms,从跳转地址的GET https://login.microsoftonline.com/{替换为你的租户ID}/oauth2/v2.0/authorize? client_id={替换为你的客户端ID} &response_type=code &redirect_uri=https://jwt.ms &response_mode=query &scope=openid offline_access https://graph.microsoft.com/.default &state=test123code=字段中提取到的字符串就是授权码,该码有效期仅10分钟左右,需要及时使用。 - 换取令牌:携带上一步拿到的授权码调用token端点,完整请求示例如下:
POST https://login.microsoftonline.com/{替换为你的租户ID}/oauth2/v2.0/token Content-Type: application/x-www-form-urlencoded client_id={替换为你的客户端ID} &client_secret={替换为你的客户端密钥} &grant_type=authorization_code &code={替换为上一步拿到的授权码} &redirect_uri=https://jwt.ms &scope=openid offline_access https://graph.microsoft.com/.default
配置校验说明
- 你已经在Azure门户开启的ID token签发配置、已配置的API权限满足要求,不需要额外调整门户端的令牌签发开关
- 确保已为配置的Microsoft Graph权限完成管理员同意,否则会出现权限不足报错
- 授权请求和换token请求里的
redirect_uri必须完全一致,且和Azure门户中配置的重定向URI完全匹配,否则会报错。
内容的提问来源于stack exchange,提问作者Saimk_556
相关产品推荐
相关产品推荐

