跳到主要内容

6. 刷新访问令牌 (Refreshing an Access Token)

如果授权服务器向客户端发放了刷新令牌, 客户端通过向令牌端点发起刷新请求来获取新的访问令牌. 该请求在 HTTP 请求实体主体中使用附录 B 所述的 "application/x-www-form-urlencoded" 格式和 UTF-8 字符编码加入以下参数:

grant_type
必需 (REQUIRED). 值必须 (MUST) 设置为 "refresh_token".

refresh_token
必需 (REQUIRED). 发放给客户端的刷新令牌.

scope
可选 (OPTIONAL). 访问请求的作用域, 如第 3.3 节所述. 请求的作用域不得 (MUST NOT) 包含资源所有者最初未授予的任何作用域; 如果省略, 则视为等同于资源所有者最初授予的作用域.

由于刷新令牌通常是长期有效的凭据, 用于请求额外的访问令牌, 因此刷新令牌会绑定到其发放目标客户端. 如果客户端类型为 confidential, 或者客户端已被发放客户端凭据 (或被分配其他认证要求), 客户端必须 (MUST) 按第 3.2.1 节所述向授权服务器进行认证.

例如, 客户端使用传输层安全性发起以下 HTTP 请求 (额外换行仅为显示目的):

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA

授权服务器必须 (MUST):

  • 要求 confidential 客户端或任何已被发放客户端凭据的客户端 (或具有其他认证要求的客户端) 进行客户端认证;
  • 如果包含客户端认证, 则认证该客户端, 并确保刷新令牌是发放给该已认证客户端的;
  • 验证刷新令牌.

如果请求有效且已获授权, 授权服务器按第 5.1 节所述发放访问令牌. 如果请求未通过验证或无效, 授权服务器按第 5.2 节所述返回错误响应.

授权服务器可以 (MAY) 发放新的刷新令牌; 在这种情况下, 客户端必须 (MUST) 丢弃旧刷新令牌并以新刷新令牌替换. 授权服务器可以 (MAY) 在向客户端发放新刷新令牌后撤销旧刷新令牌. 如果发放了新的刷新令牌, 则其作用域必须 (MUST) 与客户端在请求中包含的刷新令牌的作用域相同.