首页 > 解决方案 > JJWT 可以在服务器端使令牌无效吗?

问题描述

我是 JWT 的新手,想知道当用户退出应用程序时是否可以在服务器端使 JWT 无效/无效(我也想知道这样做是否有意义!)。想法是:

  1. 用户在其应用中单击退出链接
  2. 应用程序调用 POST https://api.myapp.example.com/auth/invalidate
  3. JWT(它是 HTTP 请求标头中的授权/承载令牌)以某种方式无效
  4. 现在,没有人可以再次使用那个 JWT

我不确定这是否是一种非正统的注销逻辑方法,或者即使在用户注销之后,让 JWT 仍然有效是否可以接受(我想我可以将 JWT 的有效期缩短到,比如说,60 分钟或其他时间)。

再说一遍:想知道是否可以使用 JJWT 进行这种“无效”(如果可以,怎么做?!)以及这样做是否有意义(如果没有,典型的注销流程是什么样的?!)。谢谢!

标签: javajwtjjwt

解决方案


您不会使 JWT 无效,JWT 是不可变的。令牌的有效性取决于到期时间和签名密钥,在严重的安全事件中,您可以更改签名密钥,然后已经颁发的令牌将失效。您也可以在数据库中使用令牌黑名单,但这将花费另一次访问数据库的费用,如果您使用它,身份验证流程将不再是无状态的。

一旦用户退出,则必须从存储令牌的客户端删除令牌,通常令牌的存储是浏览器的一个cookie或一个。localStorage


推荐阅读