API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. API Security
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. API Security

了解 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.
使用者點擊「登入」:應用程式將瀏覽器重新導向到授權伺服器。
2.
使用者驗證:使用者在授權伺服器的頁面上輸入憑證。
3.
同意:使用者批准應用程式的請求(「存取您的聯絡人?」)。
4.
代碼交換:伺服器帶著一次性代碼重新導向回應用程式。
5.
Token 請求:應用程式將 Code + Client Secret(或 PKCE 驗證器)發送到 Auth Server。
6.
回應:Auth Server 驗證代碼並返回:
access_token:用於呼叫 API。
id_token:用於識別使用者。
refresh_token:當舊的 Access Token 過期時,用於獲取新的。

關鍵要點#

OAuth 2.0 處理存取:用它讓 App A 存取 App B 的資源。
OIDC 處理身份:用它讓使用者登入並獲取其個人資料資訊。
永不處理密碼:透過這些協議,您的應用程式永遠不會看到使用者的密碼,從而降低了安全風險。
下一步:這些協議嚴重依賴特定的 Token 格式。您隨處可見:ey...。讓我們了解 JSON Web Tokens (JWT)。
Modified at 2025-12-29 09:35:19
Previous
身份驗證 vs. 授權
Next
JSON Web Tokens (JWT)
Built with