開發與網路

OAuth 是什麼?把鑰匙交給管家,而不是把家裡鑰匙交出去

OAuth(Open Authorization,開放授權)是一種「授權機制」而不是「認證機制」。它讓第三方應用在不取得你帳號密碼的情況下,獲得存取你資源的權限。你在同意畫面上勾選要開放的範圍,服務方發出一張存取權杖給那個應用,權杖有期限、有範圍、可以隨時撤銷。用 Google 帳號登入某個網站,走的就是這套流程。
OAuth 是什麼?把鑰匙交給管家,而不是把家裡鑰匙交出去:文章重點卡

OAuth 是什麼?把鑰匙交給管家,而不是把家裡鑰匙交出去

你一定按過「使用 Google 登入」。那一瞬間發生的事情就是 OAuth:你把「讀取某些資料」的權限給了對方,但你的密碼從頭到尾沒有離開 Google。

串接自動化工具的時候,你會一直遇到它。搞懂 OAuth 是什麼、什麼時候該用,才不會用錯工具。

你將學到什麼

定義

一種授權機制,讓第三方應用在拿不到你密碼的情況下取得存取權限。

白話比喻

把鑰匙交給管家,而不是把家裡的鑰匙整串交出去。

四個好處

不必分享密碼、可隨時撤銷、可限定範圍、業界標準廣泛支援。

跟誰容易搞混

常跟認證搞混。OAuth 管的是「你能做什麼」,不是「你是誰」。

定義

OAuth 是開放授權,一種「授權機制」而不是「認證機制」。它讓第三方應用在不取得你帳號密碼的情況下,獲得存取你資源的權限。

重點在那個「不取得密碼」。應用拿到的是一張權杖,不是你的密碼,兩者的風險等級差很遠。

白話比喻

把鑰匙交給管家,而不是把家裡鑰匙交出去。管家只能開他被允許開的那幾扇門,而且你隨時可以把那把鑰匙收回來。

傳統帳密登入是另一回事:你把整串鑰匙給對方,收不收得回來要看對方的良心。

授權碼流程走六步

  1. 發起請求:你在應用裡點「使用 Google 登入」。
  2. 導向授權:應用把你送到 Google 的登入頁。
  3. 使用者授權:你登入並同意授權範圍,例如讀取檔案。
  4. 回傳授權碼:Google 把你導回應用,網址後面附上授權碼。
  5. 交換權杖:應用的後端拿授權碼向 Google 換存取權杖。
  6. 存取資源:應用帶著權杖去資源伺服器拿資料。

前四步是你在瀏覽器裡看得到的,後兩步是伺服器之間的通訊。你的密碼只出現在 Google 自己的頁面上。

OAuth 跟傳統帳密登入差在哪?

項目OAuth 授權傳統帳密登入
是否需要密碼不需要需要
安全性高,不暴露密碼較低,密碼可能外洩
可控性可撤銷、可管理權限難以撤銷
權限粒度可精細設定 Scopes通常是全部存取
適用場景第三方整合、API 存取自有系統內部登入

實際用例

常見的四種:用 Google 或 Facebook 登入網站、讀取雲端硬碟檔案、串接寄信與行事曆、企業內部系統整合的權限委派。

做自動化時的判斷很單純:有使用者要點同意就用 OAuth,無人值守的排程就別用。細節可以看 AI 自動化實作檢查清單

常見誤解

最常見的誤解是把 OAuth 當成登入功能。它的本體是授權,回答的是「這個應用可以動我哪些資料」;至於「你是誰」,是另一層的事。

第二個誤解是授權範圍勾越多越方便。實務上相反:範圍越大,被盜用時的損失越大。只給完成這件事需要的最小權限。

本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

OAuth 跟 API Key 差在哪?
API Key 像你家大門的鑰匙,代表的是應用程式自己的身份,適合只用算力、不碰個人資料的公開 API。OAuth 代表的是「某個使用者授權給這個應用」,適合要存取使用者私有資料的場景,而且可以撤銷、可以限定範圍。
Scopes 授權範圍是什麼?
Scopes 是你授權時看到的那一條條權限,例如只讀雲端硬碟、寄送郵件、查看行事曆。最小權限原則是:只要求完成功能所需的最小範圍。要求越多,出事時的破壞面就越大。
無人值守的排程可以用 OAuth 嗎?
不適合。OAuth 的存取權杖有期限,過期後需要人類再點一次同意。半夜三點沒有人在電腦前面,流程就會中斷。這種場景要改用服務帳戶金鑰,讓程式自己拿鑰匙。