一、什么是JWT

JWT(JSON Web Token)是一种用于在网络应用之间安全传递信息的开放标准。它使用 JSON 格式来定义一种紧凑的、自包含的数据结构,其中包含了用户身份验证和授权所需的信息。

二、JWT的结构

JWT 由三部分组成,使用点号 "." 分隔,分别为 Header、Payload 和 Signature。

三、交互过程

签名(JWT) = Base64(Header).Base64(Payload).Base64(Signature)
Signature = Encrypt(Base64(Header).Base64(Payload), key)
Base64是编码算法,不是加密算法

四、JWT的优点

相比于传统的 cookie 和 session,JWT 有以下优点:

  • 跨域支持:JWT 可以在跨域情况下使用,因为它可以通过 HTTP 头部进行传递。
  • 无状态:JWT 不需要在服务端存储会话信息,因为 JWT 包含了所有必要的信息,可以直接从 JWT 中解码。
  • 安全性:JWT 可以使用对称密钥或公钥/私钥对进行签名,以确保它们不会被篡改或伪造。

Header

Header 部分通常由两部分组成:令牌的类型(即 JWT)和所使用的算法(例如 HMAC SHA256 或 RSA)。

Payload

Payload 包含了所需的信息,包括用户身份、授权和其他元数据。Payload 可以包含自定义的键值对,也有一些预定义的键(例如“sub”表示主题,“exp”表示过期时间)。

Signature

Signature 是将 Header 和 Payload 进行加密后生成的签名,用于验证令牌是否被篡改过。

五、JWT的应用

JWT 通常用于在客户端和服务器之间传递身份验证信息,例如在登录后将 JWT 发送回服务器以进行后续请求的身份验证。以下是 JWT 的常见应用场景:

  • 单点登录(SSO):用户只需要登录一次,就可以在多个应用中使用同一个 JWT 进行身份验证,从而实现单点登录。
  • 微服务架构:在使用微服务架构时,JWT 可以在服务之间传递用户身份验证信息。
  • API 认证:使用 JWT 可以轻松地对 API 进行认证和授权,以保护 API 不被未授权的用户访问。
  • alipay_img
  • wechat_img
最后更新于 2024-06-20