JWT gồm header.payload.signature (base64url-encoded) — stateless, không cần lưu session; nhưng không thể revoke trước hạn nên access token phải ngắn (15 phút) kết hợp refresh token.
- JWT là chuẩn mở (RFC 7519) để truyền thông tin an toàn dưới dạng JSON, được ký số để đảm bảo tính toàn vẹn.
- Gồm 3 phần ngăn cách bởi dấu chấm, mỗi phần base64url-encoded: Header (
{alg: 'HS256', typ: 'JWT'}), Payload (claims như{sub: userId, exp: timestamp, role: 'admin'}), Signature (HMAC của header+payload bằng secret key). - Ưu điểm stateless: server không cần lưu session, chỉ cần verify signature — phù hợp microservices và horizontal scaling.
- Nhược điểm quan trọng: không thể revoke JWT trước khi hết hạn (không có centralized blacklist), nên access token phải có
expngắn (15 phút) kết hợp refresh token.
Pitfall phổ biến nhất: lưu JWT trong localStorage thay vì httpOnly cookie — dễ bị XSS đánh cắp.