JWT如何鉴别token是否被篡改

关于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进行比对,如果一样,就认证通过。

为什么呢?

因为这个加密keysecret)只有服务端才有,只有原始正确的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

JWT如何鉴别token是否被篡改_第1张图片

你可能感兴趣的:(WEB,jwt)