JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。
一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。
头部(Header)
头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。
载荷(playload)
载荷就是存放有效信息的地方。
签证(signature)
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:1,需要base64加密后的header;2,base64加密后的payload;3,使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。
secret由前后端约定key,或者使用rsa的方式,使用密钥对;目前我们采用了约定key的方式。
注意⚠️:关于base64加密,同一份内容使用不同语言加密得到的密文可能不相同,但是解析出来的内容相同;
例如:{"alg" : "HS256","typ" : "JWT"}
用OC加密后的密文是:ewogICJhbGciIDogIkhTMjU2IiwKICAidHlwIiA6ICJKV1QiCn0
用JAVA加密后的密文是:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
虽然密文不同,但是最终解析