Add RequestedClaims to AbpClaimsPrincipalOptions

pull/7998/head
liangshiwei 5 years ago
parent 10add8ebcc
commit 7424286282

@ -61,7 +61,7 @@ namespace Volo.Abp.Security
}
});
services.Configure<AbpClaimsPrincipalFactoryOptions>(options =>
services.Configure<AbpClaimsPrincipalOptions>(options =>
{
options.Contributors.AddIfNotContains(contributorTypes);
});

@ -9,11 +9,11 @@ namespace Volo.Abp.Security.Claims
public class AbpClaimsPrincipalFactory : IAbpClaimsPrincipalFactory, ITransientDependency
{
protected IServiceScopeFactory ServiceScopeFactory { get; }
protected AbpClaimsPrincipalFactoryOptions Options { get; }
protected AbpClaimsPrincipalOptions Options { get; }
public AbpClaimsPrincipalFactory(
IServiceScopeFactory serviceScopeFactory,
IOptions<AbpClaimsPrincipalFactoryOptions> abpClaimOptions)
IOptions<AbpClaimsPrincipalOptions> abpClaimOptions)
{
ServiceScopeFactory = serviceScopeFactory;
Options = abpClaimOptions.Value;

@ -1,14 +0,0 @@
using Volo.Abp.Collections;
namespace Volo.Abp.Security.Claims
{
public class AbpClaimsPrincipalFactoryOptions
{
public ITypeList<IAbpClaimsPrincipalContributor> Contributors { get; }
public AbpClaimsPrincipalFactoryOptions()
{
Contributors = new TypeList<IAbpClaimsPrincipalContributor>();
}
}
}

@ -0,0 +1,18 @@
using System.Collections.Generic;
using Volo.Abp.Collections;
namespace Volo.Abp.Security.Claims
{
public class AbpClaimsPrincipalOptions
{
public ITypeList<IAbpClaimsPrincipalContributor> Contributors { get; }
public List<string> RequestedClaims { get; }
public AbpClaimsPrincipalOptions()
{
Contributors = new TypeList<IAbpClaimsPrincipalContributor>();
RequestedClaims = new List<string>();
}
}
}

@ -4,12 +4,15 @@ using System.Security.Claims;
using IdentityModel;
using IdentityServer4.Services;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Volo.Abp.Security.Claims;
namespace Volo.Abp.IdentityServer
{
public class AbpClaimsService : DefaultClaimsService
{
protected readonly AbpClaimsPrincipalOptions Options;
private static readonly string[] AdditionalOptionalClaimNames =
{
AbpClaimTypes.TenantId,
@ -20,20 +23,21 @@ namespace Volo.Abp.IdentityServer
JwtClaimTypes.FamilyName,
};
public AbpClaimsService(IProfileService profile, ILogger<DefaultClaimsService> logger)
public AbpClaimsService(
IProfileService profile,
ILogger<DefaultClaimsService> logger,
IOptions<AbpClaimsPrincipalOptions> options)
: base(profile, logger)
{
Options = options.Value;
}
protected override IEnumerable<string> FilterRequestedClaimTypes(IEnumerable<string> claimTypes)
{
return base.FilterRequestedClaimTypes(claimTypes)
.Union(new []{
AbpClaimTypes.TenantId,
AbpClaimTypes.EditionId
});
.Union(Options.RequestedClaims);
}
protected override IEnumerable<Claim> GetOptionalClaims(ClaimsPrincipal subject)
{
return base.GetOptionalClaims(subject)
@ -52,4 +56,4 @@ namespace Volo.Abp.IdentityServer
}
}
}
}
}

@ -10,7 +10,6 @@ using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.Identity;
using Volo.Abp.IdentityServer.ApiResources;
using Volo.Abp.IdentityServer.AspNetIdentity;
using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
using Volo.Abp.IdentityServer.IdentityResources;
@ -19,6 +18,7 @@ using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectExtending.Modularity;
using Volo.Abp.Security;
using Volo.Abp.Security.Claims;
using Volo.Abp.Validation;
using Volo.Abp.Threading;
@ -54,6 +54,14 @@ namespace Volo.Abp.IdentityServer
options.EtoMappings.Add<IdentityResource, IdentityResourceEto>(typeof(AbpIdentityServerDomainModule));
});
Configure<AbpClaimsPrincipalOptions>(options =>
{
options.RequestedClaims.AddRange(new []{
AbpClaimTypes.TenantId,
AbpClaimTypes.EditionId
});
});
AddIdentityServer(context.Services);
}

@ -24,7 +24,7 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity
}
[UnitOfWork]
public async override Task GetProfileDataAsync(ProfileDataRequestContext context)
public override async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
using (CurrentTenant.Change(context.Subject.FindTenantId()))
{
@ -33,7 +33,7 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity
}
[UnitOfWork]
public async override Task IsActiveAsync(IsActiveContext context)
public override async Task IsActiveAsync(IsActiveContext context)
{
using (CurrentTenant.Change(context.Subject.FindTenantId()))
{

Loading…
Cancel
Save