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); }
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); }
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); }