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

时间:2019-04-24 13:58:29

标签: authentication web-applications oauth oauth-2.0 jwt

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

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

现在,我正计划将其移至基于JWT的身份验证。根据我对其他教程的了解,JWT令牌本身包含签名 无需任何存储(缓存或数据库)即可进行验证。我的问题是关于到期时间增量的处理。因为我需要增加会议时间 每次用户到站点时,这意味着我需要生成新的JWT令牌并使上一个令牌失效。生成新的任务很容易,不确定如何 可以使现有的JWT令牌过期?

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

1 个答案:

答案 0 :(得分:0)

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

  2. 在今天,人们几乎没有丢弃任何数据。 JWT也不例外。因此,将JWT与所有相关的详细信息和时间戳存储在一起具有其价值。此外,还有一些性能方面的考虑。该答案将提供有关此行的一些详细信息:https://stackoverflow.com/a/55404253/1235935

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