客户端支持

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.