首页 文章

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

提问于
浏览
1

The Scenario

我最近构建了一个 ASP.NET WEB API ,并使用 OAuth Bearer Access Tokens保护其资源 .

我使用了 Client_Credentials Flow,因为它将被客户端访问而不是用户访问 .

这是事情,当客户端成功提供 client_idclient_secret 时,他们会收到如下响应: -

{
  "access_token": "<Access Token>",
  "token_type": "bearer",
  "expires_in": 1199,
  "refresh_token": "<Refresh Token>"
}

Refresh Tokens.

我不太了解刷新令牌,我立即假设客户端能够为OAuth服务器提供 refresh_token 来检索新的 Access_Token .

这有点'正确' .

为了使用 refresh_token ,客户端仍然需要将 client_idclient_secretrefresh_token 一起传递以获取新的访问令牌 .

grant_type 也需要更改为 refresh_token .

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

2 回答

  • 1

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

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

    使用client_credentials授予类型发布:

    • 第一步:客户端身份验证(客户端密钥,断言......)

    • 发出OK访问令牌

    使用refresh_token授权类型发布:

    • 第一步:客户端身份验证(客户端密钥,断言......)

    • 第二步:刷新令牌验证(到期时间,关联客户端......)

    • 发出OK访问令牌

  • 0

    好处是他请求令牌通常具有比访问令牌更长的寿命 .

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

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

相关问题