02-347-7730  |  Saeree ERP - ระบบ ERP ครบวงจรสำหรับธุรกิจไทย ติดต่อเรา

OAuth 2.0 คืออะไร? — ระบบยืนยันตัวตนที่ ERP ต้องรองรับ

OAuth 2.0 คืออะไร ระบบ Authorization สำหรับ ERP
  • 28
  • มีนาคม
สำหรับทีม Implement

OAuth 2.0 คืออะไร? — ระบบยืนยันตัวตนที่ ERP ต้องรองรับ

OAuth 2.0 (Open Authorization 2.0) คือมาตรฐานเปิดสำหรับ Authorization (การอนุญาตให้เข้าถึง) ที่ให้แอปพลิเคชันหนึ่งเข้าถึงข้อมูลของผู้ใช้ในอีกระบบหนึ่ง โดยไม่ต้องรู้รหัสผ่าน ของผู้ใช้ เช่น เมื่อระบบ ERP ต้องดึงข้อมูลจากระบบ e-GP หรือเชื่อมต่อ ThaiD เพื่อยืนยันตัวตน OAuth 2.0 คือกลไกที่ทำให้เกิดขึ้นได้อย่างปลอดภัย

สรุปสั้น: OAuth 2.0 = มาตรฐาน "อนุญาตให้เข้าถึง" (Authorization) ไม่ใช่ "พิสูจน์ตัวตน" (Authentication) แอปขอ Token แทนรหัสผ่าน ทำให้เชื่อมต่อระบบภายนอกได้ปลอดภัย โดยผู้ใช้ควบคุมว่าจะให้เข้าถึงอะไรบ้าง

OAuth 2.0 ทำงานอย่างไร?

OAuth 2.0 มี 4 บทบาทหลักที่ทำงานร่วมกัน:

บทบาท (Role) ความหมาย ตัวอย่างในระบบ ERP
Resource Owner เจ้าของข้อมูล (ผู้ใช้งาน) ที่ให้ความยินยอมให้แอปเข้าถึงข้อมูลของตน เจ้าหน้าที่ที่กด "อนุญาต" ให้ ERP ดึงข้อมูลจาก ThaiD
Client แอปพลิเคชันที่ต้องการเข้าถึงข้อมูล ต้องลงทะเบียนกับ Authorization Server ก่อน Saeree ERP ที่ต้องการดึงข้อมูลจากระบบภายนอก
Authorization Server เซิร์ฟเวอร์ที่ตรวจสอบตัวตนผู้ใช้และออก Access Token ให้ Client เซิร์ฟเวอร์ ThaiD, เซิร์ฟเวอร์ GFMIS
Resource Server เซิร์ฟเวอร์ที่เก็บข้อมูล (API) รับเฉพาะ request ที่มี Access Token ที่ถูกต้อง API ของระบบ e-GP, API ของ GFMIS

ขั้นตอนการทำงาน (Authorization Code Flow)

Flow ที่ใช้มากที่สุดและปลอดภัยที่สุด มีขั้นตอนดังนี้:

ขั้นตอน ใครทำอะไร รายละเอียด
1 ผู้ใช้กด "เข้าสู่ระบบด้วย ThaiD" Client (ERP) ส่งผู้ใช้ไปยังหน้า login ของ Authorization Server
2 ผู้ใช้ยืนยันตัวตนและให้ความยินยอม Authorization Server ตรวจสอบตัวตนและถามว่า "อนุญาตให้ ERP เข้าถึงข้อมูลหรือไม่?"
3 Authorization Server ส่ง Authorization Code กลับ Code ชั่วคราว ส่งผ่าน browser redirect กลับมาที่ ERP
4 Client แลก Code เป็น Access Token ERP ส่ง Code + Client Secret ไปที่ Authorization Server ผ่าน back-channel (server-to-server)
5 Client ใช้ Access Token เรียก API ERP ส่ง Token ไปกับทุก request เพื่อดึงข้อมูลจาก Resource Server

4 Grant Types ของ OAuth 2.0

OAuth 2.0 รองรับ 4 รูปแบบการขอ Token (Grant Type) แต่ละแบบเหมาะกับสถานการณ์ที่ต่างกัน:

Grant Type ใช้เมื่อไหร่ ความปลอดภัย สถานะ
Authorization Code Web app, Mobile app ที่มี back-end server สูงสุด — Token แลกผ่าน back-channel แนะนำ (ใช้มากที่สุด)
Authorization Code + PKCE Mobile app, SPA ที่ไม่มี Client Secret สูง — เพิ่ม code_verifier ป้องกันดักจับ แนะนำสำหรับ mobile/SPA
Client Credentials Server-to-server (ไม่มีผู้ใช้เกี่ยวข้อง) สูง — ใช้ Client ID + Secret แนะนำ (M2M)
Implicit SPA เดิมที่ไม่มี back-end ต่ำ — Token ส่งผ่าน URL fragment Deprecated (เลิกใช้แล้ว)
Resource Owner Password Legacy app ที่ต้องส่ง username/password ตรง ต่ำ — Client เห็นรหัสผ่านผู้ใช้ ไม่แนะนำ

