我一直在阅读有关 JSON Web Tokens 的内容,一些问题突然出现在我的脑海中。我已经阅读了很多关于我们应该如何从基于会话的方法转向 JWT 的说法。我更多地考虑的是一个Node JS 后端,它公开了 UI 和移动端的 API。
声明:JWT 不需要您为每个 http 请求与您的键值数据存储进行通信。
问题 1:我不能为所有用户拥有一个私钥(如果我只有一个私钥会有什么安全风险?)。那么无论如何我都需要一个数据库。
声明:JWT 在每次请求时发送令牌。因此我们不需要在会话中存储任何数据,例如“姓名、电子邮件”,而是可以驻留在令牌本身上。
问题 2:负载的大小不会增加,因为每个请求都会发送它们并且它还包含数据?
声明:您可以对移动身份验证以及 Web UI 身份验证使用相同的方法。
问题 3:由于服务器现在必须解密令牌并与服务器通信,这不是 Web UI 的开销吗?
Claim : 将令牌传递给 JS 并将令牌存储在 sessionStorage 或 localStorage 中。
问题 4:由于 sessionStorage 中没有“httpOnly”的概念,这不是安全问题吗?chrome插件也可以通过获取令牌并登录来规避安全性吗?
最后,除了 CRSF 问题,在 UI 和 Mobile Auth 之间共享代码以及 CSRF 的好处之外,我真的没有看到与当前基于会话的机制相比有多少好处。我的想法正确吗?
另外,与传统的基于会话的系统相比,JWT 的缺点是什么?