启动vault服务
首先需要启动一个vault服务器。启动的方式挺简单的,就是去官网下载一个vault的exe执行器(因为本人的电脑是windows,所以只说windows的,其他的可以去vault官网看文档),然后在当前目录打开PowerShell,执行
.\vault server -dev
详细的可以看这篇文章。
导入依赖
新建一个springboot工程,然后导入vault依赖。
<dependency>
<groupId>org.springframework.vault</groupId>
<artifactId>spring-vault-core</artifactId>
<version>2.3.1</version>
</dependency>
新建一个Secrets类
/**
* 简单的pojo类
*/
public class Secrets {
public String username;
public String password;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
进行测试
@SpringBootTest
class DemoApplicationTests {
static VaultTemplate vaultTemplate;
@BeforeEach
void before() {
//指定vault服务的地址,这里需要在本地启动vault服务,这里启动的只是开发模式
URI uri = URI.create("http://127.0.0.1:8200");
/** 还有就是这里的参数不能直接new VaultEndpoint(),然后再设置host或者port啥的,
因为VaultEndpoint默认的scheme为https,然后本地的服务是http的,所以访问不了的。 **/
vaultTemplate = new VaultTemplate(VaultEndpoint.from(uri),
//这里填入自己的token,因为是开发模式,所以这里填入的是root token,后面的生产环境可以进行权限细分
new TokenAuthentication("s.ThO3hz9Faq0oRCC6LlVQdMAF"));
}
@Test
void contextLoads() {
}
/**
* 测试简单的kv加密引擎的使用
*/
@Test
void testKvVault() {
Secrets secrets = new Secrets();
secrets.username = "hello";
secrets.password = "world";
/**
* 这里有个大坑,开发者模式下默认是有一个“/secret”的path的,这个path用通用的读写指令"write/read"都不行,其他path
* 都可以,在终端也是一样,需要用"kv put"和"kv get"才行,暂时不知道为什么.
*/
vaultTemplate.write("kvdemo/myapp", secrets);
VaultResponseSupport<Secrets> response = vaultTemplate.read("kvdemo/myapp", Secrets.class);
System.out.println(response.getData().getUsername());
}
/**
* 测试简单的kv加密引擎的使用
*/
@Test
void testVault_list() {
//查询指定path下的子path
System.out.println(vaultTemplate.list("kvdemo"));
}
}