การ Authentication (Authen) มีหลายรูปแบบ โดยแต่ละแบบมีจุดเด่น จุดด้อย และเหมาะกับรูปแบบการใช้งานต่างกัน
รูปแบบการ Authentication ที่ใช้บ่อย
1. Basic Authentication
ส่ง username:password ที่เข้ารหัส Base64 ไปยังทุก request ผ่าน Authorization: Basic
ข้อดี
- ง่าย เร็ว ใช้งานได้เลย
ข้อเสีย
- ไม่ปลอดภัยหากไม่ใช้ HTTPS
- ต้องส่ง credentials ทุกครั้ง
- ไม่มีการหมดอายุ / revoke ได้
เหมาะกับ
- ระบบภายใน
- Testing, Prototype
2. JWT (JSON Web Token)
หลัง login จะได้ token ที่มีข้อมูลของ user อยู่ในนั้น client เก็บ token (เช่นใน localStorage) ▪︎ ส่ง token กลับทุกครั้งผ่าน Authorization: Bearer <token>
ข้อดี
- Stateless (ไม่ต้องเก็บ session ฝั่ง server)
- Token มีหมดอายุในตัว
- ใช้ข้าม service หรือ API ได้ง่าย
ข้อเสีย
- หาก token โดนขโมยแล้ว revoke ไม่ง่าย
- ใหญ่และถูก decode ได้ง่าย (แม้ verify ไม่ได้)
เหมาะกับ
- SPA (Single Page App), Mobile app
- Microservices ที่ต้องการแชร์ token กัน
3. Session-based Authentication
Server เก็บ session ไว้ใน memory หรือ database Client ได้ session ID (เช่นใน cookie) แล้วส่งกลับมาในทุก request
ข้อดี
- ปลอดภัยกว่าแบบ basic
- revoke session ได้ง่าย
ข้อเสีย
- ต้องมีการเก็บ state ฝั่ง server
- cale ยากขึ้นถ้าเป็นระบบใหญ่
เหมาะกับ
- เว็บทั่วไปที่ใช้ server-side rendering
- ระบบที่ต้องการ secure session management
4. OAuth 2.0
ใช้เพื่อยืนยันตัวตนผ่านบุคคลที่สาม เช่น Google, Facebook User login กับ provider แล้ว provider ส่ง token มาให้
ข้อดี
- ไม่ต้องจัดการระบบ auth เอง
- ปลอดภัย เชื่อถือได้
ข้อเสีย
- ซับซ้อนกว่าการทำ auth ทั่วไป
- ต้องผูกกับ third-party provider
เหมาะกับ
- Login ด้วย Social
- SSO (Single Sign-On)
- บริการที่ต้องเข้าถึงข้อมูลของ user จาก third-party (เช่น Google Drive)
5. API Key
client ส่ง API key มากับ request header หรือ query parameter
ข้อดี
- ใช้งานง่าย
- ควบคุมสิทธิ์ต่อ endpoint ได้
ข้อเสีย
- ไม่ปลอดภัยถ้า key รั่ว
- ไม่มีระบบผู้ใช้/ยืนยันตัวตน
เหมาะกับ
- Public API
- บริการแบบ machine-to-machine