升级 jhipster 后 JWT 签名无效

Invalid JWT signature after upgrading jhipster

我用 jhipster (4.14.5) 构建了两个微服务应用程序,今天我将它们都更新到了 5.1.0。使用 jhister-registry 最后 docker 图片 (4.0.0)

一切都按预期工作,但 API 带有 jwt 签名的调用不再工作。

MyRequestInterceptor

@Override
    public void apply(RequestTemplate requestTemplate) {
        String secret= Jwts.builder()
            .setSubject("admin")
            .claim("auth", AuthoritiesConstants.ADMIN)
            .signWith(SignatureAlgorithm.HS512, properties.getSecurity().getAuthentication().getJwt().getSecret())
            .compact();
        requestTemplate.header(JWTConfigurer.AUTHORIZATION_HEADER, "Bearer " + secret);
    }

带有 JWT 的 jhipster 5.1.0 有什么新功能?我应该更改算法签名还是如何解决这个问题?

是的,我们更改了密钥的处理方式,请查看源代码here

区别在于现在 JWT 密钥是用 Base64 编码的(这就是我们创建编码器的原因 here)。

这本来是我的错:来自 JJWT 的 .signWith() 方法接受一个字符串,所以我只是给出了密钥(它是一个字符串)。但是,如果您查看该方法的文档,您会注意到该字符串应该以 Base64 编码。所以现在你必须在任何地方都使用加密版本的密钥。它最终并没有改变任何东西,事实上,它只是正确使用API。