You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD IdP企业连接:令牌刷新及offline access scope未显示问题咨询

解决Microsoft GraphQL令牌刷新与offline_access范围问题

一、先搞定offline_access范围不显示的问题

要拿到可刷新的令牌,offline_access是核心前提,先排查这几个关键点:

  • 登录Azure门户的应用注册页面,确认API权限中已添加offline_access(属于Microsoft Graph的Delegated权限),如果是企业级应用,必须点击「授予管理员同意」才算权限生效。
  • 发起OAuth2授权请求时,scope参数里必须明确包含offline_access,示例格式:scope=User.Read offline_access https://graph.microsoft.com/.default——如果请求里没加这个范围,IdP不会返回refresh token。
  • 检查token响应内容:如果响应里没有refresh_token字段,说明offline_access范围未被正确授权,回头重新核对前面两步。

二、用Refresh Token刷新Access Token

拿到有效的refresh token后,直接调用Azure AD的token端点即可刷新:

  1. 发送POST请求到Azure AD的token端点(示例:https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token)
  2. 请求参数采用x-www-form-urlencoded格式:
grant_type=refresh_token
client_id=你的应用ID
client_secret=应用密钥(若使用证书认证则传client_assertion)
refresh_token=之前获取的有效refresh token
scope=User.Read offline_access https://graph.microsoft.com/.default
  1. 响应会返回新的access_token、可能更新的refresh_token以及过期时间,直接替换旧令牌即可继续使用Microsoft GraphQL服务。

三、替代方案:应用内直接触发MS登录流程

如果刷新令牌的方式无法实现,新增直接登录流程是可行的:

  • 采用OAuth2授权码流,在应用内弹出Microsoft登录弹窗或跳转至登录页面,让用户重新授权获取新的access token和refresh token。
  • 可优化体验:在令牌即将过期前(比如提前5分钟),使用prompt=none参数发起静默登录——如果用户当前在Microsoft端有有效会话,无需手动输入密码即可自动刷新令牌,减少用户感知。
  • 注意安全:refresh token需存储在安全位置,移动端推荐用Keychain,Web端用HttpOnly Cookie,禁止明文存储。

内容的提问来源于stack exchange,提问作者Moriarty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:24:41