Quan Vault subministra ConfigData, la seva primera petició pot passar abans que existeixi un bean ordinari de personalització de proxy. Instal·leu en el seu lloc la fàbrica de peticions a través del registre bootstrap.

Per a una pila de Spring Framework 6.1 o 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 és el SpringApplication existent. Afegiu aquest inicialitzador abans de cridar run, conservant l'URI de Vault i la configuració d'autenticació.

ClientFactoryWrapper exposa aquesta fàbrica a la infraestructura bootstrap de Vault; no instal·la cap valor predeterminat per a tota l'aplicació per als clients HTTP no relacionats.

Feu servir el conjunt de dependències Cloud Vault/Boot compatible del projecte. Els exemples d'Apache 4 no es poden copiar a la fàbrica de peticions Apache 5 de Spring Framework 6.

Feu que l'adreça del proxy estigui disponible també abans del bootstrap. Per a un servidor Vault accessible públicament en una ruta que permeti proxys públics, trieu un candidat HTTP de la llista de proxys HTTP abans de l'inici de l'aplicació. Si només s'emmagatzema a Vault, l'aplicació no pot descobrir la ruta necessària per a aquesta primera petició a Vault.

Articles relacionats