כאשר Vault מספק ConfigData, הבקשה הראשונה שלו עשויה להתרחש לפני שקיים bean רגיל להתאמת פרוקסי. התקן במקום זאת את מפעל הבקשות דרך רישום ה-bootstrap.

עבור מחסנית Spring Framework 6.1 ואילך:

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 הוא ה-SpringApplication הקיים. הוסף את המאתחל הזה לפני קריאה ל-run, תוך שמירה על ה-URI של Vault ועל הגדרות האימות.

ClientFactoryWrapper חושף את המפעל הזה לתשתית ה-bootstrap של Vault; הוא אינו מתקין ברירת מחדל ברמת היישום עבור לקוחות HTTP לא קשורים.

השתמש בערכת התלויות התואמת של Cloud Vault/Boot של הפרויקט. לא ניתן להעתיק דוגמאות של Apache 4 אל מפעל הבקשות Apache 5 של Spring Framework 6.

הפוך את כתובת הפרוקסי לזמינה גם לפני ה-bootstrap. עבור שרת Vault הנגיש לציבור בנתיב שמתיר פרוקסי ציבוריים, בחר מועמד HTTP מתוך רשימת פרוקסי ה-HTTP לפני הפעלת היישום. אם הוא נשמר רק ב-Vault, היישום לא יוכל לגלות את הנתיב הדרוש לבקשת ה-Vault הראשונה הזו.

מאמרים קשורים