private async Task <string> AuthenticateAsync(AppSettings.Subscription subscription) { var httpClient = _httpClientFactory.CreateClient(); var request = new DiscoveryDocumentRequest() { Address = subscription.IdentityServerUrl.ToString(), }; request.Policy.RequireHttps = false; request.Policy.ValidateIssuerName = false; var disco = await httpClient.GetDiscoveryDocumentAsync(request); if (disco.IsError) { throw new Exception(disco.Error); } // request token var tokenResponse = await httpClient.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest { Address = disco.TokenEndpoint, ClientId = subscription.Client.Id, ClientSecret = subscription.Client.Secret, Scope = "api" }); if (tokenResponse.IsError) { throw new Exception(tokenResponse.Error); } return(tokenResponse.AccessToken); }
public async Task <HttpClient> AuthenticateClient(HttpClient httpClient, AppSettings.Subscription subscription) { var accessToken = await AuthenticateAsync(subscription); var authValue = new AuthenticationHeaderValue("Bearer", accessToken); httpClient.DefaultRequestHeaders.Authorization = authValue; httpClient.BaseAddress = subscription.ApiUrl; return(httpClient); }
public async Task Authenticate(AppSettings.Subscription subscription) { await _authenticationProvider.AuthenticateClient(_httpClient, subscription); }
public Task <HttpClient> AuthenticateClient(HttpClient httpClient, AppSettings.Subscription subscription) => Task.FromResult(httpClient);
public AppSettingsBuilder WithSubscription(AppSettings.Subscription subscription) { _settings.Subscriptions.Add(subscription); return(this); }