in src/main/java/software/amazon/msk/auth/iam/internals/MSKCredentialProvider.java [328:355]
private Optional<StsAssumeRoleCredentialsProvider> getStsRoleProvider() {
return Optional.ofNullable(optionsMap.get(AWS_ROLE_ARN_KEY)).map(p -> {
if (log.isDebugEnabled()) {
log.debug("Role ARN {}", p);
}
String sessionName = Optional.ofNullable((String) optionsMap.get(AWS_ROLE_SESSION_KEY))
.orElse("aws-msk-iam-auth");
String stsRegion = getStsRegion();
Boolean shouldUseFIPs = shouldUseFips();
String accessKey = (String) optionsMap.getOrDefault(AWS_ROLE_ACCESS_KEY_ID, null);
String secretKey = (String) optionsMap.getOrDefault(AWS_ROLE_SECRET_ACCESS_KEY, null);
String sessionToken = (String) optionsMap.getOrDefault(AWS_ROLE_SESSION_TOKEN, null);
String externalId = (String) optionsMap.getOrDefault(AWS_ROLE_EXTERNAL_ID, null);
if (accessKey != null && secretKey != null) {
AwsCredentialsProvider credentials = StaticCredentialsProvider.create(
sessionToken != null
? AwsSessionCredentials.create(accessKey, secretKey, sessionToken)
: AwsBasicCredentials.create(accessKey, secretKey));
return createSTSRoleCredentialProvider((String) p, sessionName, stsRegion, credentials, shouldUseFIPs);
}
else if (externalId != null) {
return createSTSRoleCredentialProvider((String) p, externalId, sessionName, stsRegion, shouldUseFIPs);
}
return createSTSRoleCredentialProvider((String) p, sessionName, stsRegion, shouldUseFIPs);
});
}