|
|
|
@ -11,6 +11,7 @@ using System.Net.Http; |
|
|
|
using System.Net.Http.Headers; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
using Volo.Abp.MultiTenancy; |
|
|
|
using Volo.Abp.Threading; |
|
|
|
|
|
|
|
namespace Volo.Abp.IdentityModel |
|
|
|
@ -22,15 +23,18 @@ namespace Volo.Abp.IdentityModel |
|
|
|
protected AbpIdentityClientOptions ClientOptions { get; } |
|
|
|
protected ICancellationTokenProvider CancellationTokenProvider { get; } |
|
|
|
protected IHttpClientFactory HttpClientFactory { get; } |
|
|
|
protected ICurrentTenant CurrentTenant { get; } |
|
|
|
|
|
|
|
public IdentityModelAuthenticationService( |
|
|
|
IOptions<AbpIdentityClientOptions> options, |
|
|
|
ICancellationTokenProvider cancellationTokenProvider, |
|
|
|
IHttpClientFactory httpClientFactory) |
|
|
|
IHttpClientFactory httpClientFactory, |
|
|
|
ICurrentTenant currentTenant) |
|
|
|
{ |
|
|
|
ClientOptions = options.Value; |
|
|
|
CancellationTokenProvider = cancellationTokenProvider; |
|
|
|
HttpClientFactory = httpClientFactory; |
|
|
|
CurrentTenant = currentTenant; |
|
|
|
Logger = NullLogger<IdentityModelAuthenticationService>.Instance; |
|
|
|
} |
|
|
|
|
|
|
|
@ -125,6 +129,8 @@ namespace Volo.Abp.IdentityModel |
|
|
|
{ |
|
|
|
using (var httpClient = HttpClientFactory.CreateClient()) |
|
|
|
{ |
|
|
|
AddHeaders(httpClient); |
|
|
|
|
|
|
|
switch (configuration.GrantType) |
|
|
|
{ |
|
|
|
case OidcConstants.GrantTypes.ClientCredentials: |
|
|
|
@ -186,5 +192,15 @@ namespace Volo.Abp.IdentityModel |
|
|
|
|
|
|
|
return Task.CompletedTask; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual void AddHeaders(HttpClient client) |
|
|
|
{ |
|
|
|
//tenantId
|
|
|
|
if (CurrentTenant.Id.HasValue) |
|
|
|
{ |
|
|
|
//TODO: Use AbpAspNetCoreMultiTenancyOptions to get the key
|
|
|
|
client.DefaultRequestHeaders.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|