JsonWebToken用户身份验证问题

JsonWebToken User Authentication Issue

本文关键字:问题 身份验证 用户 JsonWebToken      更新时间:2023-09-26

我有一个用于用户身份验证的应用程序,我遇到了这个问题,因为我有登录的用户,并且在cookie中存储了JWT(JsonWebToken)。我在验证用户后存储了cookie。接下来,我作为管理员,在用户仍然登录时将其从数据库中删除。由于用户仍然登录,因此用户在浏览器中有一个有效的JWT,因此它仍然认为它存在,因为我验证用户是否登录的方式是通过webtoken。我一直在考虑如何解决这个问题,但我还没能想出任何办法。

我也在GitHub上发布了这个问题。

查看使JSON Web令牌无效

有几种技术可以在JWT令牌到期前使其失效,当用户情况发生变化,并且您无法从本地存储删除/cookie:帐户被删除/阻止/暂停,密码被更改,权限被更改,用户被管理员注销:

  1. 令牌黑名单:存储注销和注销之间的令牌;过期时间,标记过期并在每个请求中检查它。您需要服务器存储。您可以只包含ID或使用已发布的时间字段。在用户上次更新之前发布的令牌将是无效的

  2. 缩短到期时间并轮换。每隔几次请求就发布一个新的。问题是在没有请求时(例如关闭浏览器)保持用户记录

其他常见技术:

  • 如果帐户被新用户泄露,允许更改用户唯一ID&密码登录
  • 包括上次登录日期以删除旧令牌
  • 若要在用户更改密码时使令牌无效,请使用其密码的哈希对令牌进行签名。如果密码更改,任何以前的令牌都将自动验证失败。将此机制扩展到其他感兴趣的字段进行签名。缺点是它需要访问数据库

一种方法是通过将cookie的过期时间戳设置为已过的日期来使其过期。