最新の安定バージョンについては、Spring Vault 4.1.0 を使用してください! |
クライアントサポート
Spring Vault supports various HTTP clients to access Vault’s HTTP API. Spring Vault uses RestTemplate as primary interface accessing Vault. Dedicated client support originates from customized SSL configuration that is scoped only to Spring Vault’s client components.
Spring Vault は、以下の HTTP 命令型クライアントをサポートしています。
Java の組み込み
HttpURLConnection(他に利用可能なクライアントがない場合のデフォルトのクライアント)Apache Http コンポーネント
OkHttp 3
Spring Vault のリアクティブ統合は、以下のリアクティブ HTTP クライアントをサポートしています。
Java の組み込みリアクティブ
HttpClient(他に利用可能なクライアントがない場合のデフォルトのクライアント)Reactor Netty
Apache Http コンポーネント
Jetty
特定のクライアントを使用するには、対応する依存関係がクラスパス上に存在する必要があります。そうすることで、Spring Vault は利用可能なクライアントを使用して Vault と通信できます。
Java の組み込み HttpURLConnection
Java’s builtin HttpURLConnection is available out-of-the-box without additional configuration. Using HttpURLConnection comes with a limitation regarding SSL configuration. Spring Vault won’t apply customized SSL configuration as it would require a deep reconfiguration of the JVM. This configuration would affect all components relying on the default SSL context. Configuring SSL settings using HttpURLConnection requires you providing these settings as System Properties. See JSSE のカスタマイズ [Oracle] for further details.
外部クライアント
外部クライアントを使用して Vault の API にアクセスできます。次の依存関係のいずれかをプロジェクトに追加するだけです。Spring Vault’s Dependency BOM を使用する場合は、バージョン番号を省略できます。
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
</dependency>| Apache HttpClient のワイヤログ [Apache] (英語) は、ログ設定を通じて有効にできます。ログによってアプリケーションと Vault 間のトラフィック (トークンとシークレット) がプレーンテキストで公開される可能性があるため、誤ってワイヤログを有効にしないようにしてください。 |
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency><dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
</dependency><dependency>
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5-reactive</artifactId>
</dependency><dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-reactive-httpclient</artifactId>
</dependency>Vault クライアント SSL 構成
SSL は、SslConfiguration (Javadoc) を使用して各種プロパティを設定することで構成できます。JVM 全体に SSL 設定を適用する場合は javax.net.ssl.trustStore を設定し、Spring Vault のみに SSL 設定を適用する場合は SslConfiguration を設定できます。
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 コンポーネントまたは OkHttp クライアントのいずれかがクラスパス上にある場合にのみ適用できることに注意してください。
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 に追加された証明書は、完全なサブジェクト名を別名として使用します。