什么是JWT
JWT是Json Web Token 的缩写,JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。就是这是一种认证机制,让后台知道请求是来自于受信的客户端。
JWT的组成部分
HEADER(算法与令牌)
存放令牌类型和算法信息
令牌类型默认是"JWT",当然也可以更改为其他的令牌类型
该算法是用于 payload 中信息编码
PAYLOAD(数据)
是存放数据的部分,可以存放一些脱敏的信息。
一些基本的信息(当然没有必要在一个jwt中加入这么多的信息)
iss (issuer):签发人
sub (subject):主题
aud (audience):受众
exp (expiration time):过期时间
nbf (Not Before):生效时间,在此之前是无效的
iat (Issued At):签发时间
jti (JWT ID):编号
VERIFY SIGNATURE(验证签名)
用于jwt中信息的更改
JWT的基本格式
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Imx2MTIzIiwiaWF0IjoxNTE2MjM5MDIyfQ.5JPPSkCfB0q3t5Qx6UL3f7pv2KZlgDQGpccdSDE4YHc
由三部分组成,并由 “.” 分割开来。如"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"代表HEADER
"eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Imx2MTIzIiwiaWF0IjoxNTE2MjM5MDIyfQ"代表PAYLOAD
这两串编码其实是HEADER和PAYLOAD的json利用Base64编码生成的,所以不具有保密性。
可以利用Base64的解码工具将数据呈现出来
最后一个VERIFY SIGNATURE部分是利用MD5来进行加密的。这样就可以保证在jwt里的信息基本不会被恶意修改。