Lorsque Vault fournit des ConfigData, sa première requête peut survenir avant qu'un bean ordinaire de personnalisation de proxy n'existe. Installez plutôt la fabrique de requêtes via le registre bootstrap.

Pour une pile Spring Framework 6.1 ou ultérieure :

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 est le SpringApplication existant. Ajoutez cet initialiseur avant d'appeler run, en conservant l'URI Vault et les paramètres d'authentification.

ClientFactoryWrapper expose cette fabrique à l'infrastructure bootstrap de Vault ; il n'installe pas de valeur par défaut à l'échelle de l'application pour les clients HTTP sans rapport.

Utilisez l'ensemble de dépendances Cloud Vault/Boot compatible du projet. Les exemples Apache 4 ne peuvent pas être copiés dans la fabrique de requêtes Apache 5 de Spring Framework 6.

Rendez l'adresse du proxy disponible avant le bootstrap également. Pour un serveur Vault accessible publiquement sur une route qui autorise les proxys publics, choisissez un candidat HTTP dans la liste des proxys HTTP avant le démarrage de l'application. S'il n'est stocké que dans Vault, l'application ne peut pas découvrir la route nécessaire à cette première requête Vault.

Articles similaires