Java HTTP 503错误:以编程方式尝试从Hashicorp';获取数据;s拱顶(v1.5.5)
我试图以编程方式从Hashi Vault(v1.5.5)获取数据,但无论我如何尝试发送Vault API请求(通过spring boot webclient,通过spring.Vault模板),都会不断收到HTTP 503错误。当我检查vault的状态时,它处于初始化和未密封状态。在Vault UI中,我可以查看要访问的数据。当我使用curl(见下文)时,我可以获取数据。当我将cli用于vault时,我可以获取数据 从我所看到的所有示例来看,这很简单,但我想知道我是否在编程方面遗漏了一些东西。。。假设。。。比如,我的代码必须发出自己的请求才能打开保险库???为了消除身份验证/权限问题,我使用根令牌。我真的很感激任何建议或想法,因为我已经用完了! 感谢您花时间关注我的问题Java HTTP 503错误:以编程方式尝试从Hashicorp';获取数据;s拱顶(v1.5.5),java,spring,spring-cloud,spring-webflux,hashicorp-vault,Java,Spring,Spring Cloud,Spring Webflux,Hashicorp Vault,我试图以编程方式从Hashi Vault(v1.5.5)获取数据,但无论我如何尝试发送Vault API请求(通过spring boot webclient,通过spring.Vault模板),都会不断收到HTTP 503错误。当我检查vault的状态时,它处于初始化和未密封状态。在Vault UI中,我可以查看要访问的数据。当我使用curl(见下文)时,我可以获取数据。当我将cli用于vault时,我可以获取数据 从我所看到的所有示例来看,这很简单,但我想知道我是否在编程方面遗漏了一些东西。。
vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 1.5.5
Cluster Name vault-cluster-435e5f26
Cluster ID c1b269b8-4a9a-5e9c-e468-85e2e55eb261
HA Enabled true
HA Cluster https://192.168.0.3:8201
HA Mode active
是
http://localhost:8200
与VAULT\u ADDR
相同吗?是的,奇怪的是,在使用VAULT cli和curl时,相同的uri可以工作。。。我知道v2键值引擎需要插入“数据”,但我不知道这是否是问题所在……我使用com.bettercloud.vault.vault重复了我的实验,当使用v2 kv引擎时,它会自动解释“数据”,并得到相同的结果。我不会切换到另一台计算机,看看会发生什么…你的日志和异常在哪里?
vault kv list csc/tenants
Keys
----
dev:111122223333444422221111
abc:111111111159999999999999
def:1234asdf1234asdf1324asdf
curl --location \
-H "X-Vault-Request:true" \
-H "X-Vault-Token:${VAULT_TOKEN}" \
--request GET "${VAULT_ADDR}/v1/csc/metadata/tenants?list=true" | jq
{
"request_id": "ba228321-5b99-40f1-69f2-5b8122bc47df",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": {
"keys": [
"dev:111122223333444422221111",
"abc:111111111159999999999999",
"def:1234asdf1234asdf1324asdf"
]
},
"wrap_info": null,
"warnings": null,
"auth": null
}
// Here is the webflux.fn code that returns 503...
val wc = WebClient
.builder()
.baseUrl("http://localhost:8200")
.defaultHeaders { httpHeaders: HttpHeaders ->
httpHeaders.set("X-Vault-Request", "true")
httpHeaders.set("X-Vault-Token", "s.888888888855111111111111")
HttpHeaders.CONTENT_TYPE
MediaType.APPLICATION_JSON_VALUE
}.build()
val res = wc
.get()
.uri("/v1/csc/metadata/tenants?list=true")
.retrieve()
.bodyToFlux(VaultKvSecretResponse::class.java)
.map {
println(it.data.keys.first())
}
.subscribe()
// Here is the Spring Vault code that returns 503...
@Configuration
class AppConfig2 : AbstractVaultConfiguration() {
override fun vaultEndpoint(): VaultEndpoint = VaultEndpoint.from(URI(environment.getRequiredProperty("VAULT_ADDR"))
override fun clientAuthentication(): ClientAuthentication = TokenAuthentication(environment.getRequiredProperty("VAULT_TOKEN"))
}
@SpringBootApplication
class SbcloudApplication(
private val environment: Environment,
private val vaultTemplate: VaultTemplate
) : CommandLineRunner {
val result = vaultTemplate.list("http://localhost:8200/v1/csc/metadata/data/tenants")
}