ภาพรวม OAuth
OAuth (การให้สิทธิ์แบบเปิด) เป็นโปรโตคอลการตรวจสอบสิทธิ์ที่อนุญาตให้ผู้ใช้ให้สิทธิ์เข้าถึงทรัพยากรของตนบนเว็บไซต์หรือแอปพลิเคชันหนึ่งรายการแบบงจำกัดแก่เว็บไซต์หรือแอปพลิเคชันอื่น โดยไม่ต้องเปิดเผยข้อมูลเข้าสู่ระบบจริง
OAuth ทำหน้าที่เสมือนคนกลางที่เชื่อถือได้ ซึ่งช่วยให้คุณสามารถให้สิทธิ์แก่บริการใดบริการหนึ่งเพื่อเข้าถึงข้อมูลของคุณจากบริการอื่นโดยไม่ต้องเปิดเผยชื่อผู้ใช้และรหัสผ่านของคุณ เอกสารนี้ประกอบด้วยคำอธิบายทางเทคนิคของเวิร์กโฟลว์ OAuth และการเปรียบเทียบ OAuth ที่ใช้งานได้จริง
เวิร์กโฟลว์ OAuth
OAuth มีวิธีที่ปลอดภัยและเป็นมาตรฐานสำหรับผู้ใช้ในการให้สิทธิ์เข้าถึงข้อมูลของตนผ่านเว็บไซต์และแอปพลิเคชันต่างๆ โดยไม่ต้องเปิดเผยข้อมูลเข้าสู่ระบบ ซึ่งช่วยให้แน่ใจว่าคุณควบคุมได้ว่าบริการใดที่สามารถเข้าถึงข้อมูลของคุณได้ และช่วยให้คุณเพิกถอนสิทธิ์เข้าถึงได้ทุกเมื่อ
รายการต่อไปนี้คือคำอธิบายทีละขั้นตอนเกี่ยวกับวิธีการทำงานของ OAuth
คุณ (ผู้ใช้) ต้องการใช้เว็บไซต์หรือแอปพลิเคชัน (เรียกว่า “ไคลเอ็นต์”) ที่กำหนดให้มีสิทธิ์เข้าถึงข้อมูลของคุณบนเว็บไซต์หรือแอปพลิเคชันอื่น (เรียกว่า “เซิร์ฟเวอร์ทรัพยากร”)
ลูกค้าส่งคำขอสิทธิ์ในการเข้าถึงข้อมูลของคุณจากเซิร์ฟเวอร์ทรัพยากร โดยทั่วไปแล้ว จะทำสิ่งนี้โดยเปลี่ยนเส้นทางคุณไปยังหน้าเข้าสู่ระบบของเซิร์ฟเวอร์ทรัพยากร
คุณป้อนข้อมูลเข้าสู่ระบบของคุณในหน้าเข้าสู่ระบบของเซิร์ฟเวอร์ทรัพยากรโดยตรง ขั้นตอนนี้มีความสำคัญเนื่องจากชื่อผู้ใช้และรหัสผ่านของคุณจะไม่ถูกแชร์กับลูกค้า
เซิร์ฟเวอร์ทรัพยากรจะตรวจสอบข้อมูลประจำตัวของคุณและตรวจสอบสิทธิ์คุณ เมื่อตรวจสอบสิทธิ์แล้ว ระบบจะสร้างโทเค็นการเข้าถึงที่ไม่ซ้ำกันสำหรับลูกค้า
เซิร์ฟเวอร์ทรัพยากรจะนำคุณกลับไปยังแอปพลิเคชันไคลเอนต์ โดยให้โทเค็นการเข้าถึงพร้อมกับการเปลี่ยนเส้นทาง
ไคลเอ็นต์จะได้รับโทเค็นการเข้าถึงและส่งไปยังเซิร์ฟเวอร์ทรัพยากรทุกครั้งที่ต้องการเข้าถึงข้อมูลของคุณ
เซิร์ฟเวอร์ทรัพยากรตรวจสอบความถูกต้องของโทเค็นการเข้าถึง หากโทเค็นถูกต้อง โทเค็นจะให้สิทธิ์แก่ไคลเอ็นต์ในการเข้าถึงทรัพยากรที่ส่งคำขอในระยะเวลาที่จำกัด
ไคลเอ็นต์สามารถใช้สิทธิ์เข้าถึงที่ได้รับเพื่อดึงหรือแก้ไขข้อมูลของคุณบนเซิร์ฟเวอร์ทรัพยากรได้ แต่ภายในขอบเขตที่กำหนดโดยโทเค็นการเข้าถึงเท่านั้น ขอบเขตจะกำหนดว่าการดำเนินการและข้อมูลใดที่ไคลเอ็นต์สามารถเข้าถึงได้
หากโทเค็นการเข้าถึงหมดอายุหรือหากไคลเอ็นต์ต้องการสิทธิ์เพิ่มเติม ไคลเอ็นต์สามารถขอโทเค็นการเข้าถึงใหม่ได้โดยทำตามขั้นตอนการตรวจสอบสิทธิ์อีกครั้ง
การเปรียบเทียบ OAuth ที่ใช้งานได้จริง
ต่อไปนี้เป็นการเปรียบเทียบกับวิธีการทำงานของ OAuth โดยใช้สถานการณ์จริง
ลองนึกภาพคุณกำลังจัดงานปาร์ตี้ และคุณต้องการจ้างผู้จัดเลี้ยง (ไคลเอ็นต์) เพื่อจัดการอาหาร อย่างไรก็ตาม คุณคงไม่อยากให้คนจัดเลี้ยงมอบกุญแจบ้านของคุณ (ข้อมูลเข้าสู่ระบบของคุณ) เพราะจะทำให้พวกเขาสามารถเข้าถึงทรัพย์สินส่วนตัวทั้งหมดของคุณได้ ดังนั้น คุณจึงใช้ผู้จัดงานปาร์ตี้ที่เชื่อถือได้ (OAuth) เพื่อจัดการสิทธิ์เข้าถึง
คุณบอกผู้จัดงานปาร์ตี้ว่าคุณต้องการจ้างผู้จัดเลี้ยง ผู้จัดงานปาร์ตี้รู้วิธีจัดการสิทธิ์เข้าถึงบ้านของคุณและบริการของผู้จัดเลี้ยง
ผู้จัดงานปาร์ตี้จะติดต่อผู้จัดเลี้ยงและส่งไปที่บ้านของคุณเพื่อจัดการประชุม คุณไม่อยู่บ้าน ณ จุดนี้
ผู้จัดเลี้ยงมาถึงบ้านของคุณแต่พบว่าไม่สามารถเข้าไปได้หากไม่ได้รับอนุญาตจากคุณ (โทเค็นการเข้าถึง) ผู้จัดเลี้ยงจึงโทรหาคุณเพื่อขอเข้าบ้าน
คุณในฐานะเจ้าของบ้าน ต้องการตรวจสอบความน่าเชื่อถือของผู้จัดเลี้ยงก่อนที่จะให้สิทธิ์เข้าถึง ดังนั้น คุณจึงถามคำถามกับผู้จัดเลี้ยงเพื่อยืนยันตัวตน (การตรวจสอบสิทธิ์)
เมื่อคุณพอใจกับข้อมูลประจำตัวของผู้จัดเลี้ยงแล้ว คุณจะต้องให้รหัสการเข้าถึงชั่วคราว (โทเค็นการเข้าถึง) ผ่านทางโทรศัพท์ รหัสนี้อนุญาตให้ผู้จัดเลี้ยงเข้าบ้านของคุณและจัดเตรียมอาหารได้ แต่ต้องอยู่ภายในขอบเขตหน้าที่การจัดเลี้ยงเท่านั้น
ผู้จัดเลี้ยงจะเข้าบ้านของคุณโดยใช้รหัสเข้า และเริ่มจัดเตรียมอาหาร ผู้จัดเลี้ยงสามารถเข้าถึงห้องครัวและพื้นที่รับประทานอาหาร แต่ถูกจำกัดไม่ให้เข้าไปในห้องอื่น
หลังจากระยะเวลาที่กำหนดหรือเมื่องานปาร์ตี้สิ้นสุดลง รหัสการเข้าถึงจะหมดอายุ เพื่อให้แน่ใจว่าผู้จัดเลี้ยงไม่สามารถกลับเข้าบ้านของคุณโดยไม่ได้รับอนุญาตจากคุณ
ในสถานการณ์นี้ คุณ (เจ้าของบ้าน) เป็นผู้ใช้ ผู้จัดเลี้ยงคือแอปพลิเคชันไคลเอ็นต์ บ้านของคุณเป็นตัวแทนข้อมูลส่วนบุคคลของคุณบนเซิร์ฟเวอร์ทรัพยากร และผู้จัดงานปาร์ตี้คือ OAuth
รหัสการเข้าถึงทำหน้าที่เป็นโทเค็นการเข้าถึง ซึ่งช่วยให้ไคลเอ็นต์ (ผู้จัดเลี้ยง) จำกัดการเข้าถึงทรัพยากรของคุณ (บ้าน) โดยไม่ทำให้ข้อมูลเข้าสู่ระบบของคุณ (กุญแจบ้าน) ตกอยู่ในความเสี่ยง
OAuth ทำหน้าที่เป็นตัวกลางที่เชื่อถือได้ อำนวยความสะดวกในการแชร์ข้อมูลของคุณอย่างปลอดภัยระหว่างบริการต่างๆ ในขณะที่ยังคงควบคุมสิทธิ์เข้าถึง