diff --git a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityModelModule.cs b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityModelModule.cs index 83660b35cf..7ab97c49fe 100644 --- a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityModelModule.cs +++ b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityModelModule.cs @@ -15,7 +15,7 @@ namespace Volo.Abp.IdentityModel { var configuration = context.Services.GetConfiguration(); - context.Services.AddHttpClient(); + context.Services.AddHttpClient(IdentityModelAuthenticationService.HttpClientName); Configure(configuration); } diff --git a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs index 66add8892a..5c878f33c0 100644 --- a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs +++ b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs @@ -19,6 +19,7 @@ namespace Volo.Abp.IdentityModel [Dependency(ReplaceServices = true)] public class IdentityModelAuthenticationService : IIdentityModelAuthenticationService, ITransientDependency { + public const string HttpClientName = "IdentityModelAuthenticationServiceHttpClientName"; public ILogger 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 GetAccessTokenOrNullAsync(string identityClientName) @@ -110,42 +110,38 @@ namespace Volo.Abp.IdentityModel protected virtual async Task 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 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); } }