【问题标题】:Are refresh token necessary?是否需要刷新令牌?
【发布时间】:2022-01-21 22:59:07
【问题描述】:

我最近一直在搜索有关刷新令牌和使用旋转的访问令牌的信息。

为什么不只使用一个令牌而不是访问令牌和刷新令牌?在该令牌有效负载(声明)中包含验证日期,并使验证期非常短(就像访问令牌一样)和到期日期非常高(就像刷新令牌一样)。

如果验证日期超过服务器上的日期但未过期,则服务器会发出一个新令牌并使旧令牌无效(通过任何方式,如令牌黑名单等,就像 AT 过期并使用新令牌发出时一样刷新令牌),如果令牌过期,则服务器简单地拒绝请求并请求授权(就像刷新令牌过期时一样)。

如果这种方法有效,那么为什么我们要使用 2 个令牌,这会使开发过程更加困难?

【问题讨论】:

  • 您假设每个提供访问令牌的进程都应该有权自行刷新它。情况可能并非如此。
  • 为什么不呢?我认为这样会更安全

标签: authentication oauth jwt access-token refresh-token


【解决方案1】:

我觉得你忘记了什么。

刷新令牌存储在服务器上。访问令牌不是。访问令牌是自包含的。这就是为什么它们被称为不记名令牌的原因。令牌的持有者被授予访问权限。

这意味着如果访问令牌被恶意方窃取,只要它没有过期,就可以使用它们。访问令牌被认为是安全的,因为它们的寿命有限。

为了使用刷新令牌来请求新的访问令牌。您需要拥有用于创建它的客户端 ID、客户端密钥。您还需要能够侦听刷新令牌响应的有效重定向 uri 之一。

【讨论】:

  • 一个令牌也是自包含的并且也是短暂的(由于验证日期)以及当您想要刷新它时(就像您所说的将 RT 提供给特定 URI 以生成 AT ) 你只需要将令牌发送到特定的 URI 以生成一个新的,你可能会说如果令牌被盗,那么恶意用户可以无限使用它,除非服务器使其无效,RT 和相同的机制可用于保护,如旧令牌黑名单。我仍然看不到使用 2 个令牌的好处。
  • AA malisons 用户不能在没有客户端 ID 的情况下使用刷新令牌、客户端秘密和访问同意将返回到的项目中的有效重定向 uri。
  • 根据此博客中的 auth0 auth0.com/blog/… :“所有持有刷新令牌的人都有权随时获取新的访问令牌。“他们”可能是合法用户或攻击者。”当你说“不能使用没有客户端 ID 的刷新令牌,客户端秘密......”时,我不明白你的意思,只要他们有一个有效的刷新令牌,他们就可以将其发送到 RT URI,如'/api/refreshToken'并获得访问令牌是不是正确的?
  • 要获取新的刷新令牌,您必须传递客户端 ID、客户端机密,并且响应会在有效的重定向 uri 端点返回给应用程序。因此,黑客将不得不窃取您的刷新令牌、客户端 ID、客户端密码,并且仍然可以访问位于重定向 uri 端点位置的服务器。如果您想了解流程,请观看此视频youtube.com/watch?v=hBC_tVJIx5w
猜你喜欢
  • 2019-12-29
  • 2019-09-19
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2017-01-18
  • 2022-01-03
  • 2018-09-19
相关资源
最近更新 更多