Skip to content

Since 2.31.60: Auth failure after update from 2.31.57 #6168

@spyro2000

Description

@spyro2000

Describe the bug

We did an update of AWS SDK2 over the weekend from 2.31.57 to 2.31.60.

After that, we were not able to authenticate against AWS RDS services anymore. After rolling back to .57 it worked again.

These were the dependencies in question:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>rds</artifactId>
    <version>${aws.sdk.version}</version>
</dependency>

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>sts</artifactId>
    <version>${aws.sdk.version}</version>
</dependency>

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>auth</artifactId>
    <version>${aws.sdk.version}</version>
</dependency>

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

Authentication works like in .57

Current Behavior

Error:

...
ClassNotFoundException: software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver

Stack trace:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'credentialsProvider' defined in class path resource [io/awspring/cloud/autoconfigure/core/CredentialsProviderAutoConfiguration.class]: Failed to instantiate [software.amazon.awssdk.auth.credentials.AwsCredentialsProvider]: Factory method 'credentialsProvider' threw exception with message: software/amazon/awssdk/awscore/auth/AuthSchemePreferenceResolver
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:489) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987) ~[spring-context-6.2.7.jar:6.2.7]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.7.jar:6.2.7]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.5.0.jar:3.5.0]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.5.0.jar:3.5.0]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.5.0.jar:3.5.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.5.0.jar:3.5.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) ~[spring-boot-3.5.0.jar:3.5.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) ~[spring-boot-3.5.0.jar:3.5.0]
	at com.xxx.cc.csvbe.MainSpringBootApplicationKt.main(MainSpringBootApplication.kt:42) ~[classes/:?]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
	at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.5.0.jar:3.5.0]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [software.amazon.awssdk.auth.credentials.AwsCredentialsProvider]: Factory method 'credentialsProvider' threw exception with message: software/amazon/awssdk/awscore/auth/AuthSchemePreferenceResolver
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:199) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-6.2.7.jar:6.2.7]
	... 24 more
Caused by: java.lang.NoClassDefFoundError: software/amazon/awssdk/awscore/auth/AuthSchemePreferenceResolver
	at software.amazon.awssdk.services.sts.DefaultStsBaseClientBuilder.defaultAuthSchemeProvider(DefaultStsBaseClientBuilder.java:136) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsBaseClientBuilder.lambda$mergeServiceDefaults$0(DefaultStsBaseClientBuilder.java:73) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.utils.builder.SdkBuilder.applyMutation(SdkBuilder.java:61) ~[utils-2.29.52.jar:?]
	at software.amazon.awssdk.core.client.config.SdkClientConfiguration.merge(SdkClientConfiguration.java:98) ~[sdk-core-2.29.52.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsBaseClientBuilder.mergeServiceDefaults(DefaultStsBaseClientBuilder.java:71) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder.mergeChildDefaults(AwsDefaultClientBuilder.java:137) ~[aws-core-2.29.52.jar:?]
	at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:198) ~[sdk-core-2.29.52.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsClientBuilder.buildClient(DefaultStsClientBuilder.java:36) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsClientBuilder.buildClient(DefaultStsClientBuilder.java:25) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:169) ~[sdk-core-2.29.52.jar:?]
	at io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration$StsCredentialsProviderFactory.create(CredentialsProviderAutoConfiguration.java:158) ~[spring-cloud-aws-autoconfigure-3.3.1.jar:3.3.1]
	at io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration.createCredentialsProvider(CredentialsProviderAutoConfiguration.java:108) ~[spring-cloud-aws-autoconfigure-3.3.1.jar:3.3.1]
	at io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration.credentialsProvider(CredentialsProviderAutoConfiguration.java:75) ~[spring-cloud-aws-autoconfigure-3.3.1.jar:3.3.1]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
	at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:171) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-6.2.7.jar:6.2.7]
	... 24 more
Caused by: java.lang.ClassNotFoundException: software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?]
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
	at software.amazon.awssdk.services.sts.DefaultStsBaseClientBuilder.defaultAuthSchemeProvider(DefaultStsBaseClientBuilder.java:136) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsBaseClientBuilder.lambda$mergeServiceDefaults$0(DefaultStsBaseClientBuilder.java:73) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.utils.builder.SdkBuilder.applyMutation(SdkBuilder.java:61) ~[utils-2.29.52.jar:?]
	at software.amazon.awssdk.core.client.config.SdkClientConfiguration.merge(SdkClientConfiguration.java:98) ~[sdk-core-2.29.52.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsBaseClientBuilder.mergeServiceDefaults(DefaultStsBaseClientBuilder.java:71) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder.mergeChildDefaults(AwsDefaultClientBuilder.java:137) ~[aws-core-2.29.52.jar:?]
	at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:198) ~[sdk-core-2.29.52.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsClientBuilder.buildClient(DefaultStsClientBuilder.java:36) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.services.sts.DefaultStsClientBuilder.buildClient(DefaultStsClientBuilder.java:25) ~[sts-2.31.60.jar:?]
	at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:169) ~[sdk-core-2.29.52.jar:?]
	at io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration$StsCredentialsProviderFactory.create(CredentialsProviderAutoConfiguration.java:158) ~[spring-cloud-aws-autoconfigure-3.3.1.jar:3.3.1]
	at io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration.createCredentialsProvider(CredentialsProviderAutoConfiguration.java:108) ~[spring-cloud-aws-autoconfigure-3.3.1.jar:3.3.1]
	at io.awspring.cloud.autoconfigure.core.CredentialsProviderAutoConfiguration.credentialsProvider(CredentialsProviderAutoConfiguration.java:75) ~[spring-cloud-aws-autoconfigure-3.3.1.jar:3.3.1]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
	at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:171) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168) ~[spring-beans-6.2.7.jar:6.2.7]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-6.2.7.jar:6.2.7]

Reproduction Steps

  • Update from .57 to .60
  • Use datasource like
datasource:
    driver-class-name: software.amazon.jdbc.Driver
    url: jdbc:aws-wrapper:postgresql://<baseurl>-rds.cluster-<removed>.eu-central-1.rds.amazonaws.com:5432/be
    username: <removed>
    hikari:
      data-source-properties:
        wrapperPlugins: iam,failover,efm2
        iamRegion: eu-central-1
      exception-override-class-name: software.amazon.jdbc.util.HikariCPSQLException

Possible Solution

Investigate why

software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver

seems not be found.

Additional Information/Context

No response

AWS Java SDK version used

2.31.60

JDK version used

21

Operating System and version

Linux (unknown version)

Metadata

Metadata

Assignees

Labels

bugThis issue is a bug.closed-for-stalenessp2This is a standard priority issue

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions