JWT là chuẩn mở (RFC 7519) để truyền thông tin dưới dạng JSON có ký số bảo đảm toàn vẹn. Chuỗi token gồm ba phần ngăn bởi dấu chấm, mỗi phần mã hoá base64url:
- Header —
{ alg: 'HS256', typ: 'JWT' } - Payload — các claim như
{ sub: userId, exp: timestamp, role: 'admin' } - Signature — HMAC của header + payload bằng secret key
Được gì: server không phải lưu session, chỉ cần verify chữ ký — rất hợp microservice và scale ngang.
Mất gì: không revoke được token trước khi hết hạn vì không có blacklist tập trung. Vì vậy access token phải để exp ngắn (15 phút) và đi kèm refresh token.
Lưu ý: sai lầm phổ biến nhất là để JWT trong localStorage thay vì httpOnly cookie — XSS lấy được ngay. Và nhớ rằng payload chỉ là base64 chứ không mã hoá, ai cầm token cũng đọc được claim.