From 39b9e57dba2f60dccd365038a0bef6e238af0bb5 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 20 May 2022 12:06:17 +0200 Subject: [PATCH] Build against Spring Vault 3.0 snapshots See gh-644 --- docs/src/main/asciidoc/authentication.adoc | 2 +- spring-cloud-vault-config/pom.xml | 28 ++++++------------- .../config/ClientAuthenticationFactory.java | 27 ++++++++---------- ...strapPropertySourceConfigurationTests.java | 4 +-- .../vault/util/TestRestTemplateFactory.java | 2 +- spring-cloud-vault-dependencies/pom.xml | 2 +- 6 files changed, 25 insertions(+), 40 deletions(-) diff --git a/docs/src/main/asciidoc/authentication.adoc b/docs/src/main/asciidoc/authentication.adoc index d5056ceb..f30a5ab4 100644 --- a/docs/src/main/asciidoc/authentication.adoc +++ b/docs/src/main/asciidoc/authentication.adoc @@ -353,7 +353,7 @@ If one is not supplied then the friendly name of the current IAM user will be us * `server-name` sets the value to use for the `X-Vault-AWS-IAM-Server-ID` header preventing certain types of replay attacks. * `endpoint-uri` sets the value to use for the AWS STS API used for the `iam_request_url` parameter. -AWS-IAM requires the AWS Java SDK dependency (`com.amazonaws:aws-java-sdk-core`) as the authentication implementation uses AWS SDK types for credentials and request signing. +AWS-IAM requires the AWS Java SDK v2 dependency (`software.amazon.awssdk:auth`) as the authentication implementation uses AWS SDK types for credentials and request signing. See also: https://www.vaultproject.io/docs/auth/aws.html[Vault Documentation: Using the aws auth backend] diff --git a/spring-cloud-vault-config/pom.xml b/spring-cloud-vault-config/pom.xml index 1e5e30a2..5842a30b 100644 --- a/spring-cloud-vault-config/pom.xml +++ b/spring-cloud-vault-config/pom.xml @@ -96,24 +96,20 @@ io.projectreactor.netty reactor-netty true + + + io.projectreactor.netty + reactor-netty-http-brave + + - com.amazonaws - aws-java-sdk-core + software.amazon.awssdk + auth + 2.17.195 true - 1.11.865 - - - software.amazon.ion - ion-java - - - com.fasterxml.jackson.dataformat - jackson-dataformat-cbor - - @@ -130,12 +126,6 @@ true - - com.google.cloud - google-cloud-iamcredentials - true - - com.google.cloud google-cloud-iamcredentials diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/ClientAuthenticationFactory.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/ClientAuthenticationFactory.java index 71635e70..e78966e1 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/ClientAuthenticationFactory.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/ClientAuthenticationFactory.java @@ -22,9 +22,9 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.concurrent.atomic.AtomicReference; -import com.amazonaws.auth.AWSCredentials; -import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; +import software.amazon.awssdk.auth.credentials.AwsCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import org.springframework.beans.BeanUtils; import org.springframework.boot.system.SystemProperties; @@ -277,7 +277,7 @@ class ClientAuthenticationFactory { AwsIamProperties awsIam = vaultProperties.getAwsIam(); - AWSCredentialsProvider credentialsProvider = AwsCredentialProvider.getAwsCredentialsProvider(); + AwsCredentialsProvider credentialsProvider = AwsCredentialProvider.getAwsCredentialsProvider(); AwsIamAuthenticationOptionsBuilder builder = AwsIamAuthenticationOptions.builder(); @@ -429,32 +429,27 @@ class ClientAuthenticationFactory { private static class AwsCredentialProvider { - private static AWSCredentialsProvider getAwsCredentialsProvider() { + private static AwsCredentialsProvider getAwsCredentialsProvider() { - DefaultAWSCredentialsProviderChain backingCredentialsProvider = DefaultAWSCredentialsProviderChain - .getInstance(); + DefaultCredentialsProvider backingCredentialsProvider = DefaultCredentialsProvider.create(); // Eagerly fetch credentials preventing lag during the first, actual login. - AWSCredentials firstAccess = backingCredentialsProvider.getCredentials(); + AwsCredentials firstAccess = backingCredentialsProvider.resolveCredentials(); - AtomicReference once = new AtomicReference<>(firstAccess); + AtomicReference once = new AtomicReference<>(firstAccess); - return new AWSCredentialsProvider() { + return new AwsCredentialsProvider() { @Override - public AWSCredentials getCredentials() { + public AwsCredentials resolveCredentials() { if (once.compareAndSet(firstAccess, null)) { return firstAccess; } - return backingCredentialsProvider.getCredentials(); + return backingCredentialsProvider.resolveCredentials(); } - @Override - public void refresh() { - backingCredentialsProvider.refresh(); - } }; } diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultBootstrapPropertySourceConfigurationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultBootstrapPropertySourceConfigurationTests.java index 5c119041..1b7946f2 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultBootstrapPropertySourceConfigurationTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultBootstrapPropertySourceConfigurationTests.java @@ -51,14 +51,14 @@ public class VaultBootstrapPropertySourceConfigurationTests { .withPropertyValues("spring.cloud.vault.kv.enabled=false", "spring.cloud.vault.config.lifecycle.expiry-threshold=5m", "spring.cloud.vault.config.lifecycle.min-renewal=6m", - "spring.cloud.vault.config.lifecycle.lease-endpoints=SysLeases", + "spring.cloud.vault.config.lifecycle.lease-endpoints=Leases", "spring.cloud.bootstrap.enabled=true") .run(context -> { SecretLeaseContainer container = context.getBean(SecretLeaseContainer.class); verify(container).setExpiryThreshold(Duration.ofMinutes(5)); verify(container).setMinRenewal(Duration.ofMinutes(6)); - verify(container).setLeaseEndpoints(LeaseEndpoints.SysLeases); + verify(container).setLeaseEndpoints(LeaseEndpoints.Leases); }); } diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java index eace8066..68e3ad29 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java @@ -22,9 +22,9 @@ import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.util.Assert; +import org.springframework.vault.client.ClientHttpRequestFactoryFactory; import org.springframework.vault.client.VaultClients; import org.springframework.vault.client.VaultEndpoint; -import org.springframework.vault.config.ClientHttpRequestFactoryFactory; import org.springframework.vault.support.ClientOptions; import org.springframework.vault.support.SslConfiguration; import org.springframework.web.client.RestTemplate; diff --git a/spring-cloud-vault-dependencies/pom.xml b/spring-cloud-vault-dependencies/pom.xml index 4bf02d1f..d83615ae 100644 --- a/spring-cloud-vault-dependencies/pom.xml +++ b/spring-cloud-vault-dependencies/pom.xml @@ -20,7 +20,7 @@ Spring Cloud Vault Dependencies - 2.3.2 + 3.0.0-SNAPSHOT