跳到內容

OAuth 2.0 總覽

OAuth 2.0 是目前最廣泛使用的授權框架,由 RFC 6749 定義。它讓第三方應用程式能夠以安全、標準化的方式存取使用者資源,而不需要讓使用者交出帳號密碼。

在 OAuth 2.0 之前,如果你想讓某個應用程式(例如印表服務)存取你的 Google 相片,唯一的方式是把你的 Google 帳號密碼直接給它。這帶來幾個問題:

  • 應用程式可以用你的身分做任何事,不只是讀相片
  • 你無法單獨撤銷這個應用程式的存取權,只能改密碼
  • 若應用程式遭到入侵,你的密碼就洩漏了

OAuth 2.0 的核心概念是委派授權(Delegated Authorization):使用者授權第三方應用程式在有限範圍內存取資源,不需要共享密碼。

角色說明範例
Resource Owner資源擁有者,通常是使用者
Resource Server存放資源的伺服器Google Photos API
Client想要存取資源的應用程式印表服務 App
Authorization Server核發 Token 的伺服器Google 登入系統

Access Token 是授權的憑證,Client 持有 Token 就能存取 Resource Server 上的特定資源。Token 通常是短效的(數分鐘到數小時),失效後需要重新取得或用 Refresh Token 更新。

Scope 定義了這次授權的範圍,例如 read:photos 只允許讀取相片,無法刪除或上傳。使用者在授權頁面看到的「此應用程式將能夠…」就是 scope 的描述。

OAuth 2.0 定義了多種授權流程,適用不同的應用情境:

OAuth 2.1 並非新版本,而是 OAuth 2.0 的安全性整合——它把過去十年的最佳實踐與安全修補整合進一份文件,同時移除了不安全的流程(如 Implicit Flow、Resource Owner Password Credentials)。