最新稳定版请使用Spring Vault 4.0.0spring-doc.cadn.net.cn

客户支持

Spring Vault 支持多种 HTTP 客户端访问 Vault 的 HTTP API。春季金库的用途Rest模板作为访问Vault的主要接口。 专用客户端支持源自仅针对 Spring Vault 客户端组件的定制 SSL 配置spring-doc.cadn.net.cn

Spring Vault 支持以下 HTTP 命令式客户端:spring-doc.cadn.net.cn

Spring Vault 的响应式集成支持以下响应式 HTTP 客户端:spring-doc.cadn.net.cn

使用特定客户端需要类路径上有相应的依赖 因此 Spring Vault 可以使用可用的客户端与 Vault 通信。spring-doc.cadn.net.cn

Java 内置HttpURLConnection

Java 内置HttpURLConnection开箱即用,无需额外添加 配置。用HttpURLConnectionSSL配置有限制。 Spring Vault 不会像以前那样应用自定义的 SSL 配置 需要对JVM进行深度重配置。这种配置会影响所有情况 组件依赖于默认的 SSL 上下文。使用 SSL 设置配置HttpURLConnection要求你将这些设置作为系统属性提供。详情请参见定制JSSEspring-doc.cadn.net.cn

外部客户

你可以使用外部客户端访问 Vault 的 API。只需添加以下其中一项 对项目的依赖关系。如果使用 Spring Vault 的依赖物料清单,可以省略版本号spring-doc.cadn.net.cn

例子1。Apache Http 组件依赖
<dependency>
  <groupId>org.apache.httpcomponents.client5</groupId>
  <artifactId>httpclient5</artifactId>
</dependency>
Apache Http客户端的线式日志可以通过日志配置实现。务必避免不小心启用线式日志,因为日志可能会以明文形式暴露应用与Vault之间的流量(Tokens和秘密)。
例子2。Square OkHttp 3
<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
</dependency>
例子3。反应堆Netty
<dependency>
  <groupId>io.projectreactor.netty</groupId>
  <artifactId>reactor-netty</artifactId>
</dependency>
例子4。Apache Http 组件响应式依赖
<dependency>
  <groupId>org.apache.httpcomponents.core5</groupId>
  <artifactId>httpcore5-reactive</artifactId>
</dependency>
例子5。Jetty
<dependency>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-reactive-httpclient</artifactId>
</dependency>

Vault 客户端 SSL 配置

SSL 可以配置为SslConfiguration通过设置各种属性。 你可以设置任何一种javax.net.ssl.trustStore配置 JVM范围的SSL设置或配置SslConfiguration将 SSL 设置仅用于 Spring Vault。spring-doc.cadn.net.cn

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组件或OkHttp客户端位于你的类路径上时,才能应用。spring-doc.cadn.net.cn

SSL配置还支持PEM编码的证书,作为Java密钥存储的替代方案。spring-doc.cadn.net.cn

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

PEM文件可能包含一个或多个证书(块-----证书开始----------证书结束-----). 添加到底层的证书KeyStore请使用全名作为别名。spring-doc.cadn.net.cn