客戶端支援

Spring Vault 支援各種 HTTP 客戶端來訪問 Vault 的 HTTP API。Spring Vault 使用 RestTemplate 作為訪問 Vault 的主要介面。專門的客戶端支援源於 定製的 SSL 配置,該配置僅限於 Spring Vault 的客戶端元件。

Spring Vault 支援以下 HTTP 命令式客戶端

  • Java 內建的 HttpClient(如果沒有其他客戶端可用,則為預設客戶端)

  • Apache Http Components

  • Reactor Netty

  • Jetty

Spring Vault 的反應式整合支援以下反應式 HTTP 客戶端

  • Java 內建的反應式 HttpClient(如果沒有其他客戶端可用,則為預設客戶端)

  • Apache Http Components

  • Reactor Netty

  • Jetty

使用特定的客戶端要求類路徑上存在相應的依賴項,以便 Spring Vault 可以使用可用的客戶端與 Vault 進行通訊。

Java 內建的 HttpClient

Java 內建的 HttpClient 自 Java 11 起開箱即用,無需額外依賴。

外部客戶端

您可以使用外部客戶端訪問 Vault 的 API。只需將以下依賴項之一新增到您的專案中。如果使用 Spring Vault 的依賴項 BOM,您可以省略版本號

示例 1. Apache Http Components 依賴項
<dependency>
  <groupId>org.apache.httpcomponents.client5</groupId>
  <artifactId>httpclient5</artifactId>
</dependency>
Apache HttpClient 的線日誌記錄可以透過日誌配置啟用。請確保不要意外啟用線日誌記錄,因為日誌可能會以純文字形式暴露您的應用程式和 Vault 之間的流量(令牌和金鑰)。
示例 2. Reactor Netty
<dependency>
  <groupId>io.projectreactor.netty</groupId>
  <artifactId>reactor-netty</artifactId>
</dependency>
示例 3. Apache Http Components 反應式依賴項
<dependency>
  <groupId>org.apache.httpcomponents.core5</groupId>
  <artifactId>httpcore5-reactive</artifactId>
</dependency>
示例 4. Jetty
<dependency>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-reactive-httpclient</artifactId>
</dependency>

Vault 客戶端 SSL 配置

可以透過設定各種屬性,使用 SslConfiguration 來配置 SSL。您可以設定 javax.net.ssl.trustStore 以配置 JVM 範圍的 SSL 設定,或者配置 SslConfiguration 以僅為 Spring Vault 設定 SSL。

SslConfiguration sslConfiguration = SslConfiguration.create(            (1)
		new FileSystemResource("client-cert.jks"), "changeit".toCharArray(),
		new FileSystemResource("truststore.jks"), "changeit".toCharArray());

SslConfiguration.forTrustStore(new FileSystemResource("keystore.jks"),  (2)
                                      "changeit".toCharArray())

SslConfiguration.forKeyStore(new FileSystemResource("keystore.jks"),    (3)
                                      "changeit".toCharArray())

SslConfiguration.forKeyStore(new FileSystemResource("keystore.jks"),    (4)
                                      "changeit".toCharArray(),
                                      KeyConfiguration.of("key-password".toCharArray(),
                                      "my-key-alias"))
1 完整配置。
2 僅配置信任庫設定。
3 僅配置金鑰庫設定。
4 僅配置帶金鑰配置的金鑰庫設定。

請注意,提供 SslConfiguration 只能在類路徑中存在 Apache Http Components 時應用。

SSL 配置還支援 PEM 編碼的證書作為 Java 金鑰庫的替代方案。

KeyStoreConfiguration keystore = KeyStoreConfiguration
        .of(new ClassPathResource("ca.pem")).withStoreType("PEM");
SslConfiguration configuration = SslConfiguration.forTrustStore(keystore);

PEM 檔案可能包含一個或多個證書(由 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 組成的程式碼塊)。新增到底層 KeyStore 的證書使用完整的主題名稱作為別名。

© . This site is unofficial and not affiliated with VMware.