src/odbc/rsodbc/iam/plugins/IAMPluginFactory.cpp (156 lines of code) (raw):
#include "IAMPluginFactory.h"
#include "IAMUtils.h"
using namespace Redshift::IamSupport;
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMPluginCredentialsProvider> IAMPluginFactory::CreatePlugin(
const rs_wstring& in_pluginName,
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreatePlugin");
std::unique_ptr<IAMPluginCredentialsProvider> credProvider;
if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_ADFS), false))
{
credProvider = CreateAdfsPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_AZUREAD), false))
{
credProvider = CreateAzurePlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_BROWSER_AZURE), false))
{
credProvider = CreateBrowserAzurePlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_BROWSER_AZURE_OAUTH2), false))
{
credProvider = CreateBrowserAzureOAuth2Plugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_BROWSER_SAML), false))
{
credProvider = CreateBrowserSamlPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_PING), false))
{
credProvider = CreatePingPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_OKTA), false))
{
credProvider = CreateOktaPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_JWT), false))
{
credProvider = CreateJwtPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(JWT_IAM_AUTH_PLUGIN), false))
{
credProvider = CreateJwtIamAuthPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(PLUGIN_IDP_TOKEN_AUTH), false))
{
credProvider = CreateIdpTokenAuthPlugin( in_config, in_argsMap);
}
else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(PLUGIN_BROWSER_IDC_AUTH), false))
{
credProvider = CreateBrowserIdcAuthPlugin( in_config, in_argsMap);
}
else
{
credProvider = CreateExternalPlugin( in_config, in_argsMap); // .Detach()
}
return credProvider;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMAdfsCredentialsProvider> IAMPluginFactory::CreateAdfsPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateAdfsPlugin");
return std::unique_ptr<IAMAdfsCredentialsProvider>(
new IAMAdfsCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMAzureCredentialsProvider> IAMPluginFactory::CreateAzurePlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateAzurePlugin");
return std::unique_ptr<IAMAzureCredentialsProvider>(
new IAMAzureCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMBrowserAzureCredentialsProvider> IAMPluginFactory::CreateBrowserAzurePlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateBrowserAzurePlugin");
return std::unique_ptr<IAMBrowserAzureCredentialsProvider>(
new IAMBrowserAzureCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMBrowserAzureOAuth2CredentialsProvider> IAMPluginFactory::CreateBrowserAzureOAuth2Plugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateBrowserAzureOAuth2Plugin");
return std::unique_ptr<IAMBrowserAzureOAuth2CredentialsProvider>(
new IAMBrowserAzureOAuth2CredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMBrowserSamlCredentialsProvider> IAMPluginFactory::CreateBrowserSamlPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateBrowserSamlPlugin");
return std::unique_ptr<IAMBrowserSamlCredentialsProvider>(
new IAMBrowserSamlCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMPingCredentialsProvider> IAMPluginFactory::CreatePingPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreatePingPlugin");
return std::unique_ptr<IAMPingCredentialsProvider>(
new IAMPingCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMOktaCredentialsProvider> IAMPluginFactory::CreateOktaPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateOktaPlugin");
return std::unique_ptr<IAMOktaCredentialsProvider>(
new IAMOktaCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMJwtBasicCredentialsProvider> IAMPluginFactory::CreateJwtPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateJwtPlugin");
return std::unique_ptr<IAMJwtBasicCredentialsProvider>(
new IAMJwtBasicCredentialsProvider( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<JwtIamAuthPlugin> IAMPluginFactory::CreateJwtIamAuthPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateJwtIamAuthPlugin");
return std::unique_ptr<JwtIamAuthPlugin>(
new JwtIamAuthPlugin( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IdpTokenAuthPlugin> IAMPluginFactory::CreateIdpTokenAuthPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateIdpTokenAuthPlugin");
return std::unique_ptr<IdpTokenAuthPlugin>(
new IdpTokenAuthPlugin( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<BrowserIdcAuthPlugin> IAMPluginFactory::CreateBrowserIdcAuthPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateBrowserIdcAuthPlugin");
return std::unique_ptr<BrowserIdcAuthPlugin>(
new BrowserIdcAuthPlugin( in_config, in_argsMap));
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<IAMExternalCredentialsProvider> IAMPluginFactory::CreateExternalPlugin(
const IAMConfiguration& in_config,
const std::map<rs_string, rs_string>& in_argsMap)
{
RS_LOG_DEBUG("IAM", "IAMPluginFactory::CreateExternalPlugin");
return std::unique_ptr<IAMExternalCredentialsProvider>(
new IAMExternalCredentialsProvider( in_config, in_argsMap));
}