gpt4 book ai didi

java - JJWT 可以在服务器端使 token 失效吗?

转载 作者:行者123 更新时间:2023-12-02 02:03:02 33 4
gpt4 key购买 nike

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

  1. 用户点击应用中的退出链接
  2. 应用程序调用 POST https://api.myapp.example.com/auth/invalidate
  3. JWT(HTTP 请求 header 中的授权/承载 token )因某种原因失效
  4. 现在,没有人可以再使用该 JWT

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

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

最佳答案

其他答案是正确的,因为您通常不需要注销/无效端点。用户从您的应用程序注销意味着您只需从本地存储中删除他/她的 token 即可。

但是,如果您仍然决定实现 token 失效端点,则可以通过跟踪包含失效 token ID 的“黑名单”来实现:

  • 当用户调用端点时,您可以将 token 的 ID 添加到黑名单中。
  • 对于每个经过身份验证的请求,您首先检查 token 的 ID 是否包含在黑名单中,并相应地拒绝访问。
  • 确保旧的/过时的黑名单条目会自动清除,并且不会占用您的内存。
  • 不过,还要确保黑名单条目的生存时间至少与 token 的有效期一样长。

对于实现,您不一定需要数据库,您可以使用内存中的自过期映射,例如 f.i. guava's CacheBuilderthis thread 中讨论的替代方案之一。

关于java - JJWT 可以在服务器端使 token 失效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51272360/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com