2

我遇到了一些问题来整理关于 oAuth 2.0 的想法。特别是phpleague/oauth2-server实现。

我设法设置一个端点来使用密码授权类型创建访问令牌。也就是说,当有人执行 a 时POST /auth,他们会得到以下答案:

{
    "access_token": "hleVw03Fx4hVsaCqEmFqcXeks0hsDTkNSxMN17NR",
    "token_type": "Bearer",
    "expires_in": 3600,
    "refresh_token": "GD8kT7JfGULhUKSTSBsF7AO6NaIXrqPS0dlyQjTm"
}

我现在想做的是access_token在过期时生成一个新令牌。我知道我应该使用refresh_token来请求一个新的令牌。但是,我没有找到任何文档开始。

4

1 回答 1

2

您可以使用 Refresh Grant 类型来获取新的访问令牌。这是规范中描述的标准化流程:https ://www.rfc-editor.org/rfc/rfc6749#section-6 。对令牌端点的示例请求(取自规范)如下所示:

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

在这种情况下,客户端使用基本身份验证对令牌端点使用其client_id和进行身份验证client_secret。在命令行 cURL 中,它看起来像:

curl -u "${CLIENT_ID}:${CLIENT_SECRET}" -d "grant_type=refresh_token&refresh_token=${REFRESH_TOKEN}"
于 2015-04-16T19:56:22.387 回答