如何使现有的JWT令牌失效?

问题描述 投票:2回答:1

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

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

现在我计划将它转移到基于JWT的身份验证。根据我对不同教程的理解,JWT令牌本身包含可以在没有任何存储(缓存或数据库)的情况下进行验证的签名。我的问题是处理到期时间增量。由于我需要在每次用户访问站点时增加会话时间,这意味着我需要生成新的JWT令牌并使之前的令牌过期。生成新的很容易,不确定如何使现有的JWT令牌失效?

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

authentication web-applications oauth oauth-2.0 jwt
1个回答
0
投票
  1. JWT的优势在于其内容不会被最终用户或任何攻击者篡改,因为如果他们这样做,验证将失败。因此,JWT的目标不是避免存储。
  2. 在今天的日子里,人们几乎不丢弃任何数据。 JWT也不例外。因此,存储JWT以及所有相关的详细信息和时间戳都有其价值。此外,还有一些性能方面的考虑因素。这个答案将提供关于这一行的一些细节:https://stackoverflow.com/a/55404253/1235935
  3. 使用称为刷新令牌(可以是JWT)的第二个令牌来处理递增到期时间,该令牌通常具有比访问令牌更长的有效性。如果用户在刷新令牌的有效期内返回,则用户将不必输入凭证。这在OAuth2 RFC中有详细说明。
© www.soinside.com 2019 - 2024. All rights reserved.