JWT signature does not match locally computed signature
1. 问题背景
最近在协助团队小盆友调试一个验签问题,结果还“节外生枝”
了,原来不是签名过程的问题,是token的问题。
当你看到“JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.”
,是不是也会产生错觉?
2. 解决过程
看到JWT,博主立刻想到网关某个地方的问题,遂按图索骥一番,果然找到了。原来是这行代码的问题:
/**此处secret指appSecret,token是客户端提供的token*/
Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
也就是这行代码,在解析客户端提交的token的时候,发生了异常。所以此刻,该怎么办?try一下呗,避免未知异常,提前catch并反馈客户端。
3. 总结经验
我们在使用JWT做接口鉴权时,通常会校验token是否为空,是否正确等。如果解析token失败时,即会触发以上exception。