|
|
@ -1,4 +1,4 @@ |
|
|
using System.Linq; |
|
|
using System.Linq; |
|
|
using System.Security.Claims; |
|
|
using System.Security.Claims; |
|
|
using System.Security.Principal; |
|
|
using System.Security.Principal; |
|
|
using System.Threading.Tasks; |
|
|
using System.Threading.Tasks; |
|
|
@ -6,15 +6,12 @@ using Microsoft.AspNetCore.Identity; |
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
using Microsoft.Extensions.Options; |
|
|
using Microsoft.Extensions.Options; |
|
|
using Microsoft.IdentityModel.JsonWebTokens; |
|
|
using Microsoft.IdentityModel.JsonWebTokens; |
|
|
|
|
|
using OpenIddict.Abstractions; |
|
|
using Volo.Abp.DependencyInjection; |
|
|
using Volo.Abp.DependencyInjection; |
|
|
using Volo.Abp.Security.Claims; |
|
|
using Volo.Abp.Security.Claims; |
|
|
|
|
|
|
|
|
namespace Volo.Abp.OpenIddict; |
|
|
namespace Volo.Abp.OpenIddict; |
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/1627
|
|
|
|
|
|
/// https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/05e02b5e0383be40e45c667c12f6667d38e33fcc/src/System.IdentityModel.Tokens.Jwt/ClaimTypeMapping.cs#L52
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class OpenIddictClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency |
|
|
public class OpenIddictClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency |
|
|
{ |
|
|
{ |
|
|
public Task ContributeAsync(AbpClaimsPrincipalContributorContext context) |
|
|
public Task ContributeAsync(AbpClaimsPrincipalContributorContext context) |
|
|
@ -26,6 +23,7 @@ public class OpenIddictClaimsPrincipalContributor : IAbpClaimsPrincipalContribut |
|
|
var usernameClaim = identity.FindFirst(options.ClaimsIdentity.UserNameClaimType); |
|
|
var usernameClaim = identity.FindFirst(options.ClaimsIdentity.UserNameClaimType); |
|
|
if (usernameClaim != null) |
|
|
if (usernameClaim != null) |
|
|
{ |
|
|
{ |
|
|
|
|
|
identity.AddIfNotContains(new Claim(OpenIddictConstants.Claims.PreferredUsername, usernameClaim.Value)); |
|
|
identity.AddIfNotContains(new Claim(JwtRegisteredClaimNames.UniqueName, usernameClaim.Value)); |
|
|
identity.AddIfNotContains(new Claim(JwtRegisteredClaimNames.UniqueName, usernameClaim.Value)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|