【问题标题】:Multiple different SSLContext with Webclient from WebFlux来自 WebFlux 的带有 Webclient 的多个不同 SSLContext
【发布时间】: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


    【解决方案1】:

    创建两个不同的WebClients - 这是方法 1

    使用不同的 HttpClient (HttpClient.create) 创建两个不同的 ReactorClientHttpConnector 并将我的 SSLContexts 放在那里。 最终我将有两个 WebClient,每个都基于它自己的 ReactorClientHttpConnector。我不知道这是否是有效的方法,因为我怀疑我的应用程序中会有两个不同的事件循环组

    两个WebClients 将共享事件循环组。他们将使用不同的事件循环组仅有的如果您通过runOn 或使用ReactorResourceFactory 配置它们。查看更多here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-01
      • 2020-01-30
      • 2021-01-15
      • 1970-01-01
      • 2020-05-18
      • 2018-05-09
      • 2019-05-01
      • 2021-05-25
      相关资源
      最近更新 更多