From 7424286282b9ad4faae92d9aede75ac06bae14f0 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 9 Mar 2021 14:03:02 +0800 Subject: [PATCH] Add RequestedClaims to AbpClaimsPrincipalOptions --- .../Volo/Abp/Security/AbpSecurityModule.cs | 2 +- .../Claims/AbpClaimsPrincipalFactory.cs | 4 ++-- .../Claims/AbpClaimsPrincipalFactoryOptions.cs | 14 -------------- .../Claims/AbpClaimsPrincipalOptions.cs | 18 ++++++++++++++++++ .../Abp/IdentityServer/AbpClaimsService.cs | 18 +++++++++++------- .../AbpIdentityServerDomainModule.cs | 10 +++++++++- .../AspNetIdentity/AbpProfileService.cs | 4 ++-- 7 files changed, 43 insertions(+), 27 deletions(-) delete mode 100644 framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactoryOptions.cs create mode 100644 framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalOptions.cs diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/AbpSecurityModule.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/AbpSecurityModule.cs index cf517f0de4..98759bcaa2 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/AbpSecurityModule.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/AbpSecurityModule.cs @@ -61,7 +61,7 @@ namespace Volo.Abp.Security } }); - services.Configure(options => + services.Configure(options => { options.Contributors.AddIfNotContains(contributorTypes); }); diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactory.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactory.cs index b00b38ea8c..7a3ec769c3 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactory.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactory.cs @@ -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 abpClaimOptions) + IOptions abpClaimOptions) { ServiceScopeFactory = serviceScopeFactory; Options = abpClaimOptions.Value; diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactoryOptions.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactoryOptions.cs deleted file mode 100644 index 8083a018ee..0000000000 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalFactoryOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Volo.Abp.Collections; - -namespace Volo.Abp.Security.Claims -{ - public class AbpClaimsPrincipalFactoryOptions - { - public ITypeList Contributors { get; } - - public AbpClaimsPrincipalFactoryOptions() - { - Contributors = new TypeList(); - } - } -} diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalOptions.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalOptions.cs new file mode 100644 index 0000000000..6e9b584aaa --- /dev/null +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimsPrincipalOptions.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Volo.Abp.Collections; + +namespace Volo.Abp.Security.Claims +{ + public class AbpClaimsPrincipalOptions + { + public ITypeList Contributors { get; } + + public List RequestedClaims { get; } + + public AbpClaimsPrincipalOptions() + { + Contributors = new TypeList(); + RequestedClaims = new List(); + } + } +} diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpClaimsService.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpClaimsService.cs index a032ce6824..50750ff567 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpClaimsService.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpClaimsService.cs @@ -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 logger) + public AbpClaimsService( + IProfileService profile, + ILogger logger, + IOptions options) : base(profile, logger) { + Options = options.Value; } protected override IEnumerable FilterRequestedClaimTypes(IEnumerable claimTypes) { return base.FilterRequestedClaimTypes(claimTypes) - .Union(new []{ - AbpClaimTypes.TenantId, - AbpClaimTypes.EditionId - }); + .Union(Options.RequestedClaims); } - + protected override IEnumerable GetOptionalClaims(ClaimsPrincipal subject) { return base.GetOptionalClaims(subject) @@ -52,4 +56,4 @@ namespace Volo.Abp.IdentityServer } } } -} \ No newline at end of file +} diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs index 328c70cc8a..92fd0501d3 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs @@ -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(typeof(AbpIdentityServerDomainModule)); }); + Configure(options => + { + options.RequestedClaims.AddRange(new []{ + AbpClaimTypes.TenantId, + AbpClaimTypes.EditionId + }); + }); + AddIdentityServer(context.Services); } diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpProfileService.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpProfileService.cs index 3eb14131f1..224abc6c10 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpProfileService.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpProfileService.cs @@ -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())) {