在我的新公司中,这是我们的OAuth流程
现在,我正计划将其移至基于JWT的身份验证。根据我对其他教程的了解,JWT令牌本身包含签名 无需任何存储(缓存或数据库)即可进行验证。我的问题是关于到期时间增量的处理。因为我需要增加会议时间 每次用户到站点时,这意味着我需要生成新的JWT令牌并使上一个令牌失效。生成新的任务很容易,不确定如何 可以使现有的JWT令牌过期?
我可以将地图保留在包含user_id和最新JWT令牌的缓存中。其余令牌将被视为无效。但是这种基于缓存的方法失败了 在不需要任何存储的情况下,JWT令牌的用途。
答案 0 :(得分:0)
JWT的优势在于它的内容不能被最终用户或任何攻击者篡改,因为如果这样做的话,验证将失败。因此,JWT的目的不是避免存储。
在今天,人们几乎没有丢弃任何数据。 JWT也不例外。因此,将JWT与所有相关的详细信息和时间戳存储在一起具有其价值。此外,还有一些性能方面的考虑。该答案将提供有关此行的一些详细信息:https://stackoverflow.com/a/55404253/1235935
使用第二个称为刷新令牌(可以是JWT)的令牌来处理到期时间的增加,该令牌通常比访问令牌具有更长的有效期。如果用户在刷新令牌的有效期内返回,则用户无需输入凭据。 OAuth2 RFC中对此进行了详细说明。