使用 Jwt 令牌 (java) 调用 REST 服务时出现有效的认证路径错误

问题描述

我有一个休息网络服务,它被一个 java 程序调用。 其余的服务提供商给了我们一个 jwt 令牌。当我在 chrome (swagger) 或 postman 客户端中测试时,它工作正常。 当我尝试从 java (webclient) 调用它时。程序抛出一个错误

 javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking <rest path>: sun.security.validator.ValidatorException: PKIX path building Failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

它是这样叫的:

     Response response = WebClient.create("url")
    .accept(MediaType.TEXT_PLAIN).header(HttpHeaders.AUTHORIZATION,"Bearer "+ <jwt token>).header(HttpHeaders.CONTENT_TYPE,"application/json").get();

有人遇到过这种情况吗?

解决方法

Java 无法验证证书的真实性。使用自签名证书时可能会发生这种情况,但不仅如此。从 Chrome 访问时,您是否必须接受不受信任的证书?

如果证书没问题并且您真的信任它,您可以查看 this article 中的示例,了解如何将证书添加到信任库。