Spring Vault Kubernetes Auth 不接受自定义安装路径

Spring Vault Kubernetes Auth not accepting custom mount path

使用 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 到:

POST /v1/auth/foo%2Fbar/login

什么在逃避配置的 "foo/bar" 路径,如何避免?

这是最新版本 2.2.1.RELEASE 的问题。 spring-保险库。

现已修复。尚未发布新版本。

参考错误并修复 here

错误原因:

之前,我们向登录方法发送两个参数.login("auth/{mount}/login", options.getPath());。在登录方法内部,此参数将提供给 HttpRequestBuilder.post(uriTemplate, uriVariables),它正在将 / 转换为 %2F

目前,我们正在发送一个参数AuthenticationUtil.getLoginPath(options.getPath()),这个不会/转换为%2F

我们可以将此问题提交给 spring-vault 并要求他们发布下一个版本。