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

Azure APIM OAuth流程疑问:如何获取Refresh Token

获取Refresh Token的步骤说明

要在Azure APIM的OAuth流程中获取Refresh Token,核心取决于授权类型(Grant Type)的选择、身份提供商的配置以及请求参数的设置,具体操作如下:

1. 确认使用的Grant Type支持Refresh Token

并非所有OAuth授权类型都会返回Refresh Token:

  • 仅authorization_code(授权码模式)、password(密码模式,不推荐用于生产环境)这类带用户上下文的模式会返回Refresh Token;
  • client_credentials(客户端凭证模式)是服务间调用的无用户上下文模式,默认不返回Refresh Token,也无法获取。

2. 确保身份提供商允许颁发Refresh Token

以Azure AD(最常用的APIM OAuth身份提供商)为例:

  • 登录Azure门户,进入你的应用注册,在「认证」页面,确认「颁发刷新令牌」选项已启用(默认开启,若为旧应用需检查);
  • 必须在请求的scope参数中添加offline_access特殊范围——这是身份提供商返回Refresh Token的必要条件,它表示允许应用在用户离线时获取刷新令牌。

3. 修改Access Token请求以获取Refresh Token

在你原本获取Access Token的请求中,调整参数:

  • 将scope参数修改为原业务范围 + offline_access,例如:
    scope=api://your-api-id/access_as_user offline_access
    
  • 保持其他参数(client_id、client_secret、grant_type、access_token_url等)不变,重新发送请求。

成功响应的JSON中,除了access_token,会新增refresh_token字段,这就是你需要的刷新令牌。

4. 使用Refresh Token获取新的Access Token

当原Access Token过期时,可通过Refresh Token获取新令牌:

  • 调用同一个access_token_url,设置grant_type=refresh_token;
  • 携带参数:client_id、client_secret、refresh_token(之前获取的刷新令牌),可选指定scope(若需缩小权限范围);
  • 请求示例(form-data格式):
    grant_type: refresh_token
    client_id: your-client-id
    client_secret: your-client-secret
    refresh_token: your-refresh-token
    

注意事项

  • 确保APIM的OAuth策略没有过滤或修改scope参数,要让offline_access正确传递到后端身份提供商;
  • Refresh Token有过期时间,部分身份提供商(如Azure AD)会在使用旧Refresh Token时返回新的Refresh Token,建议替换存储的旧令牌以保持有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:20:34