Authorization Code Grant Type ใน OAuth 2.0

Authorization Code Grant Type เป็นหนึ่งใน grant types ที่ใช้กันมากที่สุดใน OAuth 2.0 ออกแบบมาโดยเฉพาะสำหรับแอปพลิเคชันที่สามารถเก็บรักษา client secret ได้อย่างปลอดภัย ทำให้เหมาะสำหรับแอปพลิเคชันฝั่งเซิร์ฟเวอร์

Authorization Code Grant Type in LoadFocus

Authorization Code ทำงานอย่างไร?

  1. การเปลี่ยนเส้นทาง (Redirection):
  • แอปพลิเคชันไคลเอนต์เปลี่ยนเส้นทางผู้ใช้ไปยัง authorization endpoint ของเซิร์ฟเวอร์ OAuth 2.0 การเปลี่ยนเส้นทางนี้โดยทั่วไปจะรวม query parameters เช่น client_id, response_type (ตั้งค่าเป็น "code"), redirect_uri (ที่เซิร์ฟเวอร์จะส่งผู้ใช้กลับหลังจากอนุญาต/ปฏิเสธสิทธิ์) และ scope (ระบุระดับการเข้าถึงที่แอปพลิเคชันร้องขอ)
  1. การยืนยันตัวตนผู้ใช้ (User Authentication):
  • ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์ authorization (หากยังไม่ได้เข้าสู่ระบบ) และตรวจสอบคำขอเข้าถึงจากแอปพลิเคชันไคลเอนต์
  1. การออก Authorization Code:
  • หากผู้ใช้อนุญาตสิทธิ์ พวกเขาจะถูกเปลี่ยนเส้นทางกลับไปยังแอปพลิเคชันไคลเอนต์ผ่าน redirect_uri ที่ให้ไว้ก่อนหน้านี้ การเปลี่ยนเส้นทางยังรวม authorization code ใน URL ด้วย
  1. การแลกเปลี่ยน Token:
  • แอปพลิเคชันไคลเอนต์แลกเปลี่ยน authorization code เป็น access token โดยส่ง POST request ไปยัง token endpoint ของเซิร์ฟเวอร์ authorization คำขอนี้ประกอบด้วย authorization code, client_id, client_secret, redirect_uri และ grant_type (ตั้งค่าเป็น "authorization_code")
  1. การออก Access Token:
  • หากเซิร์ฟเวอร์ authorization ตรวจสอบ code และ client credentials ที่ให้มาสำเร็จ จะส่งคืน access token (และเลือกที่จะส่ง refresh token ด้วย) ไปยังแอปพลิเคชันไคลเอนต์
  1. เข้าถึงทรัพยากรที่ป้องกัน:
  • แอปพลิเคชันไคลเอนต์ใช้ access token ที่ได้รับเพื่อส่งคำขอไปยัง resource server (API) ในนามของผู้ใช้

วิธีกำหนดค่า Authorization Code?

  1. ลงทะเบียนแอปพลิเคชันของคุณ:
  • ก่อนเริ่ม OAuth flow ให้ลงทะเบียนแอปพลิเคชันของคุณกับผู้ให้บริการ OAuth 2.0 เมื่อลงทะเบียนสำเร็จ คุณจะได้รับ client_id และ client_secret
  1. ตั้งค่า Redirect URI:
  • เมื่อลงทะเบียนแอปพลิเคชัน คุณมักจะถูกขอให้ระบุ redirect_uri URI นี้คือที่ที่เซิร์ฟเวอร์ authorization จะส่งผู้ใช้หลังจากอนุญาต/ปฏิเสธการเข้าถึง ตรวจสอบให้แน่ใจว่า URI นี้ถูกต้องและปลอดภัย (โดยทั่วไปใช้ HTTPS)
  1. ดำเนินการ OAuth Flow:
  • ใช้ library หรือ SDK ที่เข้ากันได้กับภาษาและ framework ของแอปพลิเคชันของคุณเพื่อลดความซับซ้อนของกระบวนการนี้
  • เริ่ม flow โดยเปลี่ยนเส้นทางผู้ใช้ไปยัง authorization endpoint ของเซิร์ฟเวอร์ authorization พร้อม query parameters ที่จำเป็น
  • สร้าง endpoint บนเซิร์ฟเวอร์ของคุณที่ตรงกับ redirect_uri ที่คุณลงทะเบียน endpoint นี้จะจัดการ authorization code ที่เข้ามา
  • แลกเปลี่ยน authorization code เป็น access token โดยส่ง POST request ไปยัง token endpoint
  1. รักษาความปลอดภัย Client Secret:
  • อย่าเปิดเผย client_secret ในโค้ดฝั่งไคลเอนต์ ใช้เฉพาะฝั่งเซิร์ฟเวอร์เมื่อแลกเปลี่ยน authorization code เป็น access token เท่านั้น
  1. การจัดเก็บ Token:
  • เมื่อคุณมี access token แล้ว ให้จัดเก็บอย่างปลอดภัย ขึ้นอยู่กับความต้องการของแอปพลิเคชัน อาจเป็นใน server memory, ฐานข้อมูล หรือ secure cookie ใช้ HTTPS เสมอเพื่อรับประกันการสื่อสารที่เข้ารหัส
  1. จัดการ Token หมดอายุ:
  • Access tokens มักมีอายุสั้น หากคุณมี refresh token ให้ใช้เพื่อขอ access token ใหม่โดยไม่ต้องให้ผู้ใช้ยืนยันตัวตนอีกครั้ง

สรุปเกี่ยวกับ Authorization Code

Authorization Code Grant Type เป็นวิธีที่แข็งแกร่งและปลอดภัยสำหรับการขออนุญาตจากผู้ใช้ โดยเฉพาะสำหรับแอปพลิเคชันฝั่งเซิร์ฟเวอร์ ขั้นตอนเพิ่มเติมของการแลกเปลี่ยน authorization code เป็น access token ช่วยให้มั่นใจว่าหลีกเลี่ยงการเข้าถึงข้อมูลรับรองของผู้ใช้โดยตรง เมื่อดำเนินการ ให้ให้ความสำคัญกับความปลอดภัยเสมอ โดยใช้ HTTPS และจัดการ client secrets และ tokens อย่างปลอดภัย