什么是 JWT?

JWT 是 JSON Web Tokens 的缩写,是一种紧凑、URL 安全的方式,用于表示要在客户端和服务器两方之间传输的声明(信息)。可以将其视为加密签名便条形式的秘密消息,只有预期的接收者才能理解

JWT 的结构

JWT 具有三个不同的部分,每个部分用点 (.) 分隔:

  • Header: 包含有关令牌和所使用的加密算法的元数据,通常是 HMAC SHA256 或 RSA
  • Payload: 牌携带的实际数据存储在这里。它也称为“claims”,可以包含用户详细信息和其他元数据等数据
  • Signature: Signature是一种加密安全证明,可验证发送者并确保消息在传输过程中不会被更改

image.png

JWT 如何工作?

以下是 JWT 的实际操作:

1.客户端使用其凭据登录,并向服务器发送请求。
2.服务器验证这些凭据。如果它们有效,服务器会生成 JWT 并将其发送回客户端。
3.客户端通常将 JWT 存储在本地存储中,并将其包含在每个后续 HTTP 请求的标头中。
4.服务器收到这些请求后会验证 JWT。如果有效,则客户端已通过身份验证和授权。

为什么使用JWT

JWT 是通用的 - 任何编程语言都可以生成 JWT,因为它们本质上是 JSON。此外,它们还有助于维护客户端上的会话状态,减少服务器负载,从而更具可扩展性

安全考虑

虽然 JWT 很方便,但它们确实存在一些漏洞:

  • 令牌盗窃: JWT 存储在客户端,因此可能被盗。始终确保您的传输安全,最好通过 HTTPS。
  • 无内置失效机制:由于 JWT 的无状态性质,无法单独或以用户组的形式使 JWT 失效。
  • 令牌大小:在 JWT 中存储太多数据可能会使其变得很重,从而影响网络性能。
  • 算法漏洞: JWT header 中的一些算法容易受到攻击。始终使用安全且更新的算法,并将您的签名密钥视为秘密

总之,JWT 是 Web 开发中的一个强大工具,提供无状态、安全和可扩展的通信。请记住,在应用程序中如何有效地使用 JWT 取决于您的特定需求和所需的安全级别

点赞(0)

评论列表 共有 0 评论

暂无评论

微信服务号

微信客服

淘宝店铺

support@elephdev.com

发表
评论
Go
顶部