Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在刷新后使以前的JWT令牌无效_Spring_Security_Authentication_Jwt - Fatal编程技术网

Spring 如何在刷新后使以前的JWT令牌无效

Spring 如何在刷新后使以前的JWT令牌无效,spring,security,authentication,jwt,Spring,Security,Authentication,Jwt,在我们的应用程序中,每次用户发送请求时,都会在cookie中返回新的JWT令牌,即使之前的请求还有很长的生存期。若用户在短时间内发出多个请求,则存在多个有效令牌,每个令牌几乎在整个生命周期内。当然,浏览器使用的是最新版本,但仍有人可能会使用以前的版本来模拟用户 是否有方法在分派新令牌时使前一个令牌失效,或者只有在最后一个令牌上没有太多生存期时才分派新令牌?唯一“使令牌失效”的方法是有状态地跟踪它们 这通常意味着做一些事情,比如保留有效和无效令牌的键/值缓存,并根据每个请求上的这些列表检查传入的请

在我们的应用程序中,每次用户发送请求时,都会在cookie中返回新的JWT令牌,即使之前的请求还有很长的生存期。若用户在短时间内发出多个请求,则存在多个有效令牌,每个令牌几乎在整个生命周期内。当然,浏览器使用的是最新版本,但仍有人可能会使用以前的版本来模拟用户


是否有方法在分派新令牌时使前一个令牌失效,或者只有在最后一个令牌上没有太多生存期时才分派新令牌?

唯一“使令牌失效”的方法是有状态地跟踪它们

这通常意味着做一些事情,比如保留有效和无效令牌的键/值缓存,并根据每个请求上的这些列表检查传入的请求令牌

这样做的缺点是,您失去了JWTs的许多“无状态”好处(因为您仍在检查集中存储的令牌有效性),但好处是,您可以通过立即撤销不再需要服务的令牌来更“安全”


一种解决方法是让您的访问令牌寿命极短(5分钟左右),以最大限度地减少滥用。

将客户端IP嵌入令牌,并将即将到来的请求IP与验证令牌的IP进行比较,如何?这将防止恶意用户使用偷来的令牌获取敏感数据(尽管他仍然可以通过欺骗他的IP进行发布,如果他也可以获得CSRF令牌的话)。您可以尝试这样做,但IP不是唯一标识符。尤其是在公共网络上(手机、办公室wifi等)。如果你正在构建一个安全敏感的应用程序,我不会这么做。公平地说,NAT也可能有问题。Spring附带了一个JWT令牌存储,可以通过配置轻松使用。它允许使刷新令牌无效。因此,使用足够短的访问令牌有效期不会完全失去无状态性。无论如何,您必须向身份验证服务检查是否刷新访问令牌。