【发布时间】:2023-02-05 21:20:19
【问题描述】:
我需要使用 WebClient 从我的应用程序调用多个不同的 API。 比方说,有两个不同的 API。对于这些 API,我必须使用从不同证书构建的不同 SSLContext。 我为它们创建了不同的 SSLContext(使用不同的证书)。
作为 WebClient 的后端,我使用标准方法 - ReactorClientHttpConnector 和 Reactor Netty Http 客户端
可以通过以下方式在那里配置 SSL:
new ReactorClientHttpConnector(HttpClient.create()
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext))
);
但我不确定如何配置多个不同的 SSLContext(针对每个 API)。
现在我看到了三种方法:
选项1:
使用不同的 HttpClient (HttpClient.create) 创建两个不同的 ReactorClientHttpConnector 并将我的 SSLContexts 放在那里。
最终我将有两个 WebClient,每个都基于它自己的 ReactorClientHttpConnector。 我不知道这是否是有效的方法,因为我怀疑我的应用程序中会有两个不同的事件循环组
选项 2:
也许我可以链接 .secure() 方法并添加不同的 SSLContexts,如下所示:
new ReactorClientHttpConnector(HttpClient.create()
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext))
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext2))
);
但是,我不确定它们是否会同时应用而不被覆盖,以及它是否会起作用。
选项 3:
以某种方式创建一个包含所有必需证书的 SSLContext
那么,如何处理呢?
【问题讨论】:
标签: spring-webflux project-reactor spring-webclient reactor-netty sslcontext