หลายคนน่าจะเคยเข้าสู่ระบบของเว็บหรือแอปพลิเคชันผ่านบัญชีโซเชียล เช่น Facebook, Google, GitHub, ฯลฯ สิ่งเหล่านี้คือระบบ OAuth (Open Authorization) โดยสามารถช่วยให้เราเข้าสู่ระบบเหล่านั้นได้อย่างสะดวก ปลอดภัย และไม่ต้องแชร์รหัสผ่าน บทเรียนนี้จะมาทำความเข้าใจแนวคิดของ OAuth กันครับ
OAuth คืออะไร?
OAuth คือ โปรโตคอลการอนุญาตแบบเปิด (Open Authorization Protocol) ที่ช่วยให้ผู้ใช้สามารถอนุญาตให้แอปพลิเคชันอื่น ๆ ในการเข้าถึงข้อมูลบางส่วนบนบัญชีของผู้ใช้โดยไม่ต้องใช้รหัสผ่านจริงในการ authenticate โดยปัจจุบันเวอร์ชันล่าสุดคือ OAuth 2.0

OAuth Overview (Image source: moodle.org)
ตัวอย่างการทำงานของ OAuth
- 1. User ต้องการเข้าสู่แอปพลิเคชัน A จากนั้นแอป A จะขอให้ผู้ใช้เลือกช่องทางที่ต้องการใช้สำหรับ sign-in เข้าสู่ระบบ (เช่น Facebook, Google เป็นต้น)
- 2. ผู้ใช้เลือกบริการ (เช่น Facebook) แอป A จะนำผู้ใช้ไปยังหน้าเข้าสู่ระบบของ Facebook
- 3. ผู้ใช้กรอกข้อมูลเข้าสู่ระบบ Facebook จากนั้น Facebook จะถามผู้ใช้ว่า อนุญาตให้ แอป A เข้าถึงข้อมูลอะไรบ้าง (เช่น ชื่อ โปรไฟล์ อีเมล)
- 4. ผู้ใช้ อนุญาต Facebook จะส่งโทเค็น (Access Token) กลับไปยัง แอป A
- 5. แอป A ได้รับโทเค็น แอป A จะใช้ token นี้เพื่อติดต่อกับ Facebook เพื่อขอสิทธิเข้าถึงข้อมูลที่ผู้ใช้อนุญาต (authorization)
ข้อดีของ OAuth
- ปลอดภัย: ผู้ใช้ไม่ต้องแชร์รหัสผ่านจริงกับแอปพลิเคชันอื่นๆ
- สะดวกสบาย: ผู้ใช้เข้าสู่ระบบได้ง่าย ไม่ต้องจำรหัสผ่านหลายอัน
- ควบคุมข้อมูล: ผู้ใช้เลือกได้ว่าจะอนุญาตให้แอปพลิเคชันเข้าถึงข้อมูลอะไรบ้าง
ตัวอย่างการใช้งาน OAuth
- เข้าสู่ระบบในเว็บไซต์หรือแอปพลิเคชันต่างๆ ด้วย Facebook, Google, หรือบริการอื่น ๆ เป็นต้น
- เชื่อมต่อบัญชีโซเชียลมีเดียกับแอปพลิเคชัน แชร์ข้อมูลได้สะดวก
- เชื่อมต่อแอปพลิเคชันต่างๆ เพื่อดึงข้อมูล เช่น แอปพลิเคชันจดบันการออกกำลังกายดึงข้อมูลจากแอปพลิเคชันสุขภาพ