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

身份驗證 vs. 授權

在 API 安全性討論中,您經常會聽到關於 "AuthN" 和 "AuthZ" 的術語。雖然它們聽起來很相似且經常一起使用,但它們解決的是兩個完全不同的問題。了解這種區別是保護 API 的第一步。

身份驗證 (AuthN):"你是誰?"#

身份驗證是驗證使用者、設備或系統身份的過程。它回答了問題:這個實體是他們聲稱的那個人嗎?

常見的身份驗證因素#

1.
你知道的:密碼、PIN 碼、安全問題。
2.
你擁有的:電話(SMS 代碼)、硬體金鑰、智慧型手機(驗證器應用程式)。
3.
你是什麼:指紋、Face ID、視網膜掃描。

在 API 中#

在 API 的情境中,身份驗證通常發生一次(例如,交換使用者名/密碼以獲取 Token)或透過 API Key。
範例:用戶端在 Header x-api-key: 12345 中傳送特定的 API Key。伺服器檢查其資料庫:「金鑰 12345 存在嗎?是的,它屬於 Alice。」-> Alice 已通過身份驗證。

授權 (AuthZ):"你能做什麼?"#

授權是確定已驗證身份擁有什麼權限的過程。它回答了問題:該使用者是否被允許對此特定資源執行此特定操作?
授權始終發生在成功身份驗證之後。

在 API 中#

範例:Alice 已通過身份驗證(我們知道是她)。她試圖 DELETE /users/bob。
伺服器檢查權限:「Alice 是管理員嗎?不是。Alice 擁有資源 'bob' 嗎?沒有。」
結果:403 Forbidden。Alice 已被識別,但未被授權。

比較表#

特性身份驗證 (AuthN)授權 (AuthZ)
問題你是誰?你被允許做什麼?
時機首先發生。發生在身份驗證之後。
機制密碼、生物識別、API Keys。權限、角色、Scopes、策略。
失敗代碼401 Unauthorized403 Forbidden
資料標準OpenID Connect (OIDC)、SAML。OAuth 2.0 (Scopes)。

真實世界比喻:飯店#

1.
身份驗證:你走到前台並出示你的身份證和信用卡。接待員確認你是你所說的人,並給你一張房卡。
2.
授權:你拿著房卡去電梯。
你感應它去總統套房(操作)。它起作用了(允許)。
你感應它去員工專用室(操作)。它發出紅光(拒絕)。
房卡知道你是誰,但鎖定系統決定你可以去哪裡。

在 API 中結合它們#

大多數現代 API 使用 OAuth 2.0(用於授權)通常與 OpenID Connect(用於身份驗證)搭配使用。
1.
AuthN:使用者透過身份提供者(如 Google)登入。系統驗證憑證。
2.
AuthZ:提供者發出包含 Scopes(例如 read:profile, write:posts)的 Access Token。
3.
API 呼叫:用戶端將 Token 傳送給 API。API 驗證 Token 並檢查 Scopes 以允許或拒絕請求。

關鍵要點#

身份驗證 (AuthN) = 身份 (你是誰?) -> 返回 401。
授權 (AuthZ) = 權限 (存取權) -> 返回 403。
它們是不同的步驟,但在每個安全的 API 請求中協同工作。
下一步:處理此流程的行業標準既複雜又強大。讓我們揭開 了解 OAuth 2.0 和 OpenID Connect 的神秘面紗。
Modified at 2025-12-29 09:35:19
Previous
API 安全性基礎知識
Next
了解 OAuth 2.0 和 OpenID Connect
Built with