一、什么是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 不被未授权的用户访问。
Comments NOTHING