คำแนะนำ: ปัจจุบัน IETF แนะนำให้ใช้ Authorization Code + PKCE สำหรับทุกกรณี (ทั้ง web และ mobile) และ Client Credentials สำหรับ server-to-server เท่านั้น Grant Type อื่นไม่แนะนำให้ใช้ในระบบใหม่

OAuth 2.0 vs Authentication — ต่างกันอย่างไร?

หลายคนสับสนระหว่าง OAuth 2.0 กับการยืนยันตัวตน (Authentication) ซึ่งจริงๆ แล้ว OAuth 2.0 คือ Authorization (อนุญาตให้เข้าถึง) ไม่ใช่ Authentication (พิสูจน์ว่าคุณคือใคร):

ประเด็น OAuth 2.0 (Authorization) Authentication OpenID Connect (OIDC)
คำถามที่ตอบ "แอปนี้ทำอะไรได้บ้าง?" "คุณคือใคร?" ตอบได้ทั้งสองคำถาม
ผลลัพธ์ Access Token (สิทธิ์เข้าถึง) ยืนยันตัวตนสำเร็จ/ไม่สำเร็จ Access Token + ID Token
ตัวอย่าง ERP ดึงข้อมูลจาก API ภายนอก ผู้ใช้ login ด้วยรหัสผ่าน login ด้วย ThaiD เข้า ERP
มาตรฐาน RFC 6749 หลากหลาย (LDAP, SAML, etc.) ต่อยอดจาก OAuth 2.0

OpenID Connect (OIDC) คือโปรโตคอลที่ต่อยอดจาก OAuth 2.0 เพิ่มความสามารถด้าน Authentication โดยส่ง ID Token (JWT) กลับมาพร้อม Access Token ทำให้รู้ว่า "ผู้ใช้คือใคร" และ "ให้เข้าถึงอะไรได้บ้าง" — นี่คือสิ่งที่ ThaiD Login ใช้

OAuth 2.0 vs API Key vs Basic Auth

เปรียบเทียบวิธีการยืนยันตัวตนและอนุญาตเข้าถึง API ที่พบบ่อย:

ประเด็น OAuth 2.0 API Key Basic Auth
วิธีส่ง credentials Bearer Token ใน Header Key ใน Header หรือ URL username:password เข้ารหัส Base64
ความปลอดภัย สูง — Token มีอายุ, มี Scope, เพิกถอนได้ ปานกลาง — ไม่มีอายุ, เพิกถอนยาก ต่ำ — ส่งรหัสผ่านทุก request
ควบคุมขอบเขตสิทธิ์ ได้ (Scope) จำกัด (ทำได้ทุกอย่างที่ key อนุญาต) ไม่ได้ (full access)
รองรับ Third-party ได้ — ออกแบบมาเพื่อการนี้ ได้บางส่วน ไม่เหมาะ
เหมาะกับ ระบบ ERP, Single Portal, ThaiD Internal API, Webhook ระบบเก่า, การทดสอบ

ทำไม ERP ต้องรองรับ OAuth 2.0?

ในยุคที่ระบบราชการเชื่อมต่อกันมากขึ้น OAuth 2.0 กลายเป็นมาตรฐานที่ขาดไม่ได้:

  • Single Portal ภาครัฐ — รัฐบาลกำหนดให้หน่วยงานเชื่อมข้อมูลผ่าน API มาตรฐาน OAuth 2.0 เป็นพื้นฐานของการเชื่อมต่อเหล่านี้
  • ThaiD Login — ระบบยืนยันตัวตนดิจิทัลแห่งชาติใช้ OpenID Connect (ต่อยอดจาก OAuth 2.0) ERP ที่รองรับ OAuth 2.0 จึงเชื่อมต่อ ThaiD ได้ทันที
  • เชื่อมต่อระบบภายนอก — ไม่ว่าจะเป็น GFMIS, e-GP, e-Tax Invoice หรือระบบธนาคาร OAuth 2.0 เป็นมาตรฐานที่ทุกระบบรองรับ
  • API Economy — ยุคที่ระบบต้อง "คุยกัน" ได้ OAuth 2.0 ช่วยให้ ERP เชื่อมต่อกับระบบอื่น ได้อย่างปลอดภัยและเป็นมาตรฐาน
  • ความปลอดภัย — ไม่ต้องเก็บรหัสผ่านของระบบอื่น Token มีอายุจำกัด เพิกถอนได้ทันที และกำหนด Scope ได้ละเอียด

