该版本仍在开发中,尚未被视为稳定。最新稳定版请使用Spring Vault 4.0.0spring-doc.cadn.net.cn

VaultTemplate 简介

该级别VaultTemplate,位于包中org.springframework.vault.core, 是 Spring Vault 支持的核心类别,提供了丰富的功能集 与Vault互动。该模板提供了便捷的作,方便读取、写入和 删除 Vault 中的数据,并提供你的域对象与 Vault 数据之间的映射。spring-doc.cadn.net.cn

一旦配置好,VaultTemplate是线程安全的,可以重复使用 多次。

Vault 文档与域类之间的映射通过委派至Rest模板.Spring Web 支持提供了映射基础设施。spring-doc.cadn.net.cn

VaultTemplate类实现了该接口金库运营. 尽可能地,方法在金库运营以方法命名 在 Vault API 上提供,使现有 Vault 开发者熟悉该 API 他们习惯了API和CLI。例如,你会找到以下方法 “写”、“删除”、“阅读”和“撤销”。 设计目标是尽可能方便地过渡 Vault API 的使用金库运营.两者之间的一个主要区别 这两个API是金库运营可以传递域对象,而不是 JSON 键值对。spring-doc.cadn.net.cn

使用的路径VaultTemplate(以及从那里访问的接口)都被考虑 相对于VaultEndpoint.可以使用完全合格的URI路径 在认证上下文中访问 Vault 集群成员。为了防止不受欢迎 完全访问URI,确保在传递路径前对路径进行净化VaultTemplate.spring-doc.cadn.net.cn

引用 的首选作方式VaultTemplate实例 是通过其接口金库运营.

虽然有许多便利方法,但VaultTemplate方便地帮你 如果需要直接访问Vault API,则执行常见任务 未被VaultTemplate你可以用其中之一 其中几个执行回调方法以访问底层API。执行回调 会给你一个参考休息运营对象。 更多信息请参阅“执行回访”部分。spring-doc.cadn.net.cn

现在让我们看看如何在 Spring 容器的背景下使用 Vault 的示例。spring-doc.cadn.net.cn

注册和配置Spring Vault豆子

使用 Spring Vault 不需要 Spring 上下文。然而,以下实例VaultTemplate会话管理器注册在受管上下文中的 将参与 在春季IoC容器提供的生命周期事件中。这对于处理活跃的Vault会话非常有用 应用关闭。你也可以从重复使用中受益VaultTemplate在你的应用中实例。spring-doc.cadn.net.cn

Spring Vault 自带一个支持的配置类,提供 bean 定义 用于 Spring 上下文。应用配置 类别通常从摘要Vault配置并且必须 提供针对特定环境的额外细节。spring-doc.cadn.net.cn

摘要Vault配置需要实现VaultEndpoint vaultEndpoint()客户端认证 clientAuthentication()方法。spring-doc.cadn.net.cn

例子1。使用基于 Java 的 Bean 元数据注册 Spring Vault 对象
@Configuration
public class AppConfig extends AbstractVaultConfiguration {

    /**
     * Specify an endpoint for connecting to Vault.
     */
    @Override
    public VaultEndpoint vaultEndpoint() {
        return new VaultEndpoint();                            (1)
    }

    /**
     * Configure a client authentication.
     * Please consider a more secure authentication method
     * for production use.
     */
    @Override
    public ClientAuthentication clientAuthentication() {
        return new TokenAuthentication("…");                   (2)
    }
}
1 创建一个新的VaultEndpoint默认指向https://localhost:8200.
2 此示例使用Tokens认证赶紧开始。 有关支持的认证方法详情,请参见 [vault.core.authentication]。
例子2。注册 Spring Vault 应用注入属性
@Configuration
public class AppConfig extends AbstractVaultConfiguration {

    @Value("${vault.uri}")
    URI vaultUri;

    /**
     * Specify an endpoint that was injected as URI.
     */
    @Override
    public VaultEndpoint vaultEndpoint() {
        return VaultEndpoint.from(vaultUri);                          (1)
    }

    /**
     * Configure a Client Certificate authentication.
     * {@link RestOperations} can be obtained from {@link #restOperations()}.
     */
    @Override
    public ClientAuthentication clientAuthentication() {
        return new ClientCertificateAuthentication(restOperations()); (2)
    }
}
1 VaultEndpoint可以通过各种工厂方法构建,例如来自(URI uri)VaultEndpoint.create(String host, int port).
2 的依赖关系客户端认证方法可以通过以下方式获得摘要Vault配置或者由你的配置提供。
在某些情况下,创建自定义配置类可能会很繁琐。 看看EnvironmentVaultConfiguration允许配置,方法是使用 现有房产来源及斯普林的房产环境.阅读更多 在EnvironmentVaultConfiguration.

会话管理

春季金库需要客户端认证登录并访问Vault。 关于认证的详细信息请参见 [vault.core.authentication]。 Vault 登录不应在每次认证后的 Vault 交互中发生,但 必须在整个会话中重复使用。这一方面由会话管理器实现。一个会话管理器决定它多频繁 获得一个关于撤销和续期的Tokens。Spring Vault 包含两种实现方式:spring-doc.cadn.net.cn

EnvironmentVaultConfiguration

春季金库包括EnvironmentVaultConfiguration从 Spring 配置 Vault 客户端环境以及一组预定义的 财产钥匙。EnvironmentVaultConfiguration支持频繁应用的配置。其他配置可由最合适的配置类推导而来。 包括EnvironmentVaultConfiguration@Import(EnvironmentVaultConfiguration.class)现存 基于 Java 的配置类,并通过 Spring 的任何一个提供配置属性地产来源s.spring-doc.cadn.net.cn

例子3。使用 EnvironmentVaultConfiguration 与属性文件
基于Java的配置类
@PropertySource("vault.properties")
@Import(EnvironmentVaultConfiguration.class)
public class MyConfiguration{
}
vault.properties(金库.properties)
vault.uri=https://localhost:8200
vault.token=00000000-0000-0000-0000-000000000000

认证专用属性密钥spring-doc.cadn.net.cn

没有配置选项。spring-doc.cadn.net.cn

执行回调

所有 Spring 模板类的一个共同设计特征是所有功能都被路由到某个模板执行回调方法中。 这有助于确保异常和可能需要的资源管理执行一致。 虽然JDBC和JMS在这方面的需求远大于Vault,但它仍然提供了一个单一的访问和日志记录点。 因此,使用执行回调是访问 Vault API 的首选方式 执行我们未公开的方法的罕见作VaultTemplate.spring-doc.cadn.net.cn

以下是执行回调方法的列表。spring-doc.cadn.net.cn

  • <T> T doWithVault (RestOperationsCallback<T>回调)执行给定的休息作回调,允许通过以下方式与Vault交互。休息运营不需要进行治疗。spring-doc.cadn.net.cn

  • <T> T doWithSession (RestOperationsCallback<T>回调)执行给定的休息作回调允许在认证会话中与Vault交互。spring-doc.cadn.net.cn

这里有一个使用以下条件的例子客户回调初始化Vault:spring-doc.cadn.net.cn

vaultOperations.doWithVault(new RestOperationsCallback<VaultInitializationResponse>() {

  @Override
  public VaultInitializationResponse doWithRestOperations(RestOperations restOperations) {

    ResponseEntity<VaultInitializationResponse> exchange = restOperations
                       .exchange("/sys/init", HttpMethod.PUT,
                                 new HttpEntity<Object>(request),
                                 VaultInitializationResponse.class);

    return exchange.getBody();
    }
});