Spring Cloud Vaults Proxy-Factory vor application.run installieren
Nutzen Sie den Bootstrap-Registry-Hook für den ConfigData-Zugriff, der vor gewöhnlichen Anwendungs-Beans stattfinden kann.
Wenn Vault ConfigData bereitstellt, kann seine erste Anfrage erfolgen, bevor ein gewöhnliches Bean zur Proxy-Anpassung existiert. Installieren Sie die Anfrage-Factory stattdessen über die Bootstrap-Registry.
Für einen Stack mit Spring Framework 6.1 oder neuer:
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 ist die vorhandene SpringApplication. Fügen Sie diesen Initializer hinzu, bevor Sie run aufrufen, und behalten Sie die Vault-URI sowie die Authentifizierungseinstellungen bei.
ClientFactoryWrapper stellt diese Factory der Bootstrap-Infrastruktur von Vault bereit; sie installiert keinen anwendungsweiten Standard für nicht betroffene HTTP-Clients.
Verwenden Sie den kompatiblen Cloud-Vault/Boot-Abhängigkeitssatz des Projekts. Apache-4-Beispiele lassen sich nicht in die Apache-5-Anfrage-Factory von Spring Framework 6 übernehmen.
Machen Sie die Proxy-Adresse auch vor dem Bootstrap verfügbar. Für einen öffentlich erreichbaren Vault-Server auf einer Route, die öffentliche Proxys erlaubt, wählen Sie vor dem Anwendungsstart einen HTTP-Kandidaten aus der HTTP-Proxy-Liste. Wenn er nur in Vault gespeichert ist, kann die Anwendung die für diese erste Vault-Anfrage benötigte Route nicht ermitteln.