使用Spring Vault 2.1.2,我无法升级。我正在将AbstractReactiveVaultConfiguration配置为使用KubernetesAuthentication。
@Configuration
public class VaultConfiguration extends AbstractReactiveVaultConfiguration {
@Value("${my.vault.endpoint.url}")
private URI vaultEndpointURL;
@Override
public VaultEndpoint vaultEndpoint() {
return VaultEndpoint.from(vaultEndpointURL);
}
@Override
public ClientAuthentication clientAuthentication() {
KubernetesAuthenticationOptions options = KubernetesAuthenticationOptions.builder()
.role("myRole").path("foo/bar").build();
return new KubernetesAuthentication(options, restOperations());
}
}
正在产生:
org.springframework.vault.authentication.VaultLoginException: Cannot retrieve VaultToken from authentication chain; nested exception is org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 Bad Request
有了足够的日志记录,我发现它正在尝试发布到:
POST /v1/auth/foo%2Fbar/login
什么在转义“ foo / bar”的配置路径,如何避免这种情况?
答案 0 :(得分:0)
这是最新版本2.2.1.RELEASE的问题。弹簧拱顶。
现已修复。尚未发布新版本。
请参考相应的错误并修复here
错误原因:
以前,我们发送了两个参数来登录方法。 .login("auth/{mount}/login", options.getPath());
。在登录方法内部,此参数将提供给HttpRequestBuilder.post(uriTemplate,uriVariables),该请求将/
转换为%2F
当前,我们正在发送一个自变量AuthenticationUtil.getLoginPath(options.getPath())
,这不会将/
转换为%2F
。
我们可以将此问题提交给spring-vault,并要求他们发布下一个版本。