void IAMPluginCredentialsProvider::InitArgumentsMap()

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

}