JWT 简介
JWT(JSON Web Token)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象,这种信息可以被验证和信任,因为它是数字签名的。
JWT 的结构
一个JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature),这三个部分分别使用Base64编码后用.
连接在一起。
头部(Header)
头部通常包含两个信息:token的类型("typ")和所使用的加密算法("alg")。
字段 | 描述 |
typ | token类型,通常是”JWT” |
alg | 使用的加密算法,如”HS256″或”RS256″ |
载荷(Payload)
载荷包含了声明(claims),这些声明可以包含任何你需要传递的信息,声明可以分为三种类型:注册、公开和私有。
类型 | 描述 |
注册 | 预定义的声明,如iss(发行者)、exp(过期时间)、sub(主题)等 |
公开 | 不是预定义的,但应被公众理解的声明 |
私有 | 特定于应用程序的声明,不应被外部使用 |
签名(Signature)
签名是对头部和载荷数据以及一个秘钥的签名,以确保token没有被篡改,这个签名使用头部中指定的算法生成。
JWT 的使用场景
身份验证:JWT常用于身份验证,服务器生成一个token并发送给客户端,客户端每次请求时都带上这个token,服务器验证token的有效性。
信息交换:由于JWT是自包含的,它可以在不需要访问数据库的情况下进行安全的信息交换。
JWT 的优点
无状态:服务器不需要存储session信息,减少了服务器资源消耗。
可扩展性:由于服务器不需要存储session信息,系统可以更容易地扩展。
安全性:可以通过加密来保护信息,防止篡改。
JWT 的缺点
无法废弃:一旦发出,除非到期,否则无法废弃,如果需要废弃,必须等待到期或者使用额外的机制。
大小限制:由于token需要随每个请求发送,如果载荷过大,会增加传输成本。
上文归纳
JWT是一种轻量级的认证方式,适用于那些需要快速、安全且易于扩展的应用,它也有自己的局限性,使用时需要根据具体场景权衡利弊。
感谢观看,如果对JWT有任何疑问,请在评论区留言,也欢迎关注和点赞!
```
评论留言