哪个更安全,HTTP 会话中的 JWT 还是客户端请求中的 JWT header?

What is more secure, JWT in HTTP sessions or JWT in client's request header?

我正在尝试在我的一个项目中实现基于 JWT 的身份验证系统,但我在两个选项之间徘徊,我需要一些说明。我想出了两种实现 JWT 的方法,如下所示:

方法一

方法二

这个解释很好https://auth0.com/learn/refresh-tokens/

Refresh Tokens are long-lived. This means when a client gets one from a server, this token must be stored securely to keep it from being used by potential attackers, for this reason, it is not safe to store them in the browser. If a Refresh Token is leaked, it may be used to obtain new Access Tokens (and access protected resources) until it is blacklisted. Refresh Tokens must be issued to a single authenticated client to prevent the use of leaked tokens by other parties. Access Tokens must also be kept secret, but due to its shorter life, security considerations are less critical.

还有一个会话可能被劫持或固定。

如果您使用 SSL,所有 headers 都会被加密。

所以我会更喜欢原生的 JWT 机制,并且会注意客户端 auth 令牌的存储。

这是我的一些澄清,

  • 在浏览器端存储长期存在的 session 总是有风险的
  • 让服务器执行验证第三方或应用程序发送的令牌的工作。这是为了确保发送的令牌完整且有效。
  • 我更喜欢始终通过 HTTPS 在 headers 中发送令牌的方法。这变得简单且更安全,因为服务器将向用户 session.
  • 验证您的令牌 w.r.t