什么是JWT
介绍
JWT全称JSON Web Token,是几年前就开始流行的一种鉴权方案,这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。
组成
整个JWT是一个字符串,组成为:头部.载荷.签名 例如: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiYXV0aCI6MSwiaWF0IjoxNjYzMzA3MzIxLCJleHAiOjE2OTQ4NDXXXXXX.oAcQtJkV-cCeEJTNXxb-gDpYiuYI-QEXr52v5auAnsk
前两段由Base64编码,第三段由算法加密钥进行签名。
头部
主要保存JWT自己的配置信息,例如签名类型、签名算法等.例如:
{"typ":"JWT","alg":"HS256"}
载荷
用来存储用户信息,将JSON转为字符串后变为Base64,里面通常保存了必要的用户信息,例如:用户ID、用户权限、签名时间、到期时间。例如:
签名
未来防止头部和载荷被篡改和伪造,第三段使用指定的算法和密钥进行签名,在服务端会先对头部和载荷进行验证后才会进入指定路由。签名方式保存在头部中。
样例
大概原理就是这样,基本都是在登录或注册后保存在localStorage中。当然这只是一个非常简单的Demo。在时间过程中,JWT会自带很多的签名算法,在签名时会保存在头部中。同时在签名时会将签名和到期的时间戳保存在载荷中。