Grant Type คืออะไร?

บริบทการอนุญาต OAuth 2.0

ภายในเฟรมเวิร์กของ OAuth 2.0 Authorization คำว่า "Grant Type" หมายถึงวิธีการที่แอปพลิเคชันใช้เพื่อขอ access token โดยพื้นฐานแล้ว grant type ระบุประเภทของ authorization flow ที่แอปพลิเคชันจะใช้เพื่อเข้าถึงข้อมูลผู้ใช้

Grant Types ต่าง ๆ ใน OAuth 2.0

OAuth 2.0 กำหนด grant types หลายแบบ ปรับแต่งสำหรับสถานการณ์แอปพลิเคชันที่แตกต่างกัน:

OAuth 2.0 โดยใช้ LoadFocus

  1. Authorization Code:
  • เหมาะที่สุดสำหรับ: แอปพลิเคชันที่สามารถรักษาความลับของ client secret ได้อย่างปลอดภัย มักเป็นแอปพลิเคชันฝั่งเซิร์ฟเวอร์
  • Flow: ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ยืนยันตัวตนก่อน เมื่อยืนยันตัวตนสำเร็จ จะถูกเปลี่ยนเส้นทางกลับมายังแอปพลิเคชันพร้อม authorization code แอปพลิเคชันจะแลกเปลี่ยนโค้ดนี้เป็น access token
  1. Implicit:
  • เหมาะที่สุดสำหรับ: แอปพลิเคชันที่ใช้ user-agent เช่น single-page apps
  • Flow: คล้ายกับ Authorization Code flow แต่ access token จะถูกส่งมอบโดยตรงโดยไม่มี intermediate code ถือว่าปลอดภัยน้อยกว่าวิธี Authorization Code
  1. Password (Resource Owner Password Credentials):
  • เหมาะที่สุดสำหรับ: แอปพลิเคชันที่เชื่อถือได้สูง มักเป็นขององค์กรเดียวกับ resource server
  • Flow: ผู้ใช้ป้อนชื่อผู้ใช้และรหัสผ่านโดยตรงในแอปพลิเคชัน แอปพลิเคชันจะใช้ข้อมูลรับรองเหล่านี้เพื่อขอ access token flow นี้มักไม่แนะนำเว้นแต่ไคลเอนต์จะเชื่อถือได้สูง
  1. Client Credentials:
  • เหมาะที่สุดสำหรับ: บริการหรือแอปพลิเคชันที่ต้องเข้าถึงทรัพยากรของตนเอง ไม่ใช่ของผู้ใช้
  • Flow: แอปพลิเคชันยืนยันตัวตนด้วยข้อมูลรับรองของตนเอง (เช่น client ID และ secret) และได้รับ access token เป็นการตอบแทน
  1. Device Code (สำหรับอุปกรณ์ที่ไม่มีความสามารถเบราว์เซอร์เต็มรูปแบบ):
  • เหมาะที่สุดสำหรับ: อุปกรณ์เช่น smart TVs, เกมคอนโซล หรือเครื่องพิมพ์
  • Flow: อุปกรณ์สื่อสารกับ authorization server เพื่อขอ device code และ user code ผู้ใช้ป้อน user code บนอุปกรณ์อื่น (เช่น สมาร์ทโฟน) หลังจากตรวจสอบแล้ว อุปกรณ์จะได้รับ access token
  1. Refresh Token:
  • การใช้งาน: ไม่ใช่ flow แบบเดี่ยว แต่เสริม grant types อื่น เมื่อ access token หมดอายุ refresh token ช่วยให้แอปพลิเคชันขอ token ใหม่โดยไม่ต้องให้ผู้ใช้ลงชื่อเข้าใช้อีกครั้ง

ทำไม Grant Types จึงสำคัญ?

Grant types ให้ความยืดหยุ่นสำหรับบริบทแอปพลิเคชันที่แตกต่างกัน แต่ละแบบรับประกันว่าการขอ access token มีความปลอดภัยมากที่สุดเท่าที่เป็นไปได้ตามข้อจำกัดของแอปพลิเคชัน การเลือก grant type ส่งผลต่อปฏิสัมพันธ์ระหว่างไคลเอนต์ ผู้ใช้ และ authorization server ทำให้การเลือกที่ถูกต้องมีความสำคัญทั้งในด้านการใช้งานและความปลอดภัย