in src/authentication/authentication_provider.cc [219:240]
bool GenerateConnectAuthToken(char* token, unsigned int max_size, const char* db_hostname, const char* db_region, unsigned port, const char* db_user, FederatedAuthType type, FederatedAuthConfig config) {
std::lock_guard<std::mutex> global_lock(global_auth_mutex);
if (1 == ++sdk_ref_count) {
std::lock_guard<std::mutex> lock(sdk_mutex);
Aws::InitAPI(sdk_opts);
}
LOG(INFO) << "Generating token for " << federated_auth_type_str[type];
Aws::RDS::RDSClient* client = CreateRDSClient(type, config);
if (!client) {
FreeAwsResource(nullptr);
return false;
}
Aws::String new_token = client->GenerateConnectAuthToken(db_hostname, db_region, port, db_user);
FreeAwsResource(client);
int token_size = new_token.size();
LOG(INFO) << "RDS Client generated token length is " << token_size;
return UpdateTokenValue(token, max_size, new_token.c_str());
}