在 JWT 有效负载中有一个随机生成的令牌并在每个请求上检查数据库是否是一个好主意吗?
我已经对 JWT 及其实际工作原理进行了研究,我知道它的主要目的是避免在每个请求上查询数据库以授权用户,但我仍然必须这样做,因为我需要有关发出请求的用户的某些信息。
如果需要,我还需要一个好的解决方案来立即撤销令牌。将令牌列入黑名单似乎是一个很好的解决方案,但这需要额外的请求,我认为不值得付出努力。
因此,我想出的解决方案是生成一个随机令牌并将该令牌保存在我的数据库中,并将其放入 JWT 有效负载中。这样,当用户发出新请求时,它首先检查 JWT 令牌是否有效,如果有效,则检查有效负载中关联的令牌是否有效。
因此,例如,如果用户需要更改其密码,则其令牌将更改,并且其有效负载中具有先前令牌的所有 JWT 令牌将无法验证。
所以解决方案是这样的:
当用户注册时,它被分配了一个随机令牌,并且还存储在有效负载中。如果注册成功,服务器将返回生成的 jwtToken。
var jwtToken = jwt.sign({token: randomToken}, PRIVATE_KEY, SIGN_OPTIONS);
因此,当用户发出新请求时,它首先检查 JWT 令牌是否有效。
var legit = jwt.verify(token, JWT_PUBLIC_KEY, SIGN_OPTIONS);
如果是,则继续使用数据库中的用户令牌检查有效负载内的令牌。
SELECT * FROM users WHERE token = legit.token
如果一切正确,则继续执行正常请求。
私钥背后的原因是确保用户不会更改令牌。因此,存储令牌中经常使用的对象是完全安全的,无需将令牌存储在任何地方。签名对象如下所示:
{
expirationDate: 1560530063664,
...user data
}
将某个令牌列入黑名单,我相信最好的方法是你想出的方式。根据您同时访问网站的用户数量,可能/只使用阵列大腿是个好主意。
虽然能够将令牌列入黑名单可能很好,但真的有必要吗?如果用户更新其密码,是否确实需要注销?如果您仍然认为您需要一个令牌存储,我相信有多个 npm 包可以做到这一点......
我使API服务器与Node.js和快递。 我还为auth用户使用了JWT令牌身份验证。 如果令牌过期,我的场景就在这里。 > ,因为它不会检查签名是否正确。 对于提取过期令牌的有效负载,有什么解决方案吗? 谢谢。
我在Spring Boot中创建了一个JWT令牌,用于存储用户详细信息。当我使用Jwttokenutil时。getUsernameFromToken(authToken)[authToken是传递的令牌]方法我将数据集获取给Subject。类似地,我希望将包含其他用户详细信息的数据集获取到Payload。但是我不能得到它。 ======下面是我的令牌生成方法/代码:======== =======
我想用当前的方法加密JWT负载,比如对称或非对称加密方法。我的问题是,如果我使用这些方法,javascript需要在客户端对我的数据执行任何操作?还是加密和验证的所有部分都将在服务器端完成?在本文中,他们说,如果需要加密负载,则必须存储公钥(由于RSA或…)等加密算法的缘故)。为什么?如果我需要加密有效负载,为什么我们需要在jwt令牌中存储公钥(或任何密钥)?有没有办法只在服务器端对称加密有效负载
如果我创建一个JWT令牌,有效负载中应该有哪些数据?我在网上查找了一些示例和解释,有些人将密码放在JWT中,有些人没有。 现在我正在传递以下数据: 将散列密码放入JWT有效负载感觉不对,因为JWT将被放置在前端应用程序中。它应该在那里吗? 最佳实践是什么?
我有一个签名的JWT字符串,我从服务器上获得。我不知道密钥,或者更确切地说,我不想把密钥放在客户端/设备上。 当使用这个网站与我的令牌:https://jwt.io/我得到想要的结果,它告诉我头和有效载荷信息。 我在Android系统上找不到一个像这个网站那样的库,我已经尝试了我能找到的所有库。最受认可的方法是:https://github.com/jwtk/jjwt 但这给了我一个例外,我不能解
我正在开发一个网站,可以连接到一个mqtt代理,并获得有效负载消息。 我使用的库是(https://eclipse.org/paho/clients/js/)。 我的问题是以下几点。当我试图获得一个标准压缩消息(gzipped)时,库抛出一个异常“错误:AMQJS0009E Malformed UTF Data:F53-52”。 如何处理压缩消息? 下面是我的代码:
问题内容: 我想对我们的新REST API实施基于JWT的身份验证。但是,由于在令牌中设置了有效期,是否可以自动延长有效期?我不希望用户在此期间正在使用该应用程序的情况下,每隔X分钟登录一次。那将是巨大的用户体验失败。 但是,延长有效期将创建一个新令牌(旧令牌在过期之前仍然有效)。在每个请求之后生成一个新令牌对我来说听起来很愚蠢。当多个令牌同时有效时,听起来像一个安全问题。当然,我可以使用黑名单来
我正在研究一个播放器的集成,该播放器必须在浏览器中播放由Widevine DRM保护的流。 我查了一些知名玩家: DashJs-https://github.com/Dash-Industry-Forum/dash.js/wiki 幸运的是,这些播放器提供了一些使用Widevine DRM保护的流的示例。 我的问题涉及XHR执行以检索DRM密钥。在任何Widevine安全流中,我可以看到(在dev