加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:54:10 所属栏目:Java 来源:网络整理
导读:我在用 JwtBuilder builder = Jwts.builder() .setId(user.getEmail()) .signWith(signatureAlgorithm,signingKey); 然后创建一个令牌 Jwts.parser().setSigningKey(secret).parse(token); 进行身份验证.当我在JUnit测试中运行它时,它工作正常.但是,当我通过
我在用
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()并在模块启动时加载它

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读