การ 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