java – JWT签名与本地计算签名不匹配

前端之家收集整理的这篇文章主要介绍了java – JWT签名与本地计算签名不匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在用
JwtBuilder builder = Jwts.builder()
                    .setId(user.getEmail())
                    .signWith(signatureAlgorithm,signingKey);

然后创建一个令牌

Jwts.parser().setSigningKey(secret).parse(token);

进行身份验证.当我在JUnit测试中运行它时,它工作正常.但是,当我通过REST调用验证作为标头传递的令牌时,身份验证因SignatureException而失败.我已经验证了HTTP调用两端的令牌,令牌字符串是相同的.创建/认证的代码是静态的,因此,每侧的秘密是相同的.任何线索

解决方法

static Key secret = MacProvider.generateKey();每次重新加载服务器时都会生成一个新的随机密钥,因为在加载类时会初始化静态变量

这意味着如果您发出JWT,它只有在服务器不重启时才有效.你得到的SignatureException是因为签名密钥不同

您需要在第一代之后存储签名密钥secret.getEncoded()并在模块启动时加载它

猜你在找的Java相关文章