val sslContext = SslContextBuilder
.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build()
val httpClient = HttpClient.create().secure { t -> t.sslContext(sslContext) }
val webClient = WebClient.builder().clientConnector(ReactorClientHttpConnector(httpClient)).build()
5条答案
按热度按时间2w2cym1i1#
看起来Spring 5.1.1(Sping Boot 2.1.0)从
ReactorClientHttpConnector
中删除了HttpClientOptions
,因此在创建ReactorClientHttpConnector
的示例时无法配置选项现在有效的一个选项是:
基本上,在创建HttpClient时,我们将配置不安全sslContext,然后全局传递此httpClient以在
ReactorClientHttpConnector
中使用。另一个选项是使用不安全的sslContext配置
TcpClient
,并使用它创建HttpClient
示例,如下所示:如欲了解更多信息,请访问:
更新:相同代码的Java版本
mwngjboj2#
请参阅使用insecure TrustManagerFactory的示例,该示例信任所有X.509证书(包括自签名证书)而不进行任何验证。文档中的重要说明:
切勿在生产环境中使用此TrustManagerFactory。它纯粹用于测试目的,因此非常不安全。
mrphzbgm3#
必须编辑此内容,以适应spring-boot 2.0-〉2.1的更改。
另一种方法,如果你想编写生产代码,创建一个类似这样的spring bean,它使用spring-boot服务器中信任库和密钥库所在的设置来修改注入的WebClient。在客户端,如果你使用的是双向ssl,你只需要给予密钥库。不知道为什么ssl-stuff没有预先配置,并且很容易注入,类似于真正酷的spring-boot服务器设置。
下面是使用Webclient的部分:
0s7z1bwu4#
对于那些可能在如何使用受https保护的REST API和响应式WebFluxwebClient方面遇到困难的用户
你要创造两样东西
1.支持https的REST API -https://github.com/mghutke/HttpsEnabled
1.另一个REST API作为客户端与WebClient一起使用-https://github.com/mghutke/HttpsClient
注意:请浏览上述项目,查看与上述两个Spring Boot 应用程序共享的密钥库。并以编程方式添加了keyManagerFactory和TrustManagerFactory。
m4pnthwp5#
Spring框架版本5.3.23(Sping Boot 版本2.7.4)您可以尝试使用ReactorClientHttpConnector的这种方式:
我希望这个答案对你有帮助。