如何使用java/spring boot读取Vault kv

2024-03-29

我正在尝试弄清楚如何使用Hashicorp's Vault与弹簧靴。

最初,我尝试遵循该指南:

https://spring.io/guides/gs/vault-config/#scratch https://spring.io/guides/gs/vault-config/#scratch

但由于 api 更改,我在 Vault CLI 中使用了以下命令:

vault kv put secret/gs-vault-config example.username=demouser example.password=demopassword

它保存了两者,我可以使用以下命令检索它

vault kv get secret/gs-vault-config

然后我创建了Application.java and MyConfiguration.java如指南中所述。起初,我在没有运行 Vault 服务器的情况下运行该程序,这导致了connection refused。 然后我启动了 Vault 服务器并从 CLI 输入用户名和密码。从日志中我可以看到它实际上进入了应用程序并写出在这里,我们咕咕

@SpringBootApplication
public class Application implements CommandLineRunner {

@Autowired
private VaultTemplate vaultTemplate;

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

@Override
public void run(String... strings) throws Exception {

    // You usually would not print a secret to stdout
    System.out.println("Here we gooooo");
    VaultResponse response = vaultTemplate.read("secret/gs-vault-config");
    System.out.println("Value of username");
    System.out.println("-------------------------------");
    System.out.println(response.getData().get("example.username"));
    System.out.println("-------------------------------");
    System.out.println();

但我无法从 Vault 检索任何数据 - 可能是由于 V1 与 V2 问题

2018-08-30 17:10:07.375 ERROR 21582 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:800) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:781) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    at hello.Application.main(Application.java:23) [classes!/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [gs-vault-config-0.1.0.jar:na]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [gs-vault-config-0.1.0.jar:na]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [gs-vault-config-0.1.0.jar:na]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [gs-vault-config-0.1.0.jar:na]
Caused by: java.lang.NullPointerException: null
    at hello.Application.run(Application.java:34) [classes!/:na]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
    ... 13 common frames omitted

有谁知道是否有类似的指南spring-boot从使用 kv 引擎输入的保管库检索数据的代码片段?


我在这个页面中偶然发现了一条注释:https://cloud.spring.io/spring-cloud-vault/multi/multi_vault.config.backends.html https://cloud.spring.io/spring-cloud-vault/multi/multi_vault.config.backends.html

我在其中说: Spring Cloud Vault 在挂载路径和实际上下文路径之间添加数据/上下文

所以我尝试将代码更改为:

VaultResponse response = vaultTemplate.read("/secret/data/gs-vault-config");

然后它就起作用了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用java/spring boot读取Vault kv 的相关文章

随机推荐

  • “值”应该是 Kendo Angular DatePicker 中有效的 JavaScript Date 实例

    kendo DatePicker 的绑定出现错误 值 应该是有效的 JavaScript Date 实例 我在 asp core 中获取学生的 Web api 是 HttpGet Route api master id public Jso
  • 循环遍历指定文件夹中的所有 Excel 文件并从特定单元格中提取数据的代码

    我有大约 50 个左右的 Excel 工作簿 需要从中提取数据 我需要从特定单元格 特定工作表中获取数据并编译成一个数据集 最好是另一个 Excel 工作簿 我正在寻找一些 VBA 以便可以将结果编译到我用来运行代码的工作簿中 因此 我需要
  • iOS9 的 UILocalNotification 问题

    从iOS9开始 本地通知无法正常工作 有时用户会收到通知 有时则不会 我的通知每天都会重复 知道什么可能导致这个问题吗 我看到一些帖子说iOS9有一个bug 但我不确定这就是原因 这是一段代码 NSDate alarmDate date d
  • 如何保证两个div的高度相同?

    假设我在包装器中有 2 个并排的 div div div div div div div primary width 50 float left secondary width 50 如何确保 div secondary 始终与 div m
  • 正则表达式避免了Java中不必要的回溯

    你好 我是正则表达式世界的新手 我想在 Java 测试字符串中提取时间戳 位置和 id str 字段 20110302140010915 user is translator false show all inline media fals
  • postgresql 删除重复行

    我只想删除具有相同名称的重复行 但我想保留这些行的值高于其他行 问题是 当我执行代码时 所有重复的行都被删除 并且没有一个被保留 为什么这样 SELECT name from select name ROW NUMBER OVER PART
  • 反应路由器中的查询字符串

    我正在尝试使用查询字符串设置路由路径 内容如下 www mywebsite com results query1 query1 query2 query2 query3 query3 我会像这样过渡到 结果 组件
  • 锚链接在 iPad 上无法正常工作

    我们在 iPad 上遇到了固定元素的问题 您可以在这里查看我们的布局 http cibology edoardobiasini it http cibology edoardobiasini it The position fixed右侧的
  • 十六进制浮点文字中的十六进制“E/e”与指数形式的“E/e”如何区分?

    在 C 中 如果我想要一个浮点文字 x 为十六进制形式并具有指数值 它将表示为 float x 0X2aE 10 其中0x用于表示它是十六进制的 2a用于表示十六进制字符 E 10用于表示十的10次方的数字 然而 编译器是否知道它不是 2a
  • 为什么当我在 switch 语句中为每个枚举常量都有情况时,我仍然必须提供默认值吗? [复制]

    这个问题在这里已经有答案了 我试图在 Java 中声明一个枚举 并在 switch 语句中使用该类型的变量 其中涵盖了该类型枚举常量的所有可能情况 enum MyEnum FOO BAR private static void test M
  • 按版本对字符串列表进行排序

    我有一个字符串列表 每个字符串都遵循模式 Path UpdateTo Version Order 我需要对列表进行排序 使最低版本号位于顶部 如果存在多个具有相同版本号的文件 则附加一个可选的顺序参数 如果任何字符串上存在订单 那么它应该出
  • 以 cm 为单位调整图像大小 C#

    我有一个要求 要求提供 10 X 6 88 厘米的图像 我知道我不能简单地将厘米转换为像素 因为一个像素大小取决于用户显示分辨率 我想知道是否有办法调整图像大小以达到该尺寸 以厘米为单位 我还需要保留图像扩展名 例如 无法将其转换为 pdf
  • 在hive中如何将字符串转换为数组?

    我使用的是蜂巢1 1 hive gt select country from releases limit 1 OK us ca fr 目前 国家在 hive 中是字符串类型 如何将其转换为数组 String 我尝试了下面的方法 但它抛出错
  • Spring MVC 中的嵌套异常处理

    我收到以下错误 org springframework web util NestedServletException 请求处理失败 嵌套异常是 java lang NullPointerException 为了在控制器中处理这个问题 我使
  • 如何将钩子添加到 uberjar 进程中(使用 lein 构建)

    我想向 uberjar 进程添加一个钩子 具体示例是将 maxmind geoip dat 文件下载到资源文件夹中 以便每次部署时都会将更新版本捆绑到 jar 中 示例 建议表示赞赏 谢谢 我建议创建一个调用 uberjar 的自定义 le
  • 将查询结果从 BigQuery 导出到 Postgres

    我正在尝试导出 BigQuery 中的查询结果 并将数据导入 Postgres 数据可能多达 2 5 亿条记录 约 26Gb 选项1 将查询结果保存到临时表 将表导出为 csv 批量更新插入到 postgres 这会很慢 选项2 以某种方式
  • EhCache和数据库刷新

    我正在使用 Spring 和 ehcache 使用查询将数据填充到缓存中 此过程必须每 10 分钟发生一次 有配置可以设置吗 提前致谢 通常 ehCache 将用于给出一个 ttl 以自动使缓存失效 根据我从您的问题中收集到的信息 您要求每
  • 需要在SQL Server 2008中使用CTC来实现业务需求

    对小规模的实施会有很大的帮助SP以满足以下要求 业务规则是 EndDate 应该是下一个规则的开始日期 否则规则不应该是 视为连续的 并将被视为其他规则系列 如 在下面的示例中显示有两个系列 因为第四个系列 它已经打破了记录 RuleId
  • 如何使用 Fish shell 设置宝石路径?

    如何使用 Fish shell 正确设置宝石路径 sanoy nice system D c h bellevue gt gem 安装包 警告 您的 PATH 中没有 home sanoy gem ruby 2 2 0 bin gem 可执
  • 如何使用java/spring boot读取Vault kv

    我正在尝试弄清楚如何使用Hashicorp s Vault与弹簧靴 最初 我尝试遵循该指南 https spring io guides gs vault config scratch https spring io guides gs v