Use named httpclient

pull/4173/head
liangshiwei 5 years ago
parent 6917e57881
commit 7391aeb0cf

@ -15,7 +15,7 @@ namespace Volo.Abp.IdentityModel
{
var configuration = context.Services.GetConfiguration();
context.Services.AddHttpClient();
context.Services.AddHttpClient(IdentityModelAuthenticationService.HttpClientName);
Configure<AbpIdentityClientOptions>(configuration);
}

@ -19,6 +19,7 @@ namespace Volo.Abp.IdentityModel
[Dependency(ReplaceServices = true)]
public class IdentityModelAuthenticationService : IIdentityModelAuthenticationService, ITransientDependency
{
public const string HttpClientName = "IdentityModelAuthenticationServiceHttpClientName";
public ILogger<IdentityModelAuthenticationService> Logger { get; set; }
protected AbpIdentityClientOptions ClientOptions { get; }
protected ICancellationTokenProvider CancellationTokenProvider { get; }
@ -50,7 +51,6 @@ namespace Volo.Abp.IdentityModel
SetAccessToken(client, accessToken);
return true;
}
protected virtual async Task<string> GetAccessTokenOrNullAsync(string identityClientName)
@ -110,42 +110,38 @@ namespace Volo.Abp.IdentityModel
protected virtual async Task<DiscoveryDocumentResponse> GetDiscoveryResponse(
IdentityClientConfiguration configuration)
{
using (var httpClient = HttpClientFactory.CreateClient())
var httpClient = HttpClientFactory.CreateClient(HttpClientName);
return await httpClient.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest
{
return await httpClient.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest
Address = configuration.Authority,
Policy =
{
Address = configuration.Authority,
Policy =
{
RequireHttps = configuration.RequireHttps
}
});
}
RequireHttps = configuration.RequireHttps
}
});
}
protected virtual async Task<TokenResponse> GetTokenResponse(
DiscoveryDocumentResponse discoveryResponse,
IdentityClientConfiguration configuration)
{
using (var httpClient = HttpClientFactory.CreateClient())
{
AddHeaders(httpClient);
var httpClient = HttpClientFactory.CreateClient(HttpClientName);
AddHeaders(httpClient);
switch (configuration.GrantType)
{
case OidcConstants.GrantTypes.ClientCredentials:
return await httpClient.RequestClientCredentialsTokenAsync(
await CreateClientCredentialsTokenRequestAsync(discoveryResponse, configuration),
CancellationTokenProvider.Token
);
case OidcConstants.GrantTypes.Password:
return await httpClient.RequestPasswordTokenAsync(
await CreatePasswordTokenRequestAsync(discoveryResponse, configuration),
CancellationTokenProvider.Token
);
default:
throw new AbpException("Grant type was not implemented: " + configuration.GrantType);
}
switch (configuration.GrantType)
{
case OidcConstants.GrantTypes.ClientCredentials:
return await httpClient.RequestClientCredentialsTokenAsync(
await CreateClientCredentialsTokenRequestAsync(discoveryResponse, configuration),
CancellationTokenProvider.Token
);
case OidcConstants.GrantTypes.Password:
return await httpClient.RequestPasswordTokenAsync(
await CreatePasswordTokenRequestAsync(discoveryResponse, configuration),
CancellationTokenProvider.Token
);
default:
throw new AbpException("Grant type was not implemented: " + configuration.GrantType);
}
}

Loading…
Cancel
Save