public override async Task GetProfileDataAsync(ProfileDataRequestContext context) { Claim userimage = context.Subject.FindFirst(Common.Constants.DtClaimTypes.UserImage); string userName = context.Subject.GetName(); GetUserByUserNameFromAdDto user = await _mediator.Send(new GetUserByUserNameFromAdQuery { UserName = userName }); List <GetPermissionsByUserAndScopesDto> permissions = await _mediator.Send(new GetPermissionsByUserAndScopesQuery { Scopes = context.Client.AllowedScopes, UserName = userName }); List <Claim> claims = new List <Claim>(); claims.AddRange(context.Subject.Claims);//.Where(c => c.Type != IdentityServer3Constants.ClaimTypes.Subject)); //claims.Add(new Claim(IdentityServer3Constants.ClaimTypes.Subject, $"{user.LastName} {user.FirstName}")); if (permissions != null && permissions.Any()) { claims.AddRange(permissions.Select(permission => new Claim($"{permission.ScopeName}_{permission.ClaimName}", permission.ClaimValue))); } context.IssuedClaims = claims; }
public override async Task AuthenticateExternalAsync(ExternalAuthenticationContext context) { Claim nameClaim = context.ExternalIdentity.Claims.First(x => x.Type == IdentityServer3Constants.ClaimTypes.Name); string userName = "******"; if (nameClaim != null) { userName = nameClaim.Value; } if (Configs.WindowAuth) { userName = userName.Split('\\')[1]; } GetUserByUserNameFromAdDto user = await _mediator.Send(new GetUserByUserNameFromAdQuery { UserName = userName }); string fullName = $"{ user.LastName } { user.FirstName}"; List <Claim> claims = new List <Claim>(); string imageBase64String = string.Empty; if (user.JpegPhoto != null && user.JpegPhoto.Any()) { claims.Add(new Claim(Common.Constants.DtClaimTypes.UserImage, Convert.ToBase64String(user.JpegPhoto))); } claims.Add(new Claim(IdentityServer3Constants.ClaimTypes.GivenName, fullName)); claims.Add(new Claim(IdentityServer3Constants.ClaimTypes.Email, $"{ user.Email}")); claims.Add(new Claim(IdentityServer3Constants.ClaimTypes.Name, $"{ userName}")); context.AuthenticateResult = new AuthenticateResult(fullName, userName, claims, identityProvider: context.ExternalIdentity.Provider); }