Using `IHttpClientFactory` instead of manually creating a `HttpClient` instance

This enables customization of the created client or it's handlers from outside of this module.
pull/2937/head
Necati Meral 6 years ago
parent 4982457777
commit dbd1756c20

@ -16,6 +16,7 @@
<ItemGroup>
<PackageReference Include="IdentityModel" Version="4.1.1" />
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.2" />
<ProjectReference Include="..\Volo.Abp.Threading\Volo.Abp.Threading.csproj" />
</ItemGroup>

@ -21,12 +21,15 @@ namespace Volo.Abp.IdentityModel
public ILogger<IdentityModelAuthenticationService> Logger { get; set; }
protected AbpIdentityClientOptions ClientOptions { get; }
protected ICancellationTokenProvider CancellationTokenProvider { get; }
protected IHttpClientFactory HttpClientFactory { get; }
public IdentityModelAuthenticationService(
IOptions<AbpIdentityClientOptions> options,
ICancellationTokenProvider cancellationTokenProvider)
ICancellationTokenProvider cancellationTokenProvider,
IHttpClientFactory httpClientFactory)
{
CancellationTokenProvider = cancellationTokenProvider;
HttpClientFactory = httpClientFactory;
ClientOptions = options.Value;
Logger = NullLogger<IdentityModelAuthenticationService>.Instance;
}
@ -95,7 +98,7 @@ namespace Volo.Abp.IdentityModel
protected virtual async Task<DiscoveryDocumentResponse> GetDiscoveryResponse(
IdentityClientConfiguration configuration)
{
using (var httpClient = new HttpClient())
using (var httpClient = HttpClientFactory.CreateClient())
{
return await httpClient.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest
{
@ -109,10 +112,10 @@ namespace Volo.Abp.IdentityModel
}
protected virtual async Task<TokenResponse> GetTokenResponse(
DiscoveryDocumentResponse discoveryResponse,
DiscoveryDocumentResponse discoveryResponse,
IdentityClientConfiguration configuration)
{
using (var httpClient = new HttpClient())
using (var httpClient = HttpClientFactory.CreateClient())
{
switch (configuration.GrantType)
{
@ -134,7 +137,7 @@ namespace Volo.Abp.IdentityModel
protected virtual Task<PasswordTokenRequest> CreatePasswordTokenRequestAsync(DiscoveryDocumentResponse discoveryResponse, IdentityClientConfiguration configuration)
{
var request = new PasswordTokenRequest
var request = new PasswordTokenRequest
{
Address = discoveryResponse.TokenEndpoint,
Scope = configuration.Scope,
@ -149,11 +152,11 @@ namespace Volo.Abp.IdentityModel
return Task.FromResult(request);
}
protected virtual Task<ClientCredentialsTokenRequest> CreateClientCredentialsTokenRequestAsync(
DiscoveryDocumentResponse discoveryResponse,
protected virtual Task<ClientCredentialsTokenRequest> CreateClientCredentialsTokenRequestAsync(
DiscoveryDocumentResponse discoveryResponse,
IdentityClientConfiguration configuration)
{
var request = new ClientCredentialsTokenRequest
var request = new ClientCredentialsTokenRequest
{
Address = discoveryResponse.TokenEndpoint,
Scope = configuration.Scope,

Loading…
Cancel
Save