如何使现有的 JWT 令牌过期?



在我的新公司中,这是我们的OAuth流程

  1. 用户输入用户名和密码。
  2. 密码服务对其进行身份验证并调用中央Oauth服务(内部开发)。
  3. Oauth 服务生成一些 access_token(AT) 并将其存储在具有到期时间的数据库中。
  4. 下次用户来时,AT 在 cookie 中传输,应用程序使用来自数据库的 Oauth 服务对其进行验证并更新到期时间 以在数据库中增加它。

现在我计划将其移动到基于 JWT 的身份验证。根据我从不同教程中的理解,JWT令牌本身包含签名 可以在没有任何存储(缓存或数据库)的情况下进行验证。我的问题是关于到期时间增量的处理。因为我需要增加会话时间 每次用户访问站点时,都意味着我需要生成新的 JWT 令牌并使前一个令牌过期。 生成新的很容易,不知道如何 可以使现有的 JWT 令牌过期吗?

我可以将地图保存在包含user_id和最新 JWT 令牌的缓存中。其余令牌将被视为无效。但是这种基于缓存的方法失败了 JWT令牌的目的,其中不应有任何存储要求。

  1. JWT 的优势在于其内容不能被最终用户或任何攻击者篡改,因为如果他们这样做,验证将失败。因此,JWT 的目标不是避免存储。

  2. 在今天的日期,人们几乎不会丢弃任何数据。智威汤逊也不例外。因此,存储 JWT 以及所有相关的详细信息和时间戳具有其价值。此外,还有一些性能考虑因素。这个答案将提供有关此行的一些详细信息:https://stackoverflow.com/a/55404253/1235935

  3. 使用
  4. 称为刷新令牌(可以是 JWT)的第二个令牌处理增加到期时间,该令牌的有效期通常比访问令牌长得多。如果用户在刷新令牌的有效期内返回,则用户无需输入凭据。这在 OAuth2 RFC 中有详细说明。

最新更新