VaultSharp调用HashiCorp Vault KV V2接口报no handler for route错误如何解决
问题原因
VaultSharp 的 KV V2 接口默认会自动将默认挂载路径kv-v2/data/拼接在用户传入的路径前,不需要手动添加挂载路径和data段。
你将 KV V2 引擎的自定义挂载路径设为了niv,而非默认的kv-v2,同时调用ReadSecretAsync时传入了完整路径niv/data/foo,最终拼接出的请求路径为kv-v2/data/niv/data/foo,和实际有效的路径/v1/niv/data/foo不符,因此触发路由不存在的报错。
解决方案
需要做两处修改即可解决问题:
- 初始化配置时显式指定 KV V2 引擎的自定义挂载路径为
niv,覆盖默认的kv-v2 - 调用读写接口时仅传入密钥的相对路径,不需要额外添加挂载路径、
data前缀
修改后的正确代码如下:
using VaultSharp; using VaultSharp.V1.AuthMethods; using VaultSharp.V1.AuthMethods.Token; IAuthMethodInfo authMethod = new TokenAuthMethodInfo("myroot"); var vaultClientSettings = new VaultClientSettings("http://192.168.8.110:31476/", authMethod); // 显式指定自定义的KV V2挂载路径 vaultClientSettings.V1.Secrets.KeyValue.V2.MountPoint = "niv"; IVaultClient vaultClient = new VaultClient(vaultClientSettings); // 仅传入密钥名称即可,无需拼接前缀 var secret = vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync("foo").Result.Data;
内容的提问来源于stack exchange,提问作者Optimus Prime
相关产品推荐
相关产品推荐

