使用 Spring WebClient 访问 OAuth2 受保护的资源,其中令牌提供程序也受 ssl 保护

问题描述

尝试使用 webclient 访问受 OAuth2 保护的令牌和资源服务器。要求是向两个请求添加证书。以下是我尝试向我的请求添加证书的方法

 HttpClient resourceServerHttpClient = HttpClient.create()
        .tcpConfiguration(client -> client.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,10000))
        .secure(sslContextSpec -> {
          sslContextSpec.sslContext(oauth2clientSSLPropertiesConfigurer.getConstructedSslContexts().get("cpd"));
        });
    ClientHttpConnector customHttpConnector = new ReactorClientHttpConnector(resourceServerHttpClient);

    return WebClient.builder()
        .baseUrl(lisClientBaseUrl)
        .exchangeStrategies(exchangeStrategies)
        .clientConnector(customHttpConnector)
        .filter(oauth)
        .filters(exchangeFilterFunctions -> {
          exchangeFilterFunctions.add(logRequest());
          exchangeFilterFunctions.add(logResponse());
        })
        .build();

问题 1:据我所知,上述代码段仅将证书传递给资源服务器请求。找到 https://neuw.medium.com/spring-boot-oauth2-mutual-tls-client-client-credentials-grant-3cdb7a2a44ea 我的自定义适合场景 3。但是唯一的方法是在我的 api 中切换完全反应式上下文(不是 servlet),以访问 DefaultReactiveOAuth2AuthorizedClientManager、authorizedClientProvider 等。有没有更简单的方法来实现这一点? 问题 2:有没有办法查看有关对令牌提供者的请求的更多详细信息 - 以确保发送证书。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)