繁體中文(台灣)
  • oauth
  • device flow
  • cli
  • authentication
  • device code

OAuth 2.0 裝置流程簡介

本文探討 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. 裝置客戶端以文字(或二維碼等)形式向用戶顯示驗證 URI 和用戶代碼,指導用戶訪問 URI 並輸入代碼。
  4. 與步驟 3 同時,裝置客戶端開始從授權伺服器使用裝置代碼和客戶端標識符輪詢存取令牌,並開始等待用戶查看授權請求並完成用戶授權。
  5. 用戶通過另一設備上的瀏覽器訪問由授權伺服器托管的驗證 URI,並輸入用戶代碼。
  6. 授權伺服器將用戶重定向到登入頁面,並指導用戶完成登入。
  7. 用戶完成登入流程並成功登入。
  8. 授權伺服器將用戶重定向到登入成功頁面並指導用戶關閉瀏覽器。
  9. 與步驟 8 同時,授權伺服器將存取令牌返回給裝置客戶端,因為客戶端自步驟 4 就已開始輪詢。

經過這些過程後,裝置客戶端將能夠獲得後續服務的存取令牌!

總結

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

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