Các ứng dụng hiện đại dùng nhiều cơ chế authentication — dựa trên session, dựa trên token (JWT), và authentication ủy quyền (OAuth/OpenID Connect). Hiểu cách mỗi loại hoạt động và sự đánh đổi của chúng là quan trọng để triển khai authentication an toàn.
Authentication dựa trên session
Dựa trên SESSION (truyền thống):
→ người dùng đăng nhập → server tạo một SESSION (lưu phía server) → gửi một session ID
cookie → trình duyệt gửi nó với mỗi request → server tra cứu session
✓ server kiểm soát session (dễ thu hồi); đơn giản; cookie tự động gửi
✗ stateful (server lưu session); để mở rộng cần shared session storage
Dựa trên token (JWT)
JWT (JSON Web Token):
→ người dùng đăng nhập → server phát hành một token ĐÃ KÝ chứa claims (user id, v.v.) →
client lưu nó → gửi nó (thường trong một Authorization header) mỗi request →
server XÁC MINH CHỮ KÝ (không cần tra cứu phía server)
✓ STATELESS (dễ mở rộng; không cần session store); phù hợp cho API/SPA/mobile
✗ khó THU HỒI trước khi hết hạn (nó tự chứa) → dùng expiry ngắn + refresh tokens
⚠️ lưu an toàn; đừng đặt secrets trong payload (đọc được); xác thực đúng cách
