#include "IAMPluginFactory.h" #include "IAMUtils.h" using namespace Redshift::IamSupport; //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreatePlugin( const rs_wstring& in_pluginName, RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreatePlugin"); std::unique_ptr credProvider; if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_ADFS), false)) { credProvider = CreateAdfsPlugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_AZUREAD), false)) { credProvider = CreateAzurePlugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_BROWSER_AZURE), false)) { credProvider = CreateBrowserAzurePlugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_BROWSER_AZURE_OAUTH2), false)) { credProvider = CreateBrowserAzureOAuth2Plugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_BROWSER_SAML), false)) { credProvider = CreateBrowserSamlPlugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_PING), false)) { credProvider = CreatePingPlugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_OKTA), false)) { credProvider = CreateOktaPlugin(in_log, in_config, in_argsMap); } else if (IAMUtils::isEqual(in_pluginName, IAMUtils::convertCharStringToWstring(IAM_PLUGIN_JWT), false)) { credProvider = CreateJwtPlugin(in_log, in_config, in_argsMap); } else { credProvider = CreateExternalPlugin(in_log, in_config, in_argsMap); // .Detach() } return credProvider; } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateAdfsPlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateAdfsPlugin"); return std::unique_ptr( new IAMAdfsCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateAzurePlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateAzurePlugin"); return std::unique_ptr( new IAMAzureCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateBrowserAzurePlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateBrowserAzurePlugin"); return std::unique_ptr( new IAMBrowserAzureCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateBrowserAzureOAuth2Plugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateBrowserAzureOAuth2Plugin"); return std::unique_ptr( new IAMBrowserAzureOAuth2CredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateBrowserSamlPlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateBrowserSamlPlugin"); return std::unique_ptr( new IAMBrowserSamlCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreatePingPlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreatePingPlugin"); return std::unique_ptr( new IAMPingCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateOktaPlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateOktaPlugin"); return std::unique_ptr( new IAMOktaCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateJwtPlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateJwtPlugin"); return std::unique_ptr( new IAMJwtBasicCredentialsProvider(in_log, in_config, in_argsMap)); } //////////////////////////////////////////////////////////////////////////////////////////////////// std::unique_ptr IAMPluginFactory::CreateExternalPlugin( RsLogger* in_log, const IAMConfiguration& in_config, const std::map& in_argsMap) { RS_LOG(in_log)("IAMPluginFactory::CreateExternalPlugin"); return std::unique_ptr( new IAMExternalCredentialsProvider(in_log, in_config, in_argsMap)); }