コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public async Task Authenticate(AppSettings.Subscription subscription)
 {
     await _authenticationProvider.AuthenticateClient(_httpClient, subscription);
 }
コード例 #4
0
 public Task <HttpClient> AuthenticateClient(HttpClient httpClient, AppSettings.Subscription subscription)
 => Task.FromResult(httpClient);
コード例 #5
0
 public AppSettingsBuilder WithSubscription(AppSettings.Subscription subscription)
 {
     _settings.Subscriptions.Add(subscription);
     return(this);
 }