OAuth คืออะไร
OAuth 2.0 คืออะไร
OAuth ย่อมาจาก Open Authentication เป็นมาตรฐานที่ใช้ในการกำหนดสิทธิ์ในการร้องขอข้อมูลของผู้ใช้ Application โดย Application นั้น ไม่จำเป็นต้องทราบรหัสผ่านของผู้ใช้ เเต่จะใช้การยืนยันตัวตนเเทน Username, Password โดยใช้ Access token ซึ่งจะได้รับมาจาก Server ซึ่ง Access token นั้นมีวันหมดอายุ เมื่อหมดอายุก็ต้องไปขอรับมาใหม่ โดยปัจจุปัน เป็น OAuth Version 2.0 เเล้วการทำงานของ OAuth เรียกว่า grant_type มีอยู่ด้วยกัน 4 เเบบ
1. Authorization Code เหมาะสำหรับใช้งานในฝั่ง web server ถ้าเราสร้าง web application ด้วย Express.js, Flask, Django, Ruby on Rails ใน code ส่วนที่เป็น back-end จะใช้ grant_type เเบบนี้การทำงาน
- ถ้าผู้ใช้เข้ามาใช้งาน web application เเล้ว login ด้วย account ของระบบอื่นๆ เช่น Facebook, Google ดังรูปตัวอย่างที่ 1
-เมื่อกดปุ่ม login ก็จะถูกพามาที่หน้าต่าง login ของผู้ให้บริการนั้น เเล้วถามการอนุญาติให้เข้าถึงข้อมูลต่างๆเช่น ข้อมูลส่วนตัว หรือ email address
-เมื่อกดอนุญาติ ผู้ให้บริการจะพาผู้ใช้กลับมายัง web application ที่ใช้งานอยู่ พร้อมทั้งส่ง Authorization code มาให้ server ของ web application
-เมื่อ server ได้รับ code เเล้ว จะติดต่อไปยัง identity provider เพื่อดูว่ามีสิทธิ์ใช้งานอะไรได้บ้าง
รูปที่ 1 ตัวอย่างหน้าต่าง login ของระบบอื่น
2. Implicit นำมาใช้ในฝั่ง client ของ web application เช่น Angular.js, React.js ซึ่งไม่จำเป็นต้องมี web server เหมือนการคุยกันระหว่าง client กับ OAuth server โดยตรง ในการติดต่อกับ server นั้น client ไม่ต้องเก็บข้อมูลลับ(Secret key) ใดๆ
การทำงาน
-ถ้าผู้ใช้เข้ามาใช้งาน web application เเล้ว login ด้วย account ของระบบอื่นๆ เช่น Facebook, Google
-เมื่อกดปุ่ม login ก็จะถูกพามาที่หน้าต่าง login ของผู้ให้บริการนั้น เเล้วถามการอนุญาติให้เข้าถึงข้อมูลต่างๆเช่น ข้อมูลส่วนตัว หรือ email address
-เมื่อกดอนุญาติ ผู้ให้บริการจะพาผู้ใช้กลับมายัง web application ที่ใช้งานอยู่ พร้อมทั้งส่ง access_token
เเละเราสามารถใช้ access_token นี้ในการค้นหาข้อมูลของผู้ใช้นั้นๆได้
3. Password Credentials ใช้ใน web application ที่ไม่มีการเข้าไป login กับผู้ให้บริการอื่น วิธีนี้เหมาะกับการใช้งานที่เป็นทางการของตัวเอง เพราะ username, password ของผู้ใช้ จะอยู่ในเครื่องที่ส่งขอ access_token ไป
การทำงาน
-เมื่อผู้ใช้เปิด application เพื่อ login โดย username, password ของผู้ใช้จะเก็บไว้ใน OAuth service ที่เราสร้างขึ้น
-ถ้า login ได้สำเร็จ จะส่ง access_token มาให้ใช้งานต่อได้
4. Client Credentials ใช้เมื่อเราต้องการทำงานบางอย่างโดยไม่เกี่ยวกับผู้ใช้ เช่น เเก้ไขข้อมูล metadata ของ application ที่ไม่เกี่ยวข้อกับผู้ใช้
การทำงาน
-client เรียกใช้ API ของผู้ให้บริการ โดยส่ง client_id กับ client_secret ไป
-ผู้ให่บริการส่ง access_token กลับมา ให้เราไปใช้งานต่อได้
ความคิดเห็น
แสดงความคิดเห็น