此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Vault 3.2.0spring-doc.cadn.net.cn

客户支持

Spring Vault 支持各种 HTTP 客户端访问 Vault 的 HTTP API。Spring Vault 使用RestTemplate作为访问 Vault 的主接口。 专用客户端支持源自自定义的 SSL 配置,该配置仅限于 Spring Vault 的客户端组件。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 的内置HttpClient

Java 的内置HttpClient从 Java 11 开始开箱即用,无需额外的 依赖。spring-doc.cadn.net.cn

外部客户端

您可以使用外部客户端访问 Vault 的 API。只需添加以下内容之一 依赖项。如果使用 Spring Vault 的依赖项 BOM,则可以省略版本号spring-doc.cadn.net.cn

示例 1.Apache Http 组件依赖项
<dependency>
  <groupId>org.apache.httpcomponents.client5</groupId>
  <artifactId>httpclient5</artifactId>
</dependency>
Apache HttpClient 的线路日志可以通过日志记录配置来启用。确保不要意外启用有线日志记录,因为日志可能会以纯文本形式暴露应用程序和 Vault 之间的流量(Tokens和密钥)。
示例 2.反应器网
<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通过设置各种属性。 您可以设置javax.net.ssl.trustStore配置 JVM 范围的 SSL 设置或配置SslConfiguration仅为 Spring Vault 设置 SSL 设置。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 组件位于您的类路径上时应用。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 文件可能包含一个或多个证书(-----BEGIN CERTIFICATE----------END CERTIFICATE-----). 添加到基础KeyStore使用完整的主题名称作为别名。spring-doc.cadn.net.cn