了解 OAuth 2.0 和 OpenID Connect
如果您使用 API,您將不可避免地遇到 OAuth 2.0。它是協議授權的行業標準。經常與之一起使用的是 OpenID Connect (OIDC),它在其之上增加了一個身份層。本文解釋了它們如何協同工作。什麼是 OAuth 2.0?#
OAuth 2.0 是一個授權框架,使應用程式能夠獲得對 HTTP 服務上使用者帳戶的有限存取權限。它將身份驗證委派給託管使用者帳戶的服務,並授權第三方應用程式存取使用者帳戶。關鍵概念:它允許您讓應用程式存取您的資料,而無需提供您的密碼。(例如,「使用 Google 登入」)。1.
資源擁有者 (Resource Owner):使用者(您)。
2.
用戶端 (Client):試圖存取使用者帳戶的應用程式(例如 Apidog、行動應用程式)。
3.
授權伺服器 (Authorization Server):顯示登入畫面並發布 Token 的伺服器(例如 Google 的 Auth Server、Auth0)。
4.
資源伺服器 (Resource Server):託管受保護資料的 API(例如 Google Drive API)。
常見授權類型 (Grant Types)#
技術上稱為「流程 (flows)」,它們決定了用戶端如何獲取 Token。1.
授權碼流程 (Authorization Code Flow):黃金標準。用於伺服器端應用程式和行動/SPA 應用程式(搭配 PKCE)。使用者被重新導向到 Auth Server -> 登入 -> Auth Server 重新導向回來並帶有「Code」 -> 用戶端用 Code 交換 Token。
2.
用戶端憑證流程 (Client Credentials Flow):用於機器對機器 (M2M) 通訊。服務 A 使用 Client ID 和 Secret 與服務 B 交談。不涉及使用者。
什麼是 OpenID Connect (OIDC)?#
OAuth 2.0 嚴格用 於授權(存取)。它不會告訴用戶端使用者是誰或他們何時登入。這就是 OIDC 發揮作用的地方。OIDC 是 OAuth 2.0 之上的一層薄薄的身份層。OAuth 提供 Access Token(門的鑰匙)。
OIDC 提供 ID Token(說明你是誰的身份證)。
如果您使用 OIDC,您會在回應中同時獲得這兩個 Token。ID Token 通常是一個包含使用者個人資料(電子郵件、姓名、圖片)的 JWT (JSON Web Token)。實際流程 (Auth Code)#
1.
使用者點擊「登入」:應用程式將瀏覽器重新導向到授權伺服器。
3.
同意:使用者批准應用程式的請求(「存取您的聯絡人?」)。
4.
代碼交換:伺服器帶著一次性代碼重新導向回應用程式。
5.
Token 請求:應用程式將 Code + Client Secret(或 PKCE 驗證器)發送到 Auth Server。
6.
refresh_token:當舊的 Access Token 過期時,用於獲取新的。
關鍵要點#
OAuth 2.0 處理存取:用它讓 App A 存取 App B 的資源。
OIDC 處理身份:用它讓使用者登入並獲取其個人資料資訊。
永不處理密碼:透過這些協議,您的應用程式永遠不會看到使用者的密碼,從而降低了安全風險。
Modified at 2025-12-29 09:35:19