Как настроить RestClient в SpringBoot на доверие ко всем сертификатам?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как настроить RestClient в SpringBoot на доверие ко всем сертификатам?

Сообщение Anonymous »

Сейчас я использую SpringBoot 3.2.5 в своем проекте, который включает библиотеку RestClient. Мне нужно настроить RestClient так, чтобы он доверял всем сертификатам, но я не смог найти способ сделать это, поскольку кажется, что эта библиотека довольно новая.
Кроме того, я использую HttpServiceProxyFactory для создания декларативного RestClient с использованием интерфейса с определениями. Похоже, у меня почти нет власти над SSLContext и HttpServiceProxyFactory.
Вот мой упрощенный сценарий:

Код: Выделить всё

@Slf4j
@Configuration
public class FooClientConfig {

@Bean
public FooClient buildNativeClient(RestClient.Builder builder, RestClientSsl ssl, NativeProperties properties) {

// construct the base URL, even with protocol (https/https based on ssl prop)
var baseUrl = buildBaseUrl(...);

builder.baseUrl(baseUrl)
.defaultHeaders(httpHeaders -> httpHeaders.setBasicAuth(properties.getBasicAuth().getUsername(), properties.getBasicAuth().getPassword()));

if (properties.getSsl().isEnabled()) {
builder.apply(ssl.fromBundle(properties.getSsl().getBundle()));
}

var requestFactory = buildRequestFactory(properties.getProxy());
var restClient = builder
.requestFactory(requestFactory)
.build();

return HttpServiceProxyFactory
.builderFor(RestClientAdapter.create(restClient))
.build()
.createClient(FooClient.class);
}

public static String buildBaseUrl(boolean sslEnabled, @NotNull String host, Integer hostPort, String baseUrl){
val protocol = sslEnabled ? "https" : "http";
val port = hostPort != null ? ":" + hostPort: "";

return String.format("%s://%s%s%s", protocol, host, port, baseUrl);
}

public static @NotNull ClientHttpRequestFactory buildRequestFactory(@NotNull ProxyConfig proxyConfig) {
final var requestFactory = new SimpleClientHttpRequestFactory();
// If proxying is enabled
if (proxyConfig.isEnabled()) {
val socketAdress = new InetSocketAddress(proxyConfig.getAddress(), proxyConfig.getPort());
val proxy = new Proxy(proxyConfig.getSchema(), socketAdress);
requestFactory.setProxy(proxy);
}

return requestFactory;
}
}

// Interface defining the API client operations
public interface FooClient {

@GetExchange()
ResponseEntity handshake();

}
В приведенном выше коде я настраиваю конфигурацию RestClient, создаю базовый URL-адрес, применяю SSL, если он включен, создаю фабрику запросов и, наконец, создаю свой RestClient.
/>Несмотря на эти шаги, мне не удалось настроить RestClient так, чтобы он доверял всем сертификатам для целей отладки. Кажется, нигде нет документации по этому шагу, поэтому я спрашиваю: как мне это сделать, не переписывая полностью клиент?

Подробнее здесь: https://stackoverflow.com/questions/786 ... rtificates
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»