private Optional getStsRoleProvider()

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);
            });
        }