Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }