gpt4 book ai didi

security - 注销时使 JWT 失效?

转载 作者:行者123 更新时间:2023-12-05 03:07:15 45 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 分钟之类的)。

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

最佳答案

除了 token 到期日期(在 exp 声明中说明)之外,我可以想到几种使 JWT token 无效的方法:

更改 key

第一种方法需要更改用于在服务器端签署 token 的 key ,但对于您问题中描述的情况似乎不切实际。

将 token 标识符列入白名单

另一种方法(可能是更适合您的方法)涉及在服务器端的白名单中跟踪 token 。

  • 颁发 token 时,使用 jti声称在 token 中存储唯一标识符。同时将此唯一标识符添加到服务器端的白名单中。

  • 验证 token 时(除了检查签名、到期日期和其他您可能需要的声明),确保 jti 的值声明已列入白名单。

  • 当用户请求使 token 失效时,从白名单中删除 token 标识符。

对于 token 标识符,您可以使用 UUID

JWT 允许您执行无状态身份验证(一旦您验证了签名,您就可以信任 token ,然后在不依赖于外部实体的情况下执行身份验证)。白名单方法是一种权衡,以防您需要跟踪已发行的代币。

关于security - 注销时使 JWT 失效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148876/

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