bool FederationCredentialProvider::FetchCredentialsWithSAMLAssertion()

in src/authentication/federation.cc [21:46]


bool FederationCredentialProvider::FetchCredentialsWithSAMLAssertion(
    Aws::STS::Model::AssumeRoleWithSAMLRequest& saml_request,
    Aws::Auth::AWSCredentials& credentials) {

    Aws::STS::Model::AssumeRoleWithSAMLOutcome outcome = sts_client->AssumeRoleWithSAML(saml_request);

    bool retval = false;
    if (outcome.IsSuccess()) {
        const Aws::STS::Model::Credentials& new_cred = outcome.GetResult().GetCredentials();

        LOG(INFO) << "Access key is " << new_cred.GetAccessKeyId().c_str() << ", secret key length is " << new_cred.GetSecretAccessKey().size();

        credentials.SetAWSAccessKeyId(new_cred.GetAccessKeyId());
        credentials.SetAWSSecretKey(new_cred.GetSecretAccessKey());
        credentials.SetSessionToken(new_cred.GetSessionToken());

        retval = true;
    } else {
        const auto& error = outcome.GetError();
        std::string err_info = "Failed to fetch credentials, ERROR: " + error.GetExceptionName()
            + ": " + error.GetMessage();
        LOG(ERROR) << "Error in FetchCredentialsWithSAMLAssertion is " << err_info.c_str();
    }

    return retval;
}