pnwt.bid
Published on

OAuth Basics

Authors

Introduction

อันที่จริงอยากเขียนเรื่องนี้มานานแล้ว แต่ยังหาคำอธิบายดีๆ ไม่ได้เลย จนช่วงหลังๆได้มีโอกาสไปฟัง และอ่านเรื่องเกี่ยวกับการทำ Authentication, Authorization มากขึ้น จึงคิดว่าไหนๆก็อ่านละ เอามาลองเขียนดูเลยด้วยละกัน

OAuth คือ มาตรฐานในการทำ Authentication, Authorization โดยแยกส่วนออกจากกัน คือ Auth server, Resources server, อาจฟังดูคล้ายกัน แต่ไม่เหมือนกัน เรามาดูกันว่าเหมือน หรือ แตกต่างกันอย่างไร

โดยหลักๆ ในการที่จะ Implement ตามหลักการของ OAuth จะต้องประกอบไปด้วย หลักการดังนี้

  1. Resource Server (ผู้ให้บริการ) ซึ่งเป็นเจ้าของข้อมูลหรือ Resource ของผู้ใช้
  2. Client Application ที่ต้องการเข้าถึงข้อมูลหรือ Resource ของผู้ใช้จากผู้ให้บริการ
  3. Authorization Server (เซิร์ฟเวอร์รับรองความถูกต้อง) ที่ทำหน้าที่ในการอนุญาตให้ application เข้าถึงข้อมูลหรือ Resource ของผู้ใช้

OAuth Grant Type

Authorization Code Grant Type

  • Authorization Code Flow เป็นหนึ่งในวิธีการอนุญาตสิทธิ์ (Grant Type) ที่เหมาะสำหรับ application ที่มี Server อยู่ด้านหลังซึ่งสามารถเก็บ Client Secret ได้อย่างปลอดภัยไว้ได้

Client Credentials Grant Type

  • Client Credentials Grant เป็นหนึ่งในวิธีการอนุญาตสิทธิ์ (Grant Type) ที่ใช้สำหรับ application ในการเข้าถึง Resource ของระบบตัวเอง โดยไม่เกี่ยวข้องกับ user เป็นเหมือนการสร้าง “ตัวแทน” ของการพูดคุยขึ้นมา และจะทำการ Authorization ในฐานะ “ตัวแทน” ของสิ่งที่สร้างมาแทน

Resources Owner Password Grant Type

  • เป็นหนึ่งในวิธีการอนุญาตสิทธิ์ (Grant Type) ที่ง่ายที่สุด แต่ก็มีความเสี่ยงด้านความปลอดภัยสูง เนื่องจากเป็นการส่ง credential เข้าไปยัง Request โดยตรงของ Authorization Server แทนที่จะไปจัดการ Authentication ผ่าน Authorization Server

Implicit Grant Type

  • Implicit Grant เป็นหนึ่งในวิธีการอนุญาตสิทธิ์ (Grant Type) ที่ถูกออกแบบมาสำหรับ Browser application เช่น Single Page Application

Device Code Grant

  • Device Code Grant เป็นหนึ่งในวิธีการอนุญาตสิทธิ์ (Grant Type) ที่ถูกออกแบบมาสำหรับอุปกรณ์ที่ไม่มี Browser หรือมีข้อจำกัดในการรับข้อมูลผ่านแป้นพิมพ์ เช่น อุปกรณ์ IoT, Smart TV เป็นต้น

Refresh Token Grant

  • Refresh Token Grant เป็นหนึ่งในวิธีการอนุญาตสิทธิ์ (Grant Type) ที่ใช้สำหรับการขอ Access Token ใหม่เมื่อ Access Token เดิมหมดอายุ โดยไม่ต้องให้ผู้ใช้ผ่านกระบวนการรับรองความถูกต้องซ้ำอีกครั้ง

ใน part ต่อไป เราจะมา เจาะรายละเอียดของแต่ละ Grant type กันว่าเป็นอย่างไรครับ

รอติดตามใน Part 2

ref:

Thank you for watching