ตัวอย่างการใช้งานจริงใน Saeree ERP

Use Case Grant Type ที่ใช้ รายละเอียด
ThaiD Login Authorization Code + PKCE (OIDC) ผู้ใช้ login ด้วย ThaiD แล้ว ERP รับ ID Token + Access Token กลับมา ไม่ต้องเก็บรหัสผ่าน
API ระหว่างหน่วยงาน Client Credentials Saeree ERP ส่งข้อมูลงบประมาณไป GFMIS โดยใช้ Client ID/Secret แลก Token แบบ server-to-server
เชื่อมต่อ e-GP Client Credentials ดึงข้อมูลจัดซื้อจัดจ้างจากระบบ e-GP โดยอัตโนมัติ ใช้ Token ที่มีอายุจำกัด
ลายเซ็นดิจิทัล Authorization Code ผู้ใช้อนุญาตให้ ERP เรียกใช้บริการลายเซ็นดิจิทัลจาก CA ภายนอก

คำศัพท์ที่เกี่ยวข้อง

คำศัพท์ ความหมาย
Access Token โทเค็นที่ใช้เป็นหลักฐานว่าได้รับอนุญาตให้เข้าถึงทรัพยากรแล้ว มีอายุจำกัด (เช่น 15-60 นาที) ส่งไปกับทุก API request
Refresh Token โทเค็นที่ใช้ขอ Access Token ใหม่โดยไม่ต้องให้ผู้ใช้ login ซ้ำ มีอายุยาวกว่า Access Token (เช่น 7-30 วัน)
Scope ขอบเขตสิทธิ์ที่แอปร้องขอจากผู้ใช้ เช่น read:profile, write:documents ช่วยจำกัดสิทธิ์ตามหลัก Least Privilege
Bearer Token รูปแบบการส่ง Access Token ใน HTTP Header: Authorization: Bearer <token> ใครมี Token ก็ใช้ได้ จึงต้องส่งผ่าน HTTPS เท่านั้น
PKCE (Proof Key for Code Exchange) มาตรการเสริมความปลอดภัยของ Authorization Code Flow ใช้ code_verifier + code_challenge ป้องกันการดักจับ authorization code
OpenID Connect (OIDC) โปรโตคอลที่ต่อยอดจาก OAuth 2.0 เพิ่มการ Authentication โดยส่ง ID Token (JWT) กลับมาด้วย ตัวอย่าง: ThaiD Login, Google Login
JWT (JSON Web Token) รูปแบบ Token ที่เข้ารหัสข้อมูลผู้ใช้ไว้ภายใน ตรวจสอบได้โดยไม่ต้องเรียก database ทุกครั้ง ใช้เป็น ID Token ใน OIDC
Consent Screen หน้าจอที่ถามผู้ใช้ว่า "อนุญาตให้แอปนี้เข้าถึงข้อมูลของคุณหรือไม่?" แสดง Scope ที่แอปร้องขอ

ความสัมพันธ์ระหว่าง OAuth 2.0 กับ RBAC

OAuth 2.0 และ RBAC (Role-Based Access Control) ทำงานคนละระดับแต่เสริมกัน:

  • OAuth 2.0 — ควบคุมว่า "แอปไหนเข้าถึง API ไหนได้บ้าง" (ระดับ Application)
  • RBAC — ควบคุมว่า "ผู้ใช้คนไหนเห็นเมนูไหนได้บ้าง" (ระดับ User)
  • ใช้คู่กัน — เมื่อผู้ใช้ login ผ่าน OAuth 2.0/OIDC เข้ามาแล้ว ระบบ ERP จะใช้ RBAC กำหนดว่าผู้ใช้คนนั้นเห็นข้อมูลอะไรบ้าง
  • ร่วมกับ 2FA — เพิ่มความปลอดภัยอีกชั้นด้วย Two-Factor Authentication ก่อนออก Token

แหล่งอ้างอิง

สนใจระบบ ERP ที่รองรับ OAuth 2.0 และ ThaiD Login?

ปรึกษาผู้เชี่ยวชาญจาก Grand Linux Solution ฟรี ไม่มีค่าใช้จ่าย

ขอ Demo ฟรี

โทร 02-347-7730 | sale@grandlinux.com

Saeree ERP Author

เกี่ยวกับผู้เขียน

ไพฑูรย์ บุตรี

ผู้เชี่ยวชาญด้านระบบเน็ตเวิร์คและระบบความปลอดภัยเซิร์ฟเวอร์ บริษัท แกรนด์ลีนุกซ์ โซลูชั่น จำกัด