Wanneer Vault ConfigData levert, kan het eerste verzoek plaatsvinden voordat een gewone proxy-aanpasser-bean bestaat. Installeer in plaats daarvan de verzoekfactory via het bootstrap-register.

Voor een Spring Framework 6.1-of-nieuwere-stack:

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 is de bestaande SpringApplication. Voeg deze initializer toe voordat je run aanroept, en behoud de Vault-URI en de authenticatie-instellingen.

ClientFactoryWrapper stelt deze factory beschikbaar aan de bootstrap-infrastructuur van Vault; het installeert geen applicatiebrede standaard voor niet-gerelateerde HTTP-clients.

Gebruik de compatibele Cloud Vault/Boot-afhankelijkheidsset van het project. Apache 4-voorbeelden kunnen niet worden gekopieerd naar de Apache 5-verzoekfactory van Spring Framework 6.

Maak het proxyadres ook vóór de bootstrap beschikbaar. Kies voor een publiek bereikbare Vault-server op een route die publieke proxy's toestaat een HTTP-kandidaat uit de lijst met HTTP-proxy's voordat de applicatie start. Als het alleen in Vault is opgeslagen, kan de applicatie de route die nodig is voor dat eerste Vault-verzoek niet ontdekken.

Gerelateerde artikelen