OAuth客户端凭据流 - 刷新令牌

时间:2017-04-11 08:28:26

标签: c# oauth oauth-2.0 asp.net-web-api2

情景

我最近构建了一个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_idclient_secretrefresh_token一起传递,以获取新的访问令牌。

grant_type也需要更改为refresh_token

使用此流程的refresh_token的好处在哪里?如果我每次都需要传递client_id和client_secret,那么你肯定会完全避免使用刷新令牌吗?

3 个答案:

答案 0 :(得分:2)

使用客户端凭据授予发布刷新令牌没有任何好处。 这就是RFC6749 section 4.4.3表示A refresh token SHOULD NOT be included的原因。因此,它的发布由授权服务器决定。

从我的角度来看,授权服务器永远不应该发布带​​有客户端凭据授权的刷新令牌,因为访问令牌颁发过程将需要额外的不必要的步骤:

使用client_credentials授予类型发布:

  • 第一步:客户端身份验证(客户端密钥,断言......)
  • 发出OK访问令牌

使用refresh_token授权类型发布:

  • 第一步:客户端身份验证(客户端密钥,断言......)
  • 第二步:刷新令牌验证(到期时间,关联客户端......)
  • 发出OK访问令牌

答案 1 :(得分:0)

-3

好处是他请求令牌的生命周期通常比访问令牌长得多。

访问令牌用于与资源服务器通信。与授权服务器通信时使用请求令牌。

您可以将其理解为您可能已获得授权,但需要不时重新评估您授权的确切范围。所以请求令牌有它的用途。

答案 2 :(得分:-1)

好处是他请求令牌的生命周期通常比访问令牌长得多。

访问令牌用于与资源服务器通信。 与授权服务器通信时使用请求令牌。

您可以将此视为您可能获得授权,但您的授权的确切延长需要不时重新评估。因此请求令牌可以使用它。