情景
我最近构建了一个ASP.NET WEB API
,并使用OAuth
承载访问令牌保护了其资源。
我已经使用了Client_Credentials
流,因为它将被客户端访问而不是用户访问。
事情就是这样,当客户成功提供client_id
时,client_secret
他们会收到如下响应: -
{
"access_token": "<Access Token>",
"token_type": "bearer",
"expires_in": 1199,
"refresh_token": "<Refresh Token>"
}
刷新令牌。
对刷新令牌了解不多,我立即假设客户端能够通过refresh_token
提供OAuth服务器来检索新的Access_Token
。
这是&#39;正确。
要使用refresh_token
,客户端仍需要将client_id
和client_secret
与refresh_token
一起传递,以获取新的访问令牌。
grant_type
也需要更改为refresh_token
。
使用此流程的refresh_token的好处在哪里?如果我每次都需要传递client_id和client_secret,那么你肯定会完全避免使用刷新令牌吗?
答案 0 :(得分:2)
使用客户端凭据授予发布刷新令牌没有任何好处。
这就是RFC6749 section 4.4.3表示A refresh token SHOULD NOT be included
的原因。因此,它的发布由授权服务器决定。
从我的角度来看,授权服务器永远不应该发布带有客户端凭据授权的刷新令牌,因为访问令牌颁发过程将需要额外的不必要的步骤:
使用client_credentials授予类型发布:
使用refresh_token授权类型发布:
答案 1 :(得分:0)
-3
好处是他请求令牌的生命周期通常比访问令牌长得多。
访问令牌用于与资源服务器通信。与授权服务器通信时使用请求令牌。
您可以将其理解为您可能已获得授权,但需要不时重新评估您授权的确切范围。所以请求令牌有它的用途。
答案 2 :(得分:-1)
好处是他请求令牌的生命周期通常比访问令牌长得多。
访问令牌用于与资源服务器通信。 与授权服务器通信时使用请求令牌。
您可以将此视为您可能获得授权,但您的授权的确切延长需要不时重新评估。因此请求令牌可以使用它。