【问题标题】:Oauth2 assertion grant: Why no refresh token?Oauth2 断言授权:为什么没有刷新令牌?
【发布时间】:2017-07-13 00:35:37
【问题描述】:

我正在研究 Oauth2,以允许开发人员授权其应用的用户使用我的服务。我发现一些消息来源说,当用户发送断言(在我的情况下为 JWT)时,我的授权服务器应该返回访问令牌,但它不应该返回刷新令牌。我想知道返回刷新令牌有什么害处。开发人员可以通过调用使从特定 JWT 的 id 授予的任何访问无效的 Api 来使刷新/访问令牌无效。

【问题讨论】:

  • 使用RFC7521,刷新令牌是无用的,正如the section 4.1 中提到的:客户端可以通过使用相同的断言请求一个新的访问令牌来刷新过期的访问令牌,如果它仍然有效,或使用新的断言。
  • 我不同意它没用。我在想一个客户在一段时间不活动后醒来。该客户端必须向其应用服务器请求 JWT,然后用该 JWT 换取访问令牌。那是 2 次往返与 1 次往返。也许这没什么大不了的,但这里有一个不可忽略的性能影响。
  • 这是没用的,因为客户端可以通过发送相同的断言(如果未过期)或创建一个新断言来刷新它。因为它通常是在客户端生成的,所以这是一个 1 轮。
  • 哦,是的,我理所当然地认为该断言是短暂的。它包含可识别信息,因此客户不应存储它。我应该早点提到这一点。

标签: oauth-2.0 jwt


【解决方案1】:

该建议不正确。刷新令牌是可选的,可以在客户端提交授权授权后由授权服务器自行决定发布。见Oauth2 specification

1.5 刷新令牌

刷新令牌是用于获取访问令牌的凭据。刷新 令牌由授权服务器颁发给客户端,并且是 用于在当前访问令牌时获取新的访问令牌 失效或过期,或获取额外的访问令牌 具有相同或更窄的范围(访问令牌可能具有更短的 生命周期和少于资源授权的权限 所有者)。 颁发刷新令牌是可选的,由 授权服务器。如果授权服务器发出刷新 令牌,在发布访问令牌时包含它(即步骤(D)中的 图 1)。

【讨论】:

  • 感谢您指出这一点。我重新检查了我读到的资料,这让我对此产生了疑问。事实证明,这更像是一种观察而不是建议。它说您通常不会在断言授权流程中提供刷新令牌。我想我只是想知道我是否在这里错过了一个劣势。 tools.ietf.org/html/rfc7521
  • 可能是在讨论 Oauth2.0 中不同的授权授予流程来获取访问令牌。 “授权码授予”提供了一个授权码,在第二步中您可以获得访问/刷新令牌。 “隐式授权”流程一次性提供访问令牌,不允许使用刷新令牌
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 2018-06-23
  • 2020-03-06
  • 2016-12-10
  • 2021-07-01
  • 2013-08-30
  • 2013-11-19
  • 2018-09-19
相关资源
最近更新 更多