繁體中文(香港)
  • oauth
  • device flow
  • cli
  • authentication
  • device code

OAuth 2.0 Device Flow 的簡介

這篇文章探討了 OAuth 2.0 的裝置流程,它是一種用於在沒有瀏覽器執行使用者代理授權或受限於輸入能力的設備上的身份驗證解決方案,概述其目標和用戶互動流程。

Yijun
Yijun
Developer

作為一個授權框架,OAuth 2.0 在各種場景中被廣泛使用。在 OAuth 提供的身份驗證流程中,最常見的是 授權碼流程。當用戶在應用中使用授權碼流程驗證身份時,應用程式會從設備中打開一個瀏覽器以訪問授權端點,然後用戶會輸入其識別碼(用戶名、電郵等)和憑證(密碼、驗證碼等)來完成身份驗證。

然而,當用戶嘗試在沒有瀏覽器甚至無法輸入賬戶憑證的設備上使用應用時,我們如何通過 OAuth 2.0 執行身份驗證?這就是「裝置流程」的用武之地。

什麼是 OAuth 2.0 裝置流程

OAuth 2.0 裝置流程是 OAuth 2.0 協定的一種實施,旨在支援輸入能力有限或缺乏合適瀏覽器的設備。這些設備包括智慧電視、物聯網設備、打印機等。

裝置流程使用戶可以在所述設備上啟動授權請求,隨後,用戶可以通過另一臺具有瀏覽器訪問和輸入能力的設備(如智能手機或個人電腦)查看授權請求並完成用戶授權。

此外,裝置流程通常用於命令列介面工具(如 Stripe、Github、Cloudflare 提供的工具),因為命令列介面工具通常在沒有圖形界面的操作系統上運行。

使用裝置流程時的用戶互動流程

當用戶使用裝置流程進行身份驗證時,主要包括以下步驟:

  1. 裝置客戶端使用客戶端標識(通常是授權伺服器平台上的客戶端 ID)向授權伺服器請求授權。
  2. 授權伺服器回應裝置客戶端,提供裝置碼、用戶碼和驗證 URI。
  3. 裝置客戶端以文字形式(或 QR 碼等)向用戶顯示驗證 URI 和用戶碼,指示用戶訪問 URI 並輸入代碼。
  4. 在步驟 3 的同時,裝置客戶端開始使用裝置碼和客戶端標識向授權伺服器輪詢訪問令牌,並等待用戶查看授權請求,完成用戶授權。
  5. 用戶通過另一個設備中的瀏覽器訪問由授權伺服器托管的驗證 URI,並輸入用戶碼。
  6. 授權伺服器將用戶重定向到登入頁,並指示用戶完成登入。
  7. 用戶完成了登入流程並成功登入。
  8. 授權伺服器將用戶重定向到登入成功頁面並指示用戶關閉瀏覽器。
  9. 在步驟 8 的同時,由於客戶端自步驟 4 開始已進行輪詢,授權伺服器將訪問令牌返回給裝置客戶端。

完成這些過程後,裝置客戶端將能獲得後續服務的訪問令牌!

總結

正如你所見,OAuth 2.0 裝置流程為缺乏簡便輸入能力或瀏覽器的設備提供了一種使用者友好的登入方法。這對於像智慧電視、物聯網設備以及在缺乏圖形界面的設備上運行的命令列介面工具等設備來說是至關重要的。

令人興奮的消息是,Logto 正在支持裝置流程功能的過程中。請持續關注,我們將為你帶來最新的更新。