深入理解 SAML 認證
理解 Salesforce 單點登入中的 SAML
在認證領域,SAML(安全斷言標記語言)在確保跨應用無縫存取方面發揮著關鍵作用。我們來深入瞭解 SAML,理解它在單點登入(SSO)中的意義,並探討它在 Salesforce 中的實現。
設定背景
設想這樣一個場景:你有兩個 Salesforce org:一個身分提供商(IDP)和一個服務提供商。服務提供商擁有你想存取的資料,但你不想使用多套憑據,而是希望用一套登入資訊就做到。這個概念聽起來很簡單,但幕後的機制可能相當複雜。

SAML 領域中的關鍵術語
**使用者存取:**使用者在認證之前試圖存取服務提供商上的一個受保護資源。
**重定向:**如果使用者沒有通過認證,服務提供商會用一個 SAML 請求把他們重定向到身分提供商。如有需要,還可能一併傳送一箇中繼狀態(relay state,即使用者最初想存取的 URL)。
**IDP 認證:**身分提供商驗證使用者的身分,通常通過使用者名稱、密碼或多重身分驗證。
**SAML 斷言:**認證之後,IDP 向服務提供商傳送一個 SAML 斷言。
**服務提供商信任:**服務提供商驗證 SAML 斷言,提取使用者資訊,並授予存取權限。如果之前提供了中繼狀態,服務提供商會導航到那個特定的 URL。

單點登入的好處
**簡化存取:**使用者只需要一套憑據就能存取多個服務。
**安全:**SAML 使用數位簽章來確保資料完整性並防止篡改。
**互操作性:**作為一個標準協議,SAML 可以與不同技術棧上的各種 IDP 和服務提供商對接。
更深入一步:研究 SAML 流程
**SAML 請求:**由服務提供商向 IDP 發起,請求它認證一個使用者。

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

**斷言:**這些是 IDP 關於使用者的宣告,包含使用者名稱或電子郵件等屬性。
**數位簽章:**用來驗證斷言,確保它們沒有被非法篡改。
**中繼狀態:**一個深度連結 URL,確保使用者在認證之後被重定向回最初想去的地方。
當用戶發起存取時,一個 SAML 請求被髮送給 IDP,IDP 驗證之後會發回一個 SAML 斷言。這個斷言經服務提供商驗證後,就為使用者提供了想要的存取權限。

藉助瀏覽器上的 SAML Tracer 等工具,可以把這個流程視覺化。這讓認證過程一目瞭然,從最初的請求到認證之後的最終重定向。
SAML 斷言中的安全措施
為了應對潛在的安全威脅:
時間戳用來防止重放攻擊,確保 SAML 斷言只在很短的時間視窗內有效。
數位簽章保證資料在交換過程中沒有被篡改。
此外,斷言可能包含使用者屬性,比如電子郵件地址或使用者類型,讓服務提供商一側可以進行更細緻的存取控制。
結論
SAML 的核心是一個基於 XML 的協議,包含認證所需的關鍵元素。雖然它看起來像魔法,但它是精心設計的技術的成果,旨在挫敗「中間人」攻擊或重放攻擊之類的場景。
它能夠把多個服務提供商與不同技術棧的 IDP 整合在一起,這使它成為數字認證世界的一塊基石。
敬請關注
滿懷信心地開啟你的 Salesforce 身分之旅吧!想獲得更多見解和技巧,請繼續關注 www.SteveTechArc.com 和 YouTube 頻道 @SteveTechArc (opens in a new tab)。訂閱,加深你對 Salesforce 身分的理解。
與架構師同行以及正走在架構師之路上的人分享整合知識,一起改變世界!
STA 3.6