繁體中文(香港)
  • sso
  • saml
  • oidc

SAML 和 OIDC 有什麼區別?

在這篇文章中,我們概述了 SAML 和 OIDC 協議,以及它們的典型身份驗證流程。我們比較了每個協議的不同差異、優缺點。此外,根據潛在的用戶場景,我們提供了在這兩個協議之間進行選擇的指導。

Darcy Ye
Darcy Ye
Developer

OpenID Connect (OIDC) 和 安全性斷言標記語言 (SAML) 是身份驗證協議,允許身份提供者 (IdPs) 實施用戶身份驗證和訪問控制。每個協議都定義了自己的機制來維護已驗證用戶的身份,然後使用此身份來授予或拒絕對受保護應用的訪問。

什麼是 SAML 和 OIDC?

IdPs 維護用戶身份信息的數據庫。服務提供者 (SPs) 依賴於此信息來驗證用戶,有時允許在多個應用程序之間使用單一身份驗證 (單一登入)。OIDC 和 SAML 是定義此用戶身份相關信息在這兩方之間流動的標準。它們的最終目標是一樣的:用戶身份驗證。然而,它們為實現此目標所採取的基本方法有所不同。

SAML

自 2005 年以來,SAML 2.0 是標準的當前版本。它使用 XML 來格式化身份信息、請求和響應。XML 是一種成熟的格式化文檔的標準,它的格式方便人類和計算機理解。為了傳輸或接收 XML 編碼的信息,它使用基本的 SOAP 或 HTTP 請求。根據 SAML 協議定義,請求身份信息的服務是服務提供者 (SP)。

在我們介紹典型的 SAML 身份驗證過程之前,我們需要了解 SAML 身份驗證所依賴的元素。在 IdP 和 SP 可以彼此識別並完成身份驗證過程之前,它們需要 "交換" 必要的信息,通常通過 XML 格式的元數據完成。交換的信息包括:

  • 公鑰,由 IdP 和 SP 生成自己的私鑰和公鑰對並交換它們以簽署或加密通信。隨著網絡通信安全性的提高,大多數場景現在只需要對請求進行簽署,而省略加密步驟。
  • 端點,供 SP 向 IdP 發送 SAML 身份驗證請求,並供 SP 接收來自 IdP 的身份驗證請求的 SAML 斷言。
  • 支持的 XML 屬性格式,在完成身份驗證後,供 IdP 將所需的用戶信息傳輸給 SP。

一旦 IdP 和 SP 知曉上述信息,它們就可以進行授權流程(典型的 SP 發起的身份驗證流程):

OIDC

OIDC 是增強了 OAuth 2.0 框架的當代協議。它使用基於 JSON 的 Web 令牌 (JWT) 構建數據有效負載。JWT 是一個業界公認的標準,為在實體之間的安全交換和聲明表示制定了準則。這些聲明本質上是加密的用戶數據,對身份驗證和管理至關重要。OIDC 主要使用普遍的 HTTPS 來數據傳輸。

正如廣為承認的那樣,OIDC 協議支持多種不同的流程,包括授權代碼流程、隱式流程和混合流程。在下面的例子中,我們將演示最安全和典型的:授權代碼流程。這也是 Logto 使用的流程。

OIDC 和 SAML 的獨特方面

  • 由於其較新的開發,OIDC 比較適合現代應用程序身份驗證,而不是較舊的 SAML 標準。
  • 在歷史上,SAML 比 OIDC 早出現,並已整合到許多已建立的企業系統中。
  • 與 SAML 的大型 XML 文檔相比,OIDC 的 JWT 更緊湊,處理起來也更人性化。
  • 配置 OIDC 通常比 SAML 更簡單。
  • OIDC 的一個關鍵特性是其對 "範圍" 的定義,允許 IdP 管理多種權限。應用程序可以要求 IdP 授予特定權限,並在用戶批准後授予。這個 OIDC 的屬性為 IdP 提供了細粒度的權限控制。

如何選擇 OIDC 和 SAML?

兩者都是強大的身份驗證系統,各有其獨特的優勢。選擇取決於你組織的具體需求。

  • 對於快速和高效的身份平台部署,OIDC 比 SAML 更可取。實施 OIDC 更簡單,避免了 SAML 在元數據解析、身份驗證請求處理和 SAML 斷言分析方面所需的複雜 XML 處理。
  • OIDC 是廣泛存在 API 交互和複雜權限機制環境中的理想選擇,提供了更靈活和高效的權限控制以及更好的開發者體驗。
  • 在與基於 SAML 的已建立系統集成時,選擇 SAML 確保更順暢的系統互操作性,並減少跨不同協議的橋接工作。

市場上有沒有好的解決方案?

Logto,開發者中廣受歡迎的身份解決方案,最近推出了企業單一登入功能。它提供了對 SAML 和 OIDC 協議的支持,並與主流 IdP(如 Google Workspace 和 Microsoft Entra ID,前身是 Azure AD)有現成集成。使用 Logto,你可以避開自行實施單一登入的複雜性。通過幾個簡單的配置步驟就能在你的身份系統中啟用單一登入支持,讓你可以選擇合適的協議來滿足你的業務需求。