一、一个JWT通常有HEADER(头),PAYLOAD(有效载荷),和SIGNATURE(签名)三部分组成,三者之间使用“.”连接
header.payload.signture
二、Header组成
JWT的头部承载两部分信息:
(1)声明类型:默认JWT
(2)声明加密的算法 常用的算法:HMAC、RSA、ECDSA等
alg:表示签名的算法,默认是HMAC,SHA256(写成HS256)
typ:表示令牌(token)的类型,JWT令牌统一写为JWT
三、JWT的特点
(1)无状态
JWT不需要在服务端存储任何状态,客户端可以携带JWT来访问服务端,从而服务端变得无状态,这样,服务端就可以更轻松地实现扩展和负载均衡
(2)可自定义
JWT的载荷部分可以自定义,可以存储任何的JSON格式的数据,这意味着我们可以使用一些自定义的功能,例如存储用户的喜好,配置的信息等等
(3)扩展性强
JWT有一套标准的规范,因此很容易在不同的平台上和语言之间共享解析,此外,可发人员根据需要自定义声明(clims)来实现更加灵活的功能
(4)协调性好
由于JWT的内容是Base64编码后的的字符串形式存在的,因此非常容易调式和分析
(5)安全性去决于秘钥管理
jWT的安全取决于秘钥的管理,如果秘钥被显露或者被不当管理,那么JWT会受到攻击,因此,在使用JWT时,一定注意秘钥的管理,包括生成、存储、跟新、分发等等