示例#1
0
        public static JWTUserModel GetUserFromToken(string token)
        {
            JWTUserModel user  = null;
            var          key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(IssuerSigningKey));
            var          creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            try
            {
                var tokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
                {
                    ValidAudience            = ValidAudience,
                    ValidIssuer              = ValidIssuer,
                    IssuerSigningKey         = creds.Key,
                    ValidateIssuerSigningKey = true,
                    ValidateIssuer           = true,
                    ValidateAudience         = true,
                    ValidateLifetime         = false
                };

                var handler = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler();

                var identity = handler.ValidateToken(token, tokenValidationParameters, out Microsoft.IdentityModel.Tokens.SecurityToken validatedToken);

                if (identity.Identity.IsAuthenticated)
                {
                    user = GetJWTUser(identity.Claims);
                    user.Access_Token = token;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(user);
        }
示例#2
0
        public static JWTUserModel GetJWTUser(IEnumerable <Claim> claims)
        {
            JWTUserModel user = new JWTUserModel();

            user.UserName = claims.FirstOrDefault(k => k.Type == ClaimTypes.Upn)?.Value;
            user.Email    = claims.FirstOrDefault(k => k.Type == ClaimTypes.Email)?.Value;
            int.TryParse(claims.FirstOrDefault(k => k.Type == ClaimTypes.NameIdentifier)?.Value, out int userId);
            int.TryParse(claims.FirstOrDefault(k => k.Type == ClaimTypes.GroupSid)?.Value, out int clientId);
            //user.Role = claims.FirstOrDefault(k => k.Type == ClaimTypes.Role)?.Value;
            user.DisplayName   = claims.FirstOrDefault(k => k.Type == ClaimTypes.Name)?.Value;
            user.Refresh_Token = claims.FirstOrDefault(k => k.Type == ClaimTypes.Hash)?.Value;
            user.Id            = userId;

            return(user);
        }
示例#3
0
        public static JWTUserModel GetJWTUser(User model)
        {
            JWTUserModel user = new JWTUserModel(model);

            user.Refresh_Token = GenerateRefreshToken();
            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Upn, user.DisplayName),
                new Claim(ClaimTypes.Email, user.Email),
                new Claim(ClaimTypes.Name, user.DisplayName),
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                //new Claim(ClaimTypes.Role, user.Role),
                new Claim(ClaimTypes.Hash, user.Refresh_Token),
            };

            user.Access_Token = CreateJWTToken(claims);
            return(user);
        }