Когда Vault предоставляет ConfigData, его первый запрос может произойти до того, как появится обычный бин настройки прокси. Установите фабрику запросов через реестр bootstrap.

Для стека Spring Framework 6.1 или новее:

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import org.springframework.http.client.JdkClientHttpRequestFactory;
import org.springframework.vault.config.AbstractVaultConfiguration
    .ClientFactoryWrapper;

var http = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example.net", 8080)))
    .build();

application.addBootstrapRegistryInitializer(registry ->
    registry.register(ClientFactoryWrapper.class, context ->
        new ClientFactoryWrapper(
            new JdkClientHttpRequestFactory(http))));

application — это существующий SpringApplication. Добавьте этот инициализатор перед вызовом run, сохранив URI Vault и параметры аутентификации.

ClientFactoryWrapper предоставляет эту фабрику инфраструктуре bootstrap Vault; он не устанавливает общий для приложения по умолчанию для несвязанных HTTP-клиентов.

Используйте совместимый набор зависимостей Cloud Vault/Boot проекта. Примеры для Apache 4 нельзя скопировать в фабрику запросов Apache 5 в Spring Framework 6.

Сделайте адрес прокси доступным и до bootstrap. Для публично доступного сервера Vault на маршруте, который допускает публичные прокси, выберите HTTP-кандидата из списка HTTP-прокси до запуска приложения. Если он хранится только в Vault, приложение не сможет обнаружить маршрут, необходимый для этого первого запроса к Vault.

Похожие статьи