Web Services JWT(基于令牌的身份验证)与会话/Cookie-最佳用法

z2acfund  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(149)

我一直在阅读这个主题了很多,但找不到一个好的答案,我正在寻找。
所以我对JWT与Session的优缺点的理解是
JWT 专业版

  • 由于在服务器端没有DB查找,因此更具可伸缩性。(假定为无状态JWT)

  • 在客户端存储令牌需要经过深思熟虑。(cookie w/ httpOnly优于本地存储,但cookie大小限制为4kb)
  • 不能立即撤销的
  • 权限可能在下次刷新之前失效

会话pro

  • 可以说更安全,因为您只传递会话id(不透明引用),比XSS更容易防范CSRF,等等。
  • 对用户所做更改将立即反映出来

  • 可伸缩性低于令牌

根据我的理解
1.支持大量用户的网站(amazon,uber)使用哪种方法?使用session w/分布式缓存足够好吗?
1.在真实的生活中,使用JWT(基于令牌)比使用基于会话更有意义的用例是什么?
谢谢你,谢谢你

64jmpszr

64jmpszr1#

JWT从来不是为处理会话而设计的。它们是在服务之间交换完整性保护消息的一种方式。请看这篇文章:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/,这解释了为什么使用JWT处理会话不是一个好主意。
您还可以阅读有关BFF模式的信息:https://curity.io/resources/learn/the-bff-pattern/,在这里你使用一个轻量级的后端组件来处理令牌,并且仍然只处理前端的会话。因为它是一个轻量级组件,所以很容易扩展它--例如,它可以是一个lambda函数。
所以在我看来,没有真实的好的用例,您真正喜欢基于JWT的会话而不是基于Cookie的会话,但是(作为任何强烈的意见),这可能会引发讨论;)

kkih6yb8

kkih6yb82#

JWT的诞生是为了提供从移动的应用程序到API的安全访问。软件开发人员开始也将其用于基于Web浏览器的客户端,但由于安全问题,它们并不适合。您会找到许多关于此主题的文章。对于Web应用程序,最好将令牌存储在服务器端,将其与新会话链接,在登录到Web浏览器后返回会话,并将其存储在会话cookie中。

相关问题