在HTTP环境中存储jwt令牌最安全的地方是哪里



在HTTP环境中存储jwt令牌最安全的地方在哪里?

我的web环境将jwt令牌作为cookie存储到客户端。然而,我听说将jwt令牌存储在cookie中是不安全的。

在阅读了几篇文章后,我听说使用httpOnlycookie是安全的。

但是我的网络环境不能使用HTTPS。

我想知道在HTTP环境中在哪里存储jwt令牌。

Spring boot正在发布令牌。

当您通过HTTP使用openid连接时,由于相同站点cookie的限制,您会遇到很多问题。

像ASP.NET Core这样的一些框架将令牌存储在加密的cookie中,这是一种方法。

另一种方法是使用本视频中描述的BFF模式https://www.youtube.com/watch?v=lEnbi4KClVw其中令牌不直接存储在客户端中。

当您将access_token存储在cookie中时,实际上是在创建自己的会话管理系统。会话管理是一个复杂的过程,需要处理各种攻击向量以确保安全。未能缓解这些矢量是导致这种方法不安全的原因。

同样的原理也适用于使用localstorage或sessionstorage在浏览器中存储访问令牌。

最近,不建议依赖客户端应用程序来获取和存储访问令牌已被广泛接受。这样做的理由是客户端不能被委托给client_secret。通过使用client_secret,您可以确保access_token不会发送到您不信任使用令牌的计算机或人员。

回答您的问题:

  • 不,您不应该使用cookie来存储您的访问令牌

这有两个原因,其中最重要的原因是:

  • 不应委托客户端应用程序获取访问令牌,因为它引入了黑客可能利用的攻击向量
  • 建议不要开发自己的会话管理系统。而是利用现有的会话管理系统

出于这些原因,建议应用BFF安全模式。这个网站在这里描述了如何将其与开源组件(包括示例代码(一起应用。以下选项有点复杂,但你绝对应该看看Duende.BFF和Azure Easy Auth。

最新更新