Quando o Vault fornece ConfigData, sua primeira solicitação pode ocorrer antes de existir um bean comum de personalização de proxy. Instale a fábrica de solicitações pelo registro bootstrap.

Para uma pilha Spring Framework 6.1 ou posterior:

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 é o SpringApplication existente. Adicione este inicializador antes de chamar run, mantendo o URI do Vault e as configurações de autenticação.

ClientFactoryWrapper expõe esta fábrica à infraestrutura bootstrap do Vault; ele não instala um padrão para toda a aplicação em clientes HTTP não relacionados.

Use o conjunto de dependências Cloud Vault/Boot compatível do projeto. Exemplos do Apache 4 não podem ser copiados para a fábrica de solicitações Apache 5 do Spring Framework 6.

Disponibilize o endereço do proxy também antes do bootstrap. Para um servidor Vault acessível publicamente em uma rota que permita proxies públicos, escolha um candidato HTTP na lista de proxies HTTP antes do início da aplicação. Se ele for armazenado apenas no Vault, a aplicação não consegue descobrir a rota necessária para essa primeira solicitação ao Vault.

Artigos relacionados