'Getting exception GcpIamAuthentication ClientAuthentication must implement AuthenticationStepsFactory

I am using spring-boot-parent 2.6.3 and spring-vault-config 3.1.0

    <spring-vault-config.version>3.1.0</spring-vault-config.version>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-vault-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-vault-config</artifactId>
    <version>${spring-vault-config.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-iam</artifactId>
    <version>v1-rev316-1.25.0</version>
</dependency>
<dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.4.0</version>
</dependency>
<dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client</artifactId>
    <version>1.33.0</version>
</dependency>

bootstrap.yml

spring:
  config:
    activate:
      on-profile: dev
  cloud:
    vault:
      uri: https://vault url
      namespace: <namespace>
      authentication: GCP_IAM
      fail-fast: true
      connection-timeout: 3000
      read-timeout: 120000
      generic:
        enabled: true
        profile-separator: '/'
        backend: kv
        default-context: appName
        application-name: appName
      config:
        order: -1000
      gcp-iam:
        role: dev-role
        project-id: <project-id>
        service-account-id: <service-accoutn-iam.gserviceaccount.com>
      enabled: true

I am trying to connect to Vault using GCP_IAM authentication and provided service account, iam role and project details. When I start the spring boot application from my GKE cluster, I am getting the following error:

"Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reactiveVaultTemplate' defined in class path resource [org/springframework/cloud/vault/config/VaultReactiveBootstrapConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.vault.core.ReactiveVaultTemplate]: Factory method 'reactiveVaultTemplate' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reactiveVaultSessionManager' defined in class path resource [org/springframework/cloud/vault/config/VaultReactiveBootstrapConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.vault.authentication.ReactiveSessionManager]: Factory method 'reactiveVaultSessionManager' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'vaultTokenSupplier' defined in class path resource [org/springframework/cloud/vault/config/VaultReactiveBootstrapConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.vault.authentication.VaultTokenSupplier]: Factory method 'vaultTokenSupplier' threw exception; nested exception is java.lang.IllegalStateException: Cannot construct VaultTokenSupplier from org.springframework.vault.authentication.GcpIamAuthentication@16a9eb2e. ClientAuthentication must implement AuthenticationStepsFactory or be TokenAuthentication"

Can you please help me resolve this issue?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source