• oauth
  • device flow
  • cli
  • authentication
  • device code

บทนำสั้นๆ เกี่ยวกับ OAuth 2.0 Device Flow

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

Yijun
Yijun
Developer

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

อย่างไรก็ตาม เมื่อผู้ใช้พยายามใช้แอปในอุปกรณ์ที่ไม่มีเบราว์เซอร์หรือความสามารถในการป้อนข้อมูลข้อมูลรับรองบัญชีของพวกเขา เราจะทำการยืนยันตัวตนผ่าน OAuth 2.0 ได้อย่างไร และนี่คือที่ที่ 'device flow' เข้ามามีบทบาท

OAuth 2.0 Device Flow คืออะไร

OAuth 2.0 device flow เป็นการนำโปรโตคอล OAuth 2.0 มาใช้เพื่อรองรับอุปกรณ์ที่มีความสามารถในการป้อนข้อมูลจำกัดหรือไม่มีเบราว์เซอร์ที่เหมาะสม อุปกรณ์เหล่านี้รวมถึงสมาร์ททีวี, อุปกรณ์ IoT, เครื่องพิมพ์, ฯลฯ

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

นอกจากนี้ Device Flow มักถูกใช้สำหรับเครื่องมือ CLI (เช่นที่ Stripe, Github, Cloudflare มอบให้) เพราะเครื่องมือ CLI มักทำงานบนระบบปฏิบัติการที่ไม่มีอินเตอร์เฟซกราฟิก

ลำดับการโต้ตอบของผู้ใช้เมื่อใช้ Device Flow

เมื่อผู้ใช้ใช้ Device Flow สำหรับการยืนยันตัวตน จะประกอบด้วยขั้นตอนหลักๆ ต่อไปนี้:

  1. Device Client ร้องขอการอนุญาตจากเซิร์ฟเวอร์การยืนยันตัวตนด้วยตัวระบุลูกค้า (โดยปกติจะเป็น client id บนแพลตฟอร์มเซิร์ฟเวอร์การยืนยันตัวตน)
  2. เซิร์ฟเวอร์การยืนยันตัวตนตอบสนองต่อ Device Client ด้วยรหัสอุปกรณ์, รหัสผู้ใช้ และ URI การยืนยัน
  3. Device Client แสดง URI การยืนยันและรหัสผู้ใช้ให้กับผู้ใช้ในรูปแบบข้อความ (หรือรหัส QR, ฯลฯ) โดยแนะนำให้ผู้ใช้เข้าชม URI และป้อนรหัส
  4. พร้อมกันกับขั้นตอนที่ 3, Device Client เริ่มการตรวจสอบเพื่อขอรับโทเค็นการเข้าถึงด้วยรหัสอุปกรณ์และตัวระบุลูกค้าจากเซิร์ฟเวอร์การยืนยันตัวตนและเริ่มรอผู้ใช้เพื่อทบทวนคำขออนุญาตและดำเนินการอนุญาตผู้ใช้ให้เสร็จสมบูรณ์
  5. ผู้ใช้เข้าชม URI การยืนยันที่โฮสต์โดยเซิร์ฟเวอร์การยืนยันตัวตน ผ่านเบราว์เซอร์ในอุปกรณ์อื่น และป้อนรหัสผู้ใช้
  6. เซิร์ฟเวอร์การยืนยันตัวตนเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าลงชื่อเข้าใช้และแนะนำให้ผู้ใช้ทำการลงชื่อเข้าใช้
  7. ผู้ใช้ทำการลงชื่อเข้าใช้ให้เสร็จสมบูรณ์และลงชื่อเข้าใช้สำเร็จ
  8. เซิร์ฟเวอร์การยืนยันตัวตนเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเสร็จสิ้นการลงชื่อเข้าใช้และแนะนำให้ผู้ใช้ปิดเบราว์เซอร์
  9. พร้อมกันกับขั้นตอนที่ 8, เซิร์ฟเวอร์การยืนยันตัวตนส่งคืนโทเค็นการเข้าถึงไปยัง Device Client เนื่องจากลูกค้ากำลังตรวจสอบมาตั้งแต่ขั้นตอนที่ 4

หลังจากกระบวนการเหล่านี้, Device Client จะสามารถรับโทเค็นการเข้าถึงสำหรับบริการต่อไปได้!

สรุป

ตามที่คุณได้สังเกตเห็น, OAuth 2.0 Device Flow มอบวิธีการลงชื่อเข้าใช้ที่เป็นมิตรกับผู้ใช้สำหรับอุปกรณ์ที่ไม่มีความสามารถในการป้อนข้อมูลง่ายหรือเบราว์เซอร์ สิ่งนี้เป็นสิ่งสำคัญสำหรับอุปกรณ์อย่างสมาร์ททีวี, อุปกรณ์ IoT, และเครื่องมือ CLI ที่ทำงานในอุปกรณ์ที่ไม่มีอินเตอร์เฟซกราฟิก

ข่าวน่าตื่นเต้นรออยู่ขณะที่ Logto กำลังอยู่ในกระบวนการสนับสนุนฟีเจอร์ Device Flow ติดตามและเราจะอัปเดตคุณด้วยข่าวสารล่าสุด