mirror of https://github.com/abpframework/abp.git
2 changed files with 44 additions and 0 deletions
@ -0,0 +1,35 @@ |
|||||
|
using System.Linq; |
||||
|
using System.Security.Claims; |
||||
|
using System.Security.Principal; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Identity; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using Microsoft.IdentityModel.JsonWebTokens; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
using Volo.Abp.Security.Claims; |
||||
|
|
||||
|
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 Task ContributeAsync(AbpClaimsPrincipalContributorContext context) |
||||
|
{ |
||||
|
var identity = context.ClaimsPrincipal.Identities.FirstOrDefault(); |
||||
|
if (identity != null) |
||||
|
{ |
||||
|
var options = context.ServiceProvider.GetRequiredService<IOptions<IdentityOptions>>().Value; |
||||
|
var usernameClaim = identity.FindFirst(options.ClaimsIdentity.UserNameClaimType); |
||||
|
if (usernameClaim != null) |
||||
|
{ |
||||
|
identity.AddIfNotContains(new Claim(JwtRegisteredClaimNames.UniqueName, usernameClaim.Value)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return Task.CompletedTask; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue