如何使用Webflux Web Client Sping Boot 禁用SSL证书验证

pinkon5k  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(353)

我一直试图调用我的邮政端点设置我的ssl证书验证关闭从 Postman 和它的工作很好。

我只是想做同样的事情(关闭ssl证书验证),因为我在下面的代码中使用 Postman :

WebClient webClient =  WebClient.create("abc.com.pk");
String endPoint = "auth/connect/token";
HashMap<String,Object> params = new HashMap<String, Object>();
params.put("client_id", "abc12345");
params.put("username", "tom");
params.put("password", "jerry");
params.put("grant_type", "password");

try {
    HashMap map = webClient.post().uri(
                    uriBuilder ->
                            uriBuilder
                                    .path(endPoint)
                                    .build())
            .header("Content-Type", "application/json")
            .body(Mono.just(new Gson().toJson(params)), String.class)
            .retrieve().bodyToMono(HashMap.class)
            .block();
   return new Gson().toJson(map);

} catch (Exception ex) {
    ex.printStackTrace();
    return "fail";
}
a6b3iqyw

a6b3iqyw1#

您可以使用信任所有X.509证书而不进行任何验证的不安全TrustManagerFactory。这将允许WebClient与具有任何https证书(自签名、过期、主机错误、根不受信任、已吊销等)的URL通信。
按如下方式设置您的WebClient

SslContext sslContext = SslContextBuilder
        .forClient()
        .trustManager(InsecureTrustManagerFactory.INSTANCE)
        .build();
HttpClient httpClient = HttpClient.create().secure(t -> t.sslContext(sslContext));
WebClient webClient = WebClient.builder().clientConnector(new ReactorClientHttpConnector(httpClient)).build();

相关问题