in src/odbc/rsodbc/iam/plugins/IAMPluginCredentialsProvider.cpp [50:190]
void IAMPluginCredentialsProvider::InitArgumentsMap()
{
RS_LOG_DEBUG("IAM", "IAMPluginCredentialsProvider::InitArgumentsMap");
/* Precedence of connection attributes: Connection String > Profile > SAML Assertion
Set these connection attributes if they're already being set in the connection string */
const rs_string dbUser = m_config.GetDbUser();
const rs_string dbGroup = m_config.GetDbGroups();
bool forceLowercase = m_config.GetForceLowercase();
bool userAutoCreate = m_config.GetAutoCreate();
/* Plugin and profile related settings */
const rs_string user = m_config.GetUser();
const rs_string password = m_config.GetPassword();
const rs_string idpHost = m_config.GetIdpHost();
short idpPort = m_config.GetIdpPort();
const rs_string idpTenant = m_config.GetIdpTenant();
const rs_string clientSecret = m_config.GetClientSecret();
const rs_string clientId = m_config.GetClientId();
short idpResponseTimeout = m_config.GetIdpResponseTimeout();
short listen_port = m_config.GetListenPort();
const rs_string login_url = m_config.GetLoginURL();
const rs_string preferredRole = m_config.GetPreferredRole();
bool sslInsecure = m_config.GetSslInsecure();
const rs_string role_arn = m_config.GetRoleARN();
short duration = m_config.GetDuration();
const rs_string web_identity_token = m_config.GetWebIdentityToken();
const rs_string role_session_name = m_config.GetRoleSessionName();
const rs_string scope = m_config.GetScope();
/* Get regular expression to filter received dbGroups from SAML response */
m_dbGroupsFilter = m_config.GetDbGroupsFilter();
if (!dbUser.empty())
{
m_argsMap[IAM_KEY_DBUSER] = dbUser;
}
if (!dbGroup.empty())
{
m_argsMap[IAM_KEY_DBGROUPS] = dbGroup;
}
if (forceLowercase)
{
m_argsMap[IAM_KEY_FORCELOWERCASE] = "1";
}
if (userAutoCreate)
{
m_argsMap[IAM_KEY_AUTOCREATE] = "1";
}
if (!user.empty())
{
m_argsMap[IAM_KEY_USER] = user;
}
if (!password.empty())
{
m_argsMap[IAM_KEY_PASSWORD] = password;
}
if (!idpHost.empty())
{
m_argsMap[IAM_KEY_IDP_HOST] = idpHost;
}
if (idpPort != 0)
{
m_argsMap[IAM_KEY_IDP_PORT] = std::to_string(idpPort);
}
if (!idpTenant.empty())
{
m_argsMap[IAM_KEY_IDP_TENANT] = idpTenant;
}
if (!clientSecret.empty())
{
m_argsMap[IAM_KEY_CLIENT_SECRET] = clientSecret;
}
if (!clientId.empty())
{
m_argsMap[IAM_KEY_CLIENT_ID] = clientId;
}
if (idpResponseTimeout != 0)
{
m_argsMap[IAM_KEY_IDP_RESPONSE_TIMEOUT] = std::to_string(idpResponseTimeout);
}
if (listen_port != 0)
{
m_argsMap[IAM_KEY_LISTEN_PORT] = std::to_string(listen_port);
}
if (!scope.empty())
{
m_argsMap[IAM_KEY_SCOPE] = scope;
}
if (!login_url.empty())
{
m_argsMap[IAM_KEY_LOGIN_URL] = login_url;
}
if (!preferredRole.empty())
{
m_argsMap[IAM_KEY_PREFERRED_ROLE] = preferredRole;
}
if (sslInsecure)
{
m_argsMap[IAM_KEY_SSL_INSECURE] = "1";
}
if (!role_arn.empty())
{
m_argsMap[IAM_KEY_ROLE_ARN] = role_arn;
}
if (!web_identity_token.empty())
{
m_argsMap[IAM_KEY_WEB_IDENTITY_TOKEN] = web_identity_token;
}
if (duration != 0)
{
m_argsMap[IAM_KEY_DURATION] = std::to_string(duration);
}
if (!role_session_name.empty())
{
m_argsMap[IAM_KEY_ROLE_SESSION_NAME] = role_session_name;
}
}