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