All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.msk.auth.iam.internals.EnhancedProfileCredentialsProvider Maven / Gradle / Ivy

package software.amazon.msk.auth.iam.internals;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.BasicSessionCredentials;
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.profiles.ProfileFile;

/**
 * This credential provider delegates to the v2 ProfileCredentialProvider so that users
 * are able to use Single Sign On credentials and also get more standard credential loading
 * behavior.
 * See https://github.com/aws/aws-sdk-java/issues/803#issuecomment-593530484
 */
public class EnhancedProfileCredentialsProvider implements AWSCredentialsProvider {
    private final ProfileCredentialsProvider delegate;

    public EnhancedProfileCredentialsProvider() {
        delegate = ProfileCredentialsProvider.create();
    }

    public EnhancedProfileCredentialsProvider(String profileName) {
        delegate = ProfileCredentialsProvider.create(profileName);
    }

    public EnhancedProfileCredentialsProvider(ProfileFile profileFile, String profileName) {
        delegate = ProfileCredentialsProvider.builder().profileFile(profileFile).profileName(profileName).build();
    }

    @Override
    public AWSCredentials getCredentials() {
        software.amazon.awssdk.auth.credentials.AwsCredentials credentialsV2 = delegate.resolveCredentials();
        if (credentialsV2 instanceof AwsSessionCredentials) {
            AwsSessionCredentials sessionCredentialsV2 = (AwsSessionCredentials) credentialsV2;
            return new BasicSessionCredentials(sessionCredentialsV2.accessKeyId(),
                    sessionCredentialsV2.secretAccessKey(), sessionCredentialsV2.sessionToken());
        }

        return new BasicAWSCredentials(credentialsV2.accessKeyId(), credentialsV2.secretAccessKey());
    }

    @Override
    public void refresh() {
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy