このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Vault 4.0.2 を使用してください!

HTTP クライアントのサポート

Spring および Vault は、Vault の HTTP API にアクセスするための様々な HTTP クライアントをサポートしています。Spring および Vault は、VaultClient (Javadoc) をプライマリインターフェースとして使用し、Vault にアクセスします。VaultClient は拡張性を考慮して設計されており、RestClient と同様の設計に基づいて様々な HTTP クライアントをプラグインできます。専用クライアントのサポートは、Spring および Vault のクライアントコンポーネントのみに適用されるカスタマイズされた SSL 構成に基づいています。

Spring Vault は、次の HTTP 命令型クライアントをサポートしています。

  • Java の組み込み HttpClient (他に利用可能なクライアントがない場合のデフォルトのクライアント)

  • Apache Http コンポーネント

  • Reactor Netty

  • Jetty

Spring Vault のリアクティブ統合は、次のリアクティブ HTTP クライアントをサポートします。

  • Java の組み込みリアクティブ HttpClient (他に利用可能なクライアントがない場合のデフォルトのクライアント)

  • Apache Http コンポーネント

  • Reactor Netty

  • Jetty

特定のクライアントを使用するには、Spring Vault が Vault との通信に使用可能なクライアントを使用できるように、クラスパス上で使用可能な依存関係が必要です。

Java の組み込み HttpClient

Java の組み込み HttpClient は、追加の依存関係なしで Java 11 以降すぐに使用できます。

外部クライアント

外部クライアントを使用して Vault の API にアクセスできます。以下の依存関係のいずれかをプロジェクトに追加するだけです。

例 1: Apache Http コンポーネントの依存関係
<dependency>
  <groupId>org.apache.httpcomponents.client5</groupId>
  <artifactId>httpclient5</artifactId>
</dependency>
Apache HttpClient のワイヤログ [Apache] (英語) は、ログ設定を通じて有効にできます。ログによってアプリケーションと Vault 間のトラフィック (トークンとシークレット) がプレーンテキストで公開される可能性があるため、誤ってワイヤログを有効にしないようにしてください。
例 2: Reactor Netty
<dependency>
  <groupId>io.projectreactor.netty</groupId>
  <artifactId>reactor-netty</artifactId>
</dependency>
例 3: Apache Http コンポーネントのリアクティブ依存性
<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 構成

SSL は、さまざまなプロパティを設定することで、SslConfiguration (Javadoc) を使用して構成できます。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 (Javadoc) の提供は、Apache Http コンポーネントがクラスパス上にある場合にのみ適用できることに注意してください。

SSL 構成は、Java キーストアの代替として PEM エンコードされた証明書もサポートします。

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

PEM ファイルには 1 つ以上の証明書 ( -----BEGIN CERTIFICATE----- および -----END CERTIFICATE----- のブロック) が含まれる場合があります。基礎となる KeyStore に追加された証明書は、完全なサブジェクト名を別名として使用します。