บทนำสั้นๆ เกี่ยวกับ OAuth 2.0 Device Flow
บทความนี้สำรวจ OAuth 2.0 Device Flow ซึ่งเป็นโซลูชั่นสำหรับการยืนยันตัวตนบนอุปกรณ์ที่ขาดเบราว์เซอร์ในการดำเนินการอนุญาตโดยอิงจากยูสเซอร์เอเจนต์หรือมีข้อจำกัดในการป้อนข้อมูล โดยการร่างวัตถุประสงค์และลำดับการโต้ตอบของผู้ใช้
ในฐานะที่เป็นเฟรมเวิร์กการอนุญาต 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 สำหรับการยืนยันตัวตน จะประกอบด้วยขั้นตอ นหลักๆ ต่อไปนี้:
- Device Client ร้องขอการอนุญาตจากเซิร์ฟเวอร์การยืนยันตัวตนด้วยตัวระบุลูกค้า (โดยปกติจะเป็น client id บนแพลตฟอร์มเซิร์ฟเวอร์การยืนยันตัวตน)
- เซิร์ฟเวอร์การยืนยันตัวตนตอบสนองต่อ Device Client ด้วยรหัสอุปกรณ์, รหัสผู้ใช้ และ URI การยืนยัน
- Device Client แสดง URI การยืนยันและรหัสผู้ใช้ให้กับผู้ใช้ในรูปแบบข้อความ (หรือรหัส QR, ฯลฯ) โดยแนะนำให้ผู้ใช้เข้าชม URI และป้อนรหัส
- พร้อมกันกับขั้นตอนที่ 3, Device Client เริ่มการตรวจสอบเพื่อขอรับโทเค็นการเข้าถึงด้วยรหัสอุปกรณ์และตัวระบุลูกค้าจากเซิร์ฟเวอร์การยืนยันตัวตนและเริ่มรอผู้ใช้เพื่อทบทวนคำขออนุญาตและดำเนินการอนุญาตผู้ใช้ให้เสร็จสมบูรณ์
- ผู้ใช้เข้าชม URI การยืนยันที่โฮสต์โดยเซิร์ฟเวอร์การยืนยันตัวตน ผ่านเบราว์เซอร์ในอุปกรณ์อื่น และป้อนรหัสผู้ใช้
- เซิร์ฟเวอร์การยืนยันตัวตนเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าลงชื่อเข้าใช้และแนะนำให้ผู้ใช้ทำการลงชื่อเข้าใช้
- ผู้ใช้ทำการลงชื่อเข้าใช้ให้เสร็จสมบูรณ์และลงชื่อเข้าใช้สำเร็จ
- เซิร์ฟเวอร์การยืนยันตัวตนเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเสร็จสิ้นการลงชื่อเข้าใช้และแนะนำให้ผู้ใช้ปิดเบราว์เซอร์
- พร้อมกันกับขั้นตอนที่ 8, เซิร์ฟเวอร์การยืนยันตัวตนส่งคืนโทเค็นการเข้าถึงไปยัง Device Client เนื่องจากลูกค้ากำลังตรวจสอบมาตั้งแต่ขั้นตอนที่ 4
หลังจากกระบวนการเหล่านี้, Device Client จะสามารถรับโทเค็นการเข้าถึงสำหรับบริการต่อไปได้!
สรุป
ตามที่คุณได้สังเกตเห็น, OAuth 2.0 Device Flow มอบวิธีการลงชื่อเข้าใช้ที่เป็นมิตรกับผู้ใช้สำหรับอุปกรณ์ที่ไม่มีความสามารถในการป้อนข้อมูลง่ายหรือเบราว์เซอร์ สิ่งนี้เป็นสิ่งสำคัญสำหรับอุปกรณ์อย่างสมาร์ททีวี, อุปกรณ์ IoT, และเครื่องมือ CLI ที่ทำงานในอุปกรณ์ที่ไม่มีอินเตอร์เฟซกราฟิก
ข่าวน่าตื่นเต้นรออยู่ขณะที่ Logto กำลังอยู่ในกระบวนการสนับสนุนฟีเจอร์ Device Flow ติดตามและเราจะอัปเดตคุณด้วยข่าวสารล่าสุด