การอนุญาต OAuth 2.0

OAuth 2.0 เป็นเฟรมเวิร์กการอนุญาตที่กลายเป็นมาตรฐานสำหรับการอนุญาตการเข้าถึงทรัพยากรที่ได้รับการป้องกัน มันช่วยให้แอปพลิเคชันบุคคลที่สามสามารถเข้าถึงข้อมูลผู้ใช้โดยไม่ต้องเปิดเผยข้อมูลรับรองของผู้ใช้ แทนที่จะแชร์รหัสผ่าน บริการจะมอบ token ให้

ภูมิหลัง

ลองนึกภาพว่าคุณต้องการใช้แอปพลิเคชันบุคคลที่สามที่ต้องเข้าถึงข้อมูลจากบัญชี Google ของคุณ คุณไม่อยากให้ชื่อผู้ใช้และรหัสผ่าน Google กับแอปบุคคลที่สามนี้ใช่ไหม? นี่คือที่มาของ OAuth มันช่วยให้คุณอนุญาตแอปพลิเคชันนี้เข้าถึงข้อมูล Google ของคุณโดยไม่ต้องแชร์ข้อมูลรับรอง Google

OAuth 2.0 โดยใช้ LoadFocus

พื้นฐานของ OAuth 2.0

OAuth 2.0 มุ่งเน้นที่ความเรียบง่ายสำหรับนักพัฒนาฝั่งไคลเอนต์ พร้อมมอบ flow การอนุญาตเฉพาะสำหรับแอปพลิเคชันเว็บ แอปพลิเคชันเดสก์ท็อป โทรศัพท์มือถือ และอุปกรณ์ห้องนั่งเล่น นี่คือรายละเอียดแบบย่อ:

  • Resource Owner: ผู้ใช้ที่อนุญาตแอปพลิเคชันเข้าถึงบัญชีของตน การเข้าถึงบัญชีผู้ใช้ของแอปพลิเคชันถูกจำกัดตาม "scope" ของการอนุญาตที่ให้ (เช่น การอ่านหรือเขียนข้อมูลประเภทเฉพาะ)

  • Client: แอปพลิเคชันที่ต้องการเข้าถึงบัญชีผู้ใช้ ก่อนที่จะทำได้ ต้องได้รับอนุญาตจากผู้ใช้และการอนุญาตต้องได้รับการยืนยันจาก API

  • Resource Server: เซิร์ฟเวอร์ที่โฮสต์บัญชีผู้ใช้ สามารถรับและตอบสนองต่อคำขอทรัพยากรที่ได้รับการป้องกันโดยใช้ access tokens

  • Authorization Server: เซิร์ฟเวอร์นี้ตรวจสอบตัวตนของผู้ใช้แล้วออก access tokens ให้แอปพลิเคชัน

OAuth 2.0 Flows

มี "flows" หรือ "grant types" หลายแบบสำหรับแอปพลิเคชันและกรณีการใช้งานที่แตกต่างกัน:

  • Authorization Code (สำหรับแอปที่ทำงานบนเว็บเซิร์ฟเวอร์): นี่คือ flow ที่พบบ่อยที่สุด โดยเฉพาะสำหรับแอปเว็บ มันเกี่ยวข้องกับการเปลี่ยนเส้นทางผู้ใช้ไปยังบริการ ที่พวกเขาลงชื่อเข้าใช้ หลังจากลงชื่อเข้าใช้ พวกเขาจะถูกเปลี่ยนเส้นทางกลับไปยังแอปพลิเคชันพร้อม authorization code ซึ่งแอปพลิเคชันสามารถแลกเปลี่ยนเป็น access token ได้

  • Implicit (สำหรับแอปที่ทำงานในเบราว์เซอร์): flow นี้สำหรับแอปที่ใช้ user-agent (เช่น single-page apps) ที่ access token จะถูกส่งคืนทันทีโดยไม่ต้องมีขั้นตอนแลกเปลี่ยน authorization code เพิ่มเติม

  • Resource Owner Password Credentials: flow นี้อนุญาตให้แอปพลิเคชันส่งชื่อผู้ใช้และรหัสผ่านโดยตรง แนะนำเฉพาะสำหรับแอปพลิเคชันที่เชื่อถือได้เท่านั้น เนื่องจากเกี่ยวข้องกับการแชร์ข้อมูลรับรองของผู้ใช้

  • Client Credentials: ใช้เมื่อไคลเอนต์เป็น resource owner เอง เช่น เมื่อไคลเอนต์เป็นบริการเบื้องหลัง

Tokens

แทนที่จะใช้ข้อมูลรับรองของผู้ใช้ OAuth 2.0 ใช้ tokens มีสองประเภท:

  • Access Token: อนุญาตให้แอปพลิเคชันทำคำขอ API ในนามของผู้ใช้ มีอายุการใช้งานสั้น

  • Refresh Token: สามารถใช้เพื่อขอ access token ใหม่หากต้นฉบับหมดอายุ มีอายุการใช้งานยาวนานกว่า access token

ความปลอดภัย

OAuth 2.0 อาศัย SSL/TLS สำหรับความปลอดภัย รับประกันความลับของข้อมูลระหว่างไคลเอนต์ authorization server และ resource server แม้ว่าผู้โจมตีจะสามารถดัก access token ได้ พวกเขาไม่สามารถใช้งานได้เกินวันหมดอายุ (มักเป็นระยะเวลาสั้น) หรือนอกขอบเขตที่ออกให้

สรุป

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