/// <summary> /// Constructor. /// </summary> public SqlAuthenticationProviderManager(SqlAuthenticationProviderConfigurationSection configSection) { _typeName = GetType().Name; _providers = new ConcurrentDictionary <SqlAuthenticationMethod, SqlAuthenticationProvider>(); var authenticationsWithAppSpecifiedProvider = new HashSet <SqlAuthenticationMethod>(); _authenticationsWithAppSpecifiedProvider = authenticationsWithAppSpecifiedProvider; if (configSection == null) { return; } // Create user-defined auth initializer, if any. // if (!string.IsNullOrEmpty(configSection.InitializerType)) { try { var initializerType = Type.GetType(configSection.InitializerType, true); _initializer = (SqlAuthenticationInitializer)Activator.CreateInstance(initializerType); _initializer.Initialize(); } catch (Exception e) { throw SQL.CannotCreateSqlAuthInitializer(configSection.InitializerType, e); } } // add user-defined providers, if any. // if (configSection.Providers != null && configSection.Providers.Count > 0) { foreach (ProviderSettings providerSettings in configSection.Providers) { SqlAuthenticationMethod authentication = AuthenticationEnumFromString(providerSettings.Name); SqlAuthenticationProvider provider; try { var providerType = Type.GetType(providerSettings.Type, true); provider = (SqlAuthenticationProvider)Activator.CreateInstance(providerType); } catch (Exception e) { throw SQL.CannotCreateAuthProvider(authentication.ToString(), providerSettings.Type, e); } if (!provider.IsSupported(authentication)) { throw SQL.UnsupportedAuthenticationByProvider(authentication.ToString(), providerSettings.Type); } _providers[authentication] = provider; authenticationsWithAppSpecifiedProvider.Add(authentication); } } }
/// <summary> /// Constructor. /// </summary> public SqlAuthenticationProviderManager(SqlAuthenticationProviderConfigurationSection configSection = null) { var methodName = "Ctor"; _typeName = GetType().Name; _providers = new ConcurrentDictionary <SqlAuthenticationMethod, SqlAuthenticationProvider>(); var authenticationsWithAppSpecifiedProvider = new HashSet <SqlAuthenticationMethod>(); _authenticationsWithAppSpecifiedProvider = authenticationsWithAppSpecifiedProvider; if (configSection == null) { _sqlAuthLogger.LogInfo(_typeName, methodName, "Neither SqlClientAuthenticationProviders nor SqlAuthenticationProviders configuration section found."); return; } if (!string.IsNullOrEmpty(configSection.ApplicationClientId)) { _applicationClientId = configSection.ApplicationClientId; _sqlAuthLogger.LogInfo(_typeName, methodName, "Received user-defined Application Client Id"); } else { _sqlAuthLogger.LogInfo(_typeName, methodName, "No user-defined Application Client Id found."); } // Create user-defined auth initializer, if any. if (!string.IsNullOrEmpty(configSection.InitializerType)) { try { var initializerType = Type.GetType(configSection.InitializerType, true); _initializer = (SqlAuthenticationInitializer)Activator.CreateInstance(initializerType); _initializer.Initialize(); } catch (Exception e) { throw SQL.CannotCreateSqlAuthInitializer(configSection.InitializerType, e); } _sqlAuthLogger.LogInfo(_typeName, methodName, "Created user-defined SqlAuthenticationInitializer."); } else { _sqlAuthLogger.LogInfo(_typeName, methodName, "No user-defined SqlAuthenticationInitializer found."); } // add user-defined providers, if any. if (configSection.Providers != null && configSection.Providers.Count > 0) { foreach (ProviderSettings providerSettings in configSection.Providers) { SqlAuthenticationMethod authentication = AuthenticationEnumFromString(providerSettings.Name); SqlAuthenticationProvider provider; try { var providerType = Type.GetType(providerSettings.Type, true); provider = (SqlAuthenticationProvider)Activator.CreateInstance(providerType); } catch (Exception e) { throw SQL.CannotCreateAuthProvider(authentication.ToString(), providerSettings.Type, e); } if (!provider.IsSupported(authentication)) { throw SQL.UnsupportedAuthenticationByProvider(authentication.ToString(), providerSettings.Type); } _providers[authentication] = provider; authenticationsWithAppSpecifiedProvider.Add(authentication); _sqlAuthLogger.LogInfo(_typeName, methodName, string.Format("Added user-defined auth provider: {0} for authentication {1}.", providerSettings?.Type, authentication)); } } else { _sqlAuthLogger.LogInfo(_typeName, methodName, "No user-defined auth providers."); } }