在討論各個組件之前,讓我們先看看當用戶發起涉及另一個不相關網站或服務的網站操作時發生的事件順序。假設用戶已使用 HTTPS 登錄到第一個網站。

  1. 站點 A 使用 OAuth 2.0 與站點 B 連接,提供用戶的驗證身份。
  2. 站點 B 發布一次性請求令牌以及唯一的密鑰。  
  3. 站點 A 將令牌和秘密發送給用戶的客戶端軟件。
  4. 客戶端軟件將請求令牌發送給授權提供商(OAuth 的主引擎)。 
  5. 如果由于任何原因,提供商未進行身份驗證,則要求客戶批準站點 B 的身份驗證。
  6. 用戶(或用戶軟件)在現場批準特定類型的交易 A。
  7. 請求令牌現在成為已批準的訪問令牌并授予用戶。
  8. 反過來,用戶將批準的訪問令牌提供給站點 A。
  9. 站點 A 現在將訪問令牌提供給站點 B。這證明了身份驗證。
  10. 站點 B(最后)代表用戶允許站點 A 訪問。
  11. 任務完成。

關于 OAuth 2.0 工作原理的討論很容易變得非常技術化。從高層次來看,基本構建塊及其功能分為五個核心組件。

  1. 范圍和同意
  2. 參與者
  3. 客戶端
  4. 令牌
  5. 流程

現在,讓我們更詳細地分解每個組件。

1. 范圍和同意

范圍是一種定義權限并為應用程序或服務可以訪問或不能訪問的內容設置邊界的機制。

當應用程序發送授權請求時,會向用戶顯示請求的具體范圍,并且用戶必須授權同意。 

此同意作為授權證明并允許授予訪問令牌。

2. 演員

OAuth 流程中出現四個參與者:

3. 客戶端

客戶端可以是機密的,也可以是公開的。機密客戶端顧名思義就是保守秘密。它們在安全區域運行,最終用戶無法訪問。  

公共客戶端是安全性較低的實體,例如瀏覽器、移動應用程序和物聯網設備,而機密客戶端則更安全,并且可以被授予更多對安全資源的訪問權限。

4. Token

OAuth 流中有兩種類型的令牌參與者——訪問令牌和刷新令牌。

當您終止刷新令牌時,您將獲得一個新的、經過加密簽名的訪問令牌。

通常,這些令牌采用 JavaScript 對象表示法 (JSON) 格式,稱為 JSON Web 令牌或 JWT(發音為“jots”)。JWT 允許數字簽名(也稱為聲明),稍后可以使用秘密簽名密鑰進行驗證。

令牌從授權服務器上的兩個主要端點獲取。第一個是授予用戶同意和授權的“授權端點”。授權隨后傳遞到“令牌端點”,在此處理授權并授予刷新令牌和訪問令牌。

訪問令牌是訪問 API 的關鍵。但一旦過期,就需要使用刷新令牌再次前往令牌端點,重新執行所有操作。

5. 流程

流程是客戶端訪問請求的資源所需的一系列步驟和授權授予類型。 

OAuth 2.0 包括六種流程,用于不同類型的交互。

OAuth 2.0 的潛在缺點或為什么它不足以保護你的 API

盡管 OAuth 2.0 因保護私人數據而受到開發人員和最終用戶的歡迎,但也有批評者。 

一些人猛烈抨擊 1.0 版和 2.0 版之間的重大變化,這并非毫無道理。OAuth 2.0 的安全性明顯低于其前身,而且更為復雜。 

OAuth2.0最大的詬病可能就是不直接支持客戶端驗證、簽名、通道綁定。

批評者指責 OAuth 2.0 的創建者選擇專注于提高網站和設備之間的互操作性,而不是提供額外的范圍和安全性。

OAuth 建議使用第三方保護協議(例如傳輸層安全性(TLS))  來提供附加功能。

雖然 OAuth 2.0 在安全使用私人數據方面向前邁了一步,但它遠不足以防止您的 API 受到在OWASP API 安全性前 10 名列表中排名第一的對象級授權 (BOLA) 漏洞的侵害。

公司依靠自動化 API 安全測試平臺全面測試其 API,以跟上不斷發展的安全標準。

文章來源:What Is OAuth 2.0 and How Does It Work?

上一篇:

探索API產品指標及其重要性

下一篇:

API 市場在 5 個領域中的作用
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費