Spring boot cloud vault 更新到 3.0.3 版本后不再加载属性

Posted

技术标签:

【中文标题】Spring boot cloud vault 更新到 3.0.3 版本后不再加载属性【英文标题】:Spring boot cloud vault does not load properties anymore after update to version 3.0.3 【发布时间】:2021-11-06 23:59:06 【问题描述】:

我面临与bootstrap.yml configuration not processed anymore with Spring Cloud 2020.0 相同的问题。 我将 spring boot cloud 更新到了 3.0.3 版本。我的配置是:

spring:
  config:
    import: vault://
   cloud:
    vault:
      enabled: true
      uri: $uri
      authentication: APPROLE
      kv:
        enabled: true
        backend: secrets
        application-name: $path
      generic:
        enabled: false
      app-role:
        role-id: $role_id
        secret-id: $secret_id

连接设置似乎没问题,因为有一些“权限被拒绝”的日志条目(此保管库的路径无效)

Vault 位置 [secrets/application/develop] 无法解析:状态 403 禁止 [秘密/数据/应用程序/开发]:发生 1 个错误:* 没有权限 ;嵌套异常是 org.springframework.web.client.HttpClientErrorException$Forbidden: 403 禁止:["errors":["发生1个错误:\n\t*权限 拒绝\n\n"]

有什么提示吗?

【问题讨论】:

也许这篇文章会对你有所帮助gitmemory.com/issue/spring-cloud/spring-cloud-vault/452/… 感谢您的提示,但我在更新之前已经有了这种日志。 【参考方案1】:

我发现了问题。在 spring.cloud.vault.kv.application-name 中定义 application-name 时,它​​不起作用。它必须定义为 spring.cloud.vault.application-name 但根据https://github.com/spring-cloud/spring-cloud-vault/blob/main/docs/src/main/asciidoc/secret-backends.adoc 它也应该适用于 spring.cloud.vault.kv.application-name....

spring:
  config:
    import: vault://
   cloud:
    vault:
      enabled: true
      uri: $uri
      authentication: APPROLE
      application-name: $path
      kv:
        enabled: true
        backend: secrets
      generic:
        enabled: false
      app-role:
        role-id: $role_id
        secret-id: $secret_id

【讨论】:

以上是关于Spring boot cloud vault 更新到 3.0.3 版本后不再加载属性的主要内容,如果未能解决你的问题,请参考以下文章

在 Pivotal Cloud Foundry 上为 Spring Boot 应用程序外部化 Vault 令牌/后端配置

如何允许 Spring Boot 应用程序使用具有 Spring Cloud 依赖关系的自定义 jar

Spring Cloud Vault:令牌(spring.cloud.vault.token)不能为空

Spring Cloud Vault 和带有 Vault 后端的 Spring Cloud Config 之间的区别

将密钥添加到 Spring Boot 保险库

引起:java.lang.IllegalArgumentException:令牌(spring.cloud.vault.token)不能为空 - Hashicorp Vault