【问题标题】:Using both access and refresh tokens for refreshing them使用访问令牌和刷新令牌来刷新它们
【发布时间】:2020-06-12 22:17:59
【问题描述】:

正在研究如何使用 JWT,但发现对我来说并不明显: 为什么刷新访问令牌不使用访问令牌和刷新令牌,而只使用刷新令牌?

在这种情况下,我们将能够:

  1. 验证访问令牌签名,即使它已过期。
  2. 从负载中获取访问令牌信息,这可能有助于在数据库中查找刷新令牌。

【问题讨论】:

    标签: jwt access-token refresh-token


    【解决方案1】:

    您的问题有点不清楚,并且假设了一些可能不正确的事情。访问令牌和刷新令牌都必须是 JWT,并且 JWT 不是特定于 OAuth2(它定义了访问令牌和刷新令牌,但没有说明它们应该如何实现)。

    访问令牌和刷新令牌的受众也不同 - 访问令牌被发送到(可能是单独的)资源服务器(如果它们是自包含的,发布授权服务器甚至可能没有保留副本)。刷新令牌被发送到授权服务器。

    在数据库中定位任何一种类型的令牌(假设它们不是像 JWT 那样自包含的令牌)永远不会成为问题,因为它们应该是唯一的令牌,它们是数据库表的理想主键。因此,没有理由将过期的访问令牌作为刷新请求的一部分发送。

    顺便说一句,欢迎来到 Stack Overflow :)。

    【讨论】:

    • 除了这个不错的答案之外,要刷新的访问令牌应该是无效的(已过期),因此发送它是没有意义的。
    • 感谢您的回答!我想,我需要提供更多信息。就我而言,我没有授权服务器,只有一台服务器。一个用户可能有不同的刷新和访问令牌,因为一个用户可能从不同的地方连接到服务器(在我的情况下是不同的移动设备)。当应用程序发现需要刷新访问令牌时,它可能会发送刷新和访问令牌或仅发送刷新令牌,但在这种情况下服务器需要有关设备的信息。访问令牌在payload中有这样的信息,所以我认为发送它们会更好。
    猜你喜欢
    • 2019-06-29
    • 2020-07-12
    • 1970-01-01
    • 2021-11-16
    • 2022-10-31
    • 1970-01-01
    • 2018-08-01
    • 2017-01-18
    • 2020-01-09
    相关资源
    最近更新 更多