关于JWT,可参考:https://baijiahao.baidu.com/s?id=1608021814182894637&wfr=spider&for=pc
一.jwt的token分成三个部分:
1.header:对token类型和加密类型 进行base64加密得到;
2.payload:对一些有效信息 进行base64加密得到;
3.signature:对base64加密后的header和base64加密后的payload使用.连接组成的字符串,再通过header中声明的加密方式进行加盐secret组合加密
生成token的工具:https://jwt.io/
二.如何鉴别客户端带过来的Token是正确的?
收到客户端请求里的token后,将该token的第一部分和第二部分再进行一次生成第三部分signature的过程,即将token中的第一部分和第二部分使用.连接组成的字符串,再通过header中声明的加密方式进行加盐secret组合加密,得到一个signature,将这个signature和token里带的signature进行比对,如果一样,就认证通过。
为什么呢?
因为这个加密key(secret)只有服务端才有,只有原始正确的header和payload经过加密key加密,才能得到原始正确的signature;只要header或payload被修改了,那加密后得到的signature就会不一样,即使signature被修改了,也能鉴别出来,因为signature是唯一的。具体可参考:https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.hmacsha256?redirectedfrom=MSDN&view=netframework-4.8