開發與網路
OAuth 是什麼?把鑰匙交給管家,而不是把家裡鑰匙交出去
OAuth(Open Authorization,開放授權)是一種「授權機制」而不是「認證機制」。它讓第三方應用在不取得你帳號密碼的情況下,獲得存取你資源的權限。你在同意畫面上勾選要開放的範圍,服務方發出一張存取權杖給那個應用,權杖有期限、有範圍、可以隨時撤銷。用 Google 帳號登入某個網站,走的就是這套流程。
OAuth 是什麼?把鑰匙交給管家,而不是把家裡鑰匙交出去
你一定按過「使用 Google 登入」。那一瞬間發生的事情就是 OAuth:你把「讀取某些資料」的權限給了對方,但你的密碼從頭到尾沒有離開 Google。
串接自動化工具的時候,你會一直遇到它。搞懂 OAuth 是什麼、什麼時候該用,才不會用錯工具。
你將學到什麼
定義
一種授權機制,讓第三方應用在拿不到你密碼的情況下取得存取權限。
白話比喻
把鑰匙交給管家,而不是把家裡的鑰匙整串交出去。
四個好處
不必分享密碼、可隨時撤銷、可限定範圍、業界標準廣泛支援。
跟誰容易搞混
常跟認證搞混。OAuth 管的是「你能做什麼」,不是「你是誰」。
定義
OAuth 是開放授權,一種「授權機制」而不是「認證機制」。它讓第三方應用在不取得你帳號密碼的情況下,獲得存取你資源的權限。
重點在那個「不取得密碼」。應用拿到的是一張權杖,不是你的密碼,兩者的風險等級差很遠。
白話比喻
把鑰匙交給管家,而不是把家裡鑰匙交出去。管家只能開他被允許開的那幾扇門,而且你隨時可以把那把鑰匙收回來。
傳統帳密登入是另一回事:你把整串鑰匙給對方,收不收得回來要看對方的良心。
授權碼流程走六步
- 發起請求:你在應用裡點「使用 Google 登入」。
- 導向授權:應用把你送到 Google 的登入頁。
- 使用者授權:你登入並同意授權範圍,例如讀取檔案。
- 回傳授權碼:Google 把你導回應用,網址後面附上授權碼。
- 交換權杖:應用的後端拿授權碼向 Google 換存取權杖。
- 存取資源:應用帶著權杖去資源伺服器拿資料。
前四步是你在瀏覽器裡看得到的,後兩步是伺服器之間的通訊。你的密碼只出現在 Google 自己的頁面上。
OAuth 跟傳統帳密登入差在哪?
| 項目 | OAuth 授權 | 傳統帳密登入 |
|---|---|---|
| 是否需要密碼 | 不需要 | 需要 |
| 安全性 | 高,不暴露密碼 | 較低,密碼可能外洩 |
| 可控性 | 可撤銷、可管理權限 | 難以撤銷 |
| 權限粒度 | 可精細設定 Scopes | 通常是全部存取 |
| 適用場景 | 第三方整合、API 存取 | 自有系統內部登入 |
實際用例
常見的四種:用 Google 或 Facebook 登入網站、讀取雲端硬碟檔案、串接寄信與行事曆、企業內部系統整合的權限委派。
做自動化時的判斷很單純:有使用者要點同意就用 OAuth,無人值守的排程就別用。細節可以看 AI 自動化實作檢查清單。
常見誤解
最常見的誤解是把 OAuth 當成登入功能。它的本體是授權,回答的是「這個應用可以動我哪些資料」;至於「你是誰」,是另一層的事。
第二個誤解是授權範圍勾越多越方便。實務上相反:範圍越大,被盜用時的損失越大。只給完成這件事需要的最小權限。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook。
延伸學習
常見問答
OAuth 跟 API Key 差在哪?
API Key 像你家大門的鑰匙,代表的是應用程式自己的身份,適合只用算力、不碰個人資料的公開 API。OAuth 代表的是「某個使用者授權給這個應用」,適合要存取使用者私有資料的場景,而且可以撤銷、可以限定範圍。
Scopes 授權範圍是什麼?
Scopes 是你授權時看到的那一條條權限,例如只讀雲端硬碟、寄送郵件、查看行事曆。最小權限原則是:只要求完成功能所需的最小範圍。要求越多,出事時的破壞面就越大。
無人值守的排程可以用 OAuth 嗎?
不適合。OAuth 的存取權杖有期限,過期後需要人類再點一次同意。半夜三點沒有人在電腦前面,流程就會中斷。這種場景要改用服務帳戶金鑰,讓程式自己拿鑰匙。
