由 AI 翻譯,尚未經過社群審閱。 閱讀英文版

部落格 · 2023年9月26日 · Steve Simpson · 身分

深入理解 SAML 認證

理解 Salesforce 單點登入中的 SAML

在認證領域,SAML(安全斷言標記語言)在確保跨應用無縫存取方面發揮著關鍵作用。我們來深入瞭解 SAML,理解它在單點登入(SSO)中的意義,並探討它在 Salesforce 中的實現。

設定背景

設想這樣一個場景:你有兩個 Salesforce org:一個身分提供商(IDP)和一個服務提供商。服務提供商擁有你想存取的資料,但你不想使用多套憑據,而是希望用一套登入資訊就做到。這個概念聽起來很簡單,但幕後的機制可能相當複雜。

圖示:從一個 Salesforce org 單點登入到另一個。瀏覽器帶著一個 SAML 請求被髮送到身分提供商 org,再帶著一個 SAML 斷言回到服務提供商 org;每個 org 都持有對方的憑證,使用者通過聯合 ID 進行比對

SAML 領域中的關鍵術語

**使用者存取:**使用者在認證之前試圖存取服務提供商上的一個受保護資源。

**重定向:**如果使用者沒有通過認證,服務提供商會用一個 SAML 請求把他們重定向到身分提供商。如有需要,還可能一併傳送一箇中繼狀態(relay state,即使用者最初想存取的 URL)。

**IDP 認證:**身分提供商驗證使用者的身分,通常通過使用者名稱、密碼或多重身分驗證。

**SAML 斷言:**認證之後,IDP 向服務提供商傳送一個 SAML 斷言。

**服務提供商信任:**服務提供商驗證 SAML 斷言,提取使用者資訊,並授予存取權限。如果之前提供了中繼狀態,服務提供商會導航到那個特定的 URL。

SAML 總結:基本工作流程(使用者存取、重定向、認證、斷言、重定向回來、授予存取權限)、優點和關鍵術語

單點登入的好處

**簡化存取:**使用者只需要一套憑據就能存取多個服務。

**安全:**SAML 使用數位簽章來確保資料完整性並防止篡改。

**互操作性:**作為一個標準協議,SAML 可以與不同技術棧上的各種 IDP 和服務提供商對接。

更深入一步:研究 SAML 流程

**SAML 請求:**由服務提供商向 IDP 發起,請求它認證一個使用者。

從服務提供商 org 發往身分提供商 org 的 SAML 請求(AuthnRequest)示例

**SAML 響應:**IDP 在認證之後發出的一條訊息,封裝了關於使用者的詳細資訊。

來自身分提供商的 SAML 響應示例,帶有簽發者和數位簽章

**斷言:**這些是 IDP 關於使用者的宣告,包含使用者名稱或電子郵件等屬性。

**數位簽章:**用來驗證斷言,確保它們沒有被非法篡改。

**中繼狀態:**一個深度連結 URL,確保使用者在認證之後被重定向回最初想去的地方。

當用戶發起存取時,一個 SAML 請求被髮送給 IDP,IDP 驗證之後會發回一個 SAML 斷言。這個斷言經服務提供商驗證後,就為使用者提供了想要的存取權限。

時序圖:由服務提供商發起的 SAML 登入。使用者請求一個頁面,被重定向到身分提供商登入,帶著一個 SAML 斷言回來,服務提供商驗證它並建立一個工作階段

藉助瀏覽器上的 SAML Tracer 等工具,可以把這個流程視覺化。這讓認證過程一目瞭然,從最初的請求到認證之後的最終重定向。

SAML 斷言中的安全措施

為了應對潛在的安全威脅:

時間戳用來防止重放攻擊,確保 SAML 斷言只在很短的時間視窗內有效。

數位簽章保證資料在交換過程中沒有被篡改。

此外,斷言可能包含使用者屬性,比如電子郵件地址或使用者類型,讓服務提供商一側可以進行更細緻的存取控制。

結論

SAML 的核心是一個基於 XML 的協議,包含認證所需的關鍵元素。雖然它看起來像魔法,但它是精心設計的技術的成果,旨在挫敗「中間人」攻擊或重放攻擊之類的場景。

它能夠把多個服務提供商與不同技術棧的 IDP 整合在一起,這使它成為數字認證世界的一塊基石。

敬請關注

滿懷信心地開啟你的 Salesforce 身分之旅吧!想獲得更多見解和技巧,請繼續關注 www.SteveTechArc.com 和 YouTube 頻道 @SteveTechArc (opens in a new tab)。訂閱,加深你對 Salesforce 身分的理解。

與架構師同行以及正走在架構師之路上的人分享整合知識,一起改變世界!

轉錄藉助了 AI

STA 3.6