JWT(Json Web Token)广泛应用于网站身份验证
它由3部分组成:
- header 头部信息:包含了过期时间、签发者、客户端等信息
- payload 其他信息:用户自定义的一些信息
- 加密部分: header和payload两部分通过加密算法(一般是sha256)取得
一个token可以这样表示:
base64(header
).base64(payload
).sha256(base64(header).base64(header)
)
其中base64是一种编码形式
token里的信息对用户是完全透明的
对于用户:token里的信息可以从header和payload解析出来,而不需要解密,甚至可以修改,但是加密部分却因为没有密钥而无法修改。
对于服务器:绝对不能信任header和payload中的信息,因为这些信息用户完全可以捏造,除非你知道你正在干嘛(Don't use this method unless you know what you're doing),否则千万要使用加密部分的信息。