SAML 和 OIDC 的差異是什麼?
本文提供 SAML 和 OIDC 協議的概述,並介紹它們的典型驗證流程。我們比較了每個協議的明顯差異、優缺點。此外,根據潛在的用戶場景,我們提供了在這兩個協議之間做出選擇的指導。
本文提供 SAML 和 OIDC 協議的概述,並介紹它們的典型驗證流程。我們比較了每個協議的明顯差異、優缺點。此外,根據潛在的用戶場景,我們提供了在這兩個協議之間做出選擇的指導。
OpenID Connect (OIDC) 和安全聲明標記語言 (SAML) 是允許身份提供者 (IdPs) 實施用戶身份驗證和存取控制的協議。每個協議都定義了自己的機制來維護經驗證用戶的身份,然後用來授予或拒絕對受保護應用的存取。
IdPs 維護用戶身份信息的數據庫。服務提供者 (SPs) 依賴於這些信息來驗證用戶,有時允許單次身份驗證可用於多個應用上(單一登錄)。OIDC 和 SAML 是定義這些用戶身份相關信息在這兩個實體之間如何流動的標準。它們的最終目標是相同的:用戶身份驗證。然而,它們實現這一目標的方法有所不同。
自 2005 年以來,SAML 2.0 是當前的標準版本。它使用 XML 來格式化身份信息、請求和響應。XML 是一種成熟的文件格式標準,既容易讓人理解,也能被計算機解讀。要傳送或接收 XML 編碼的信息,它使用基本的 SOAP 或 HTTP 請求。SAML 協議定義的服務請求身份信息的是服務提供者 (SP)。
在介紹典型的 SAML 身份驗證過程之前,我們需要了解 SAML 驗證所依賴的元件。在 IdP 和 SP 可以互相識別並完成驗證過程之前,它們需要通過 XML 格式的元數據進行 "交換" 必要信息。交換的信息包括:
一旦 IdP 和 SP 知曉了上述信息,它們就可以進行授權過程(典型的 SP 發起身份驗證流程):
OIDC 是一個增強了 OAuth 2.0 框架的現代協議。它使用基於 JSON 的 Web 令牌 (JWT) 來構建數據負載。JWT 是一個成熟的行業標準,為實體之間安全交換和表示主張制定了指南。這些主張,本質上是加密的用戶數據,對身份驗證和管理至關重要。OIDC 主要使用普遍存在的 HTTPS 來進行數據傳輸。
如廣為人知,OIDC 協議支持多種不同的流程,包括授權碼流程、隱式流程和混合流程。在下面的例子中,我們將討論其中最安全且最典型的:授權碼流程。這也是 Logto 使用的流程。
OIDC 和 SAML 都是強大的身份驗證系統,各自有其獨特的優勢。選擇取決於你組織的具體需求。
Logto 是一款深受開發者歡迎的身份解決方案,最近推出了企業 SSO 功能。它提供對 SAML 和 OIDC 協議的支持,以及與主流 IdPs 的開箱即用集成,如 Google Workspace 和 Microsoft Entra ID(前身是 Azure AD)。使用 Logto,你可以避免自行實施 SSO 的複雜性。幾個簡單的配置步驟即可在你的身份系統中啟用 SSO 支持,讓你可以選擇合適的協議來滿足業務需求。