Browse Source

Add more claims to the access token.

pull/7085/head
Halil İbrahim Kalkan 6 years ago
parent
commit
a75b26cc30
  1. 28
      modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpClaimsService.cs
  2. 7
      modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs

28
modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpClaimsService.cs

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Claims; using System.Security.Claims;
using IdentityModel;
using IdentityServer4.Services; using IdentityServer4.Services;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
@ -9,6 +10,16 @@ namespace Volo.Abp.IdentityServer
{ {
public class AbpClaimsService : DefaultClaimsService public class AbpClaimsService : DefaultClaimsService
{ {
private static readonly string[] AdditionalOptionalClaimNames =
{
AbpClaimTypes.TenantId,
AbpClaimTypes.Name,
AbpClaimTypes.SurName,
JwtClaimTypes.PreferredUserName,
JwtClaimTypes.GivenName,
JwtClaimTypes.FamilyName,
};
public AbpClaimsService(IProfileService profile, ILogger<DefaultClaimsService> logger) public AbpClaimsService(IProfileService profile, ILogger<DefaultClaimsService> logger)
: base(profile, logger) : base(profile, logger)
{ {
@ -16,13 +27,20 @@ namespace Volo.Abp.IdentityServer
protected override IEnumerable<Claim> GetOptionalClaims(ClaimsPrincipal subject) protected override IEnumerable<Claim> GetOptionalClaims(ClaimsPrincipal subject)
{ {
var tenantClaim = subject.FindFirst(AbpClaimTypes.TenantId); return base.GetOptionalClaims(subject)
if (tenantClaim == null) .Union(GetAdditionalOptionalClaims(subject));
}
protected virtual IEnumerable<Claim> GetAdditionalOptionalClaims(ClaimsPrincipal subject)
{
foreach (var claimName in AdditionalOptionalClaimNames)
{ {
return base.GetOptionalClaims(subject); var claim = subject.FindFirst(claimName);
if (claim != null)
{
yield return claim;
}
} }
return base.GetOptionalClaims(subject).Union(new[] { tenantClaim });
} }
} }
} }

7
modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AspNetIdentity/AbpResourceOwnerPasswordValidator.cs

@ -200,7 +200,12 @@ namespace Volo.Abp.IdentityServer.AspNetIdentity
{ {
if (user.TenantId.HasValue) if (user.TenantId.HasValue)
{ {
customClaims.Add(new Claim(AbpClaimTypes.TenantId, user.TenantId?.ToString())); customClaims.Add(
new Claim(
AbpClaimTypes.TenantId,
user.TenantId?.ToString()
)
);
} }
return Task.CompletedTask; return Task.CompletedTask;

Loading…
Cancel
Save