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()并在模块启动时加载它 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |