private static ConfigServerClientSettings CreateSettings(IHostingEnvironment environment, IEnumerable<IConfigurationProvider> providers, ILoggerFactory logFactory) { ConfigServerClientSettings settings = new ConfigServerClientSettings(); if (providers != null) { ConfigurationRoot existing = new ConfigurationRoot(new List<IConfigurationProvider>(providers)); Initialize(settings, environment, existing); } return settings; }
/// <summary> /// Initializes a new instance of <see cref="ConfigServerConfigurationProvider"/>. /// </summary> /// <param name="settings">the configuration settings the provider uses when /// accessing the server.</param> /// <param name="httpClient">a HttpClient the provider uses to make requests of /// the server.</param> /// <param name="logFactory">optional logging factory</param> /// </summary> public ConfigServerConfigurationProvider(ConfigServerClientSettings settings, HttpClient httpClient, ILoggerFactory logFactory = null) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (httpClient == null) { throw new ArgumentNullException(nameof(httpClient)); } _logger = logFactory?.CreateLogger<ConfigServerConfigurationProvider>(); _settings = settings; _client = httpClient; }
/// <summary> /// Initializes a new instance of <see cref="ConfigServerConfigurationProvider"/>. /// </summary> /// <param name="settings">the configuration settings the provider uses when /// accessing the server.</param> /// <param name="httpClient">a HttpClient the provider uses to make requests of /// the server.</param> /// <param name="logFactory">optional logging factory</param> /// </summary> public ConfigServerConfigurationProvider(ConfigServerClientSettings settings, HttpClient httpClient, ILoggerFactory logFactory = null) : base(settings, httpClient, logFactory) { }
/// <summary> /// Initializes a new instance of <see cref="ConfigServerConfigurationProvider"/>. /// </summary> /// <param name="settings">the configuration settings the provider uses when /// accessing the server.</param> /// <param name="logFactory">optional logging factory</param> /// </summary> public ConfigServerConfigurationProvider(ConfigServerClientSettings settings, ILoggerFactory logFactory = null) : this(settings, GetHttpClient(settings), logFactory) { _client.Timeout = DEFAULT_TIMEOUT; }
private static HttpClient GetHttpClient(ConfigServerClientSettings settings) { #if NET451 return new HttpClient(); #else // TODO: For coreclr, disabling certificate validation only works on windows // https://github.com/dotnet/corefx/issues/4476 if (settings != null && !settings.ValidateCertificates) { var handler = new WinHttpHandler(); handler.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; return new HttpClient(handler); } else { return new HttpClient(); } #endif }
internal void AddConfigServerClientSettings(ConfigServerClientSettings settings) { Data["spring:cloud:config:enabled"] = settings.Enabled.ToString(); Data["spring:cloud:config:failFast"] = settings.FailFast.ToString(); Data["spring:cloud:config:env"] = settings.Environment; Data["spring:cloud:config:label"] = settings.Label; Data["spring:cloud:config:name"] = settings.Name; Data["spring:cloud:config:password"] = settings.Password; Data["spring:cloud:config:uri"] = settings.Uri; Data["spring:cloud:config:username"] = settings.Username; Data["spring:cloud:config:access_token_uri"] = settings.AccessTokenUri; Data["spring:cloud:config:client_secret"] = settings.ClientSecret; Data["spring:cloud:config:client_id"] = settings.ClientId; Data["spring:cloud:config:validate_certificates"] = settings.ValidateCertificates.ToString(); }
internal async Task<string> GetAccessToken(ConfigServerClientSettings settings) { var request = new HttpRequestMessage(HttpMethod.Post, settings.AccessTokenUri); HttpClient client = GetHttpClient(settings); #if NET451 RemoteCertificateValidationCallback prevValidator = null; if (!settings.ValidateCertificates) { prevValidator = ServicePointManager.ServerCertificateValidationCallback; ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; } #endif AuthenticationHeaderValue auth = new AuthenticationHeaderValue("Basic", GetEncoded(settings.ClientId, settings.ClientSecret)); request.Headers.Authorization = auth; request.Content = new FormUrlEncodedContent(new Dictionary<string, string> { { "grant_type", "client_credentials" } }); try { using (client) { using (HttpResponseMessage response = await client.SendAsync(request)) { if (response.StatusCode != HttpStatusCode.OK) { _logger?.LogInformation("Config Server returned status: {0} while obtaining access token from: {1}", response.StatusCode, settings.AccessTokenUri); return null; } var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); var token = payload.Value<string>("access_token"); return token; } } } catch (Exception e) { _logger?.LogError("Config Server exception: {0} ,obtaining access token from: {1}", e, settings.AccessTokenUri); } #if NET451 finally { ServicePointManager.ServerCertificateValidationCallback = prevValidator; } #endif return null; }
private static void Initialize(ConfigServerClientSettings settings, IHostingEnvironment environment, ConfigurationRoot root) { var clientConfigsection = root.GetSection(PREFIX); settings.Name = ResovlePlaceholders(GetApplicationName(clientConfigsection, root), root); settings.Environment = ResovlePlaceholders(GetEnvironment(clientConfigsection, environment), root); settings.Label = ResovlePlaceholders(GetLabel(clientConfigsection), root); settings.Username = ResovlePlaceholders(GetUsername(clientConfigsection), root); settings.Password = ResovlePlaceholders(GetPassword(clientConfigsection), root); settings.Uri = ResovlePlaceholders(GetUri(clientConfigsection, root), root); settings.AccessTokenUri = ResovlePlaceholders(GetAccessTokenUri(clientConfigsection, root), root); settings.ClientId = ResovlePlaceholders(GetClientId(clientConfigsection, root), root); settings.ClientSecret = ResovlePlaceholders(GetClientSecret(clientConfigsection, root), root); settings.Enabled = GetEnabled(clientConfigsection, root); settings.FailFast = GetFailFast(clientConfigsection, root); settings.ValidateCertificates = GetCertificateValidation(clientConfigsection, root); }