情景
我最近构建了一个 API,并使用不OAuth记名访问令牌保护了它的资源。
我已经使用了Client_CredentialsFlow,因为它将由客户端而不是用户访问。
事情是这样的,当客户成功提供了client_id并且client_secret他们收到如下响应时: -
{
"access_token": "<Access Token>",
"token_type": "bearer",
"expires_in": 1199,
"refresh_token": "<Refresh Token>"
}
Run Code Online (Sandbox Code Playgroud)
刷新令牌。
不太了解刷新令牌,我立即认为客户端将能够提供 OAuth 服务器refresh_token来检索新的Access_Token.
这是“有点”正确的。
为了使用该refresh_token客户端仍然需要通过client_id并client_secret随着refresh_token获得新的访问令牌。
该grant_type也需要改变refresh_token。
使用此流程的 refresh_token 的好处在哪里?如果我每次都需要传递 client_id 和 client_secret,您肯定会完全避免使用刷新令牌吗?
Flo*_*lli 21
使用客户端凭据授权发布刷新令牌没有任何好处。这就是RFC6749 第 4.4.3 节指出的原因A refresh token SHOULD NOT be included。因此,它的发布由授权服务器决定。
从我的角度来看,授权服务器永远不应该使用客户端凭据授予刷新令牌,因为访问令牌颁发过程将采取额外且不必要的步骤:
使用 client_credentials 授权类型颁发:
使用 refresh_token 授权类型发行:
| 归档时间: |
|
| 查看次数: |
7153 次 |
| 最近记录: |