簡化開發者的 SAML 應用整合
了解 SAML 是什麼,如何實施 SSO,以及作為身份提供者 (IdP) 或服務提供者 (SP) 的快速整合 SAML 應用步驟。
單一登錄 (SSO) 對於現代應用至關重要,而SAML提供跨商業身份系統的安全且友好的身份驗證。 本指南針對開發者和設計師簡化 SAML 的步驟和實用範例,以幫助你有效地實施它。
什麼是 SAML SSO 和 SAML 應用?
安全申述標記語言 (SAML) 是一種基於 XML 的標準,用於在兩個關鍵角色之間交換身份驗證和授權數據:身份提供者 (IdP) 和 服務提供者 (SP)。 它是組織中單一登錄 (SSO) 的常見解決方案,使企業用戶生活更輕鬆,因為他們可以一次登錄並訪問多個應用。
身份提供者 (IdP) 負責管理和驗證用戶憑據,例如用戶名和密碼。 當用戶嘗試訪問受保護的服務時,IdP 確認其身份並將此確認發送給服務。
- 示例: 想像一下,在一家大公司工作,該公司使用 Microsoft Azure AD 管理員工帳戶。 當你想登錄 Salesforce 時,Azure AD 作為 IdP。 它檢查你的憑據並通知 Salesforce 你已被授權使用它。
服務提供者 (SP) 是用戶實際嘗試訪問的應用或服務。 它依賴於 IdP 處理身份驗證的繁重工作。
- 示例: 繼續上述情景,Salesforce 是 SP。 它依賴 Microsoft Azure AD (IdP) 來確認你的身份。 一旦 Azure AD 擔保,Salesforce 就會讓你進入。
當談到“SAML 應用”時,人們通常指的是 SP。
使用 SAML 協議,你可以將服務設置為 IdP 以支持應用整合(如 Azure Ad / Google Workspace);或作為 SP(如 Salesforce / Slack)以支持用戶的 SSO。
SAML 申述 是 SAML 協議的核心。 它是由 IdP 創建並發送給 SP 的數字“便條”,表示“我已確認此用戶的身份”。 接下來,我們將介紹 IdP 和 SP 的工作流程。
作為 SAML 身份提供者時
當你的服務作為 IdP 時,你啟用跨多個應用的 SAML 身份驗證。 這使得用戶能夠通過單一企業身份訪問各種服務。
以下是 IdP 的典型 SAML SSO 工作流程:
- 用戶嘗試訪問應用 (SP),例如 Salesforce。
- 應用將用戶重定向到你的 IdP 進行身份驗證。
- 用戶在你的 IdP 登錄頁面輸入其憑據。
- IdP 驗證憑證。
- 如果憑證驗證成功,IdP 將 SAML 申述發送回 SP。
- SP 處理申述,確認其有效性,並授予用戶訪問權限。
作為 SAML 服務提供者時
如果你的服務是 SP,你將與各種身份提供者集成,為用戶提供 SSO 功能。 這使得來自不同組織或租戶的企業用戶能夠安全有效地訪問你的應用。
以下是 SP 發起的 SSO 工作流程:
- 用戶嘗試登錄你的應用。
- 你的應用生成一個 SAML 請求,並將用戶重定向到 IdP 的登錄頁面。
- 用戶在 IdP 上登錄(如果已登錄則跳過此步驟)。
- IdP 驗證用戶身份,確認後,將用戶信息打包到 SAML 申述中。
- IdP 將申述發送回你的應用。
- 你的服務驗證申述。 如果有效,用戶獲得訪問你的應用的權限。
SAML SSO 的關鍵參數
為了成功整合 SAML SSO,IdP 和 SP 必須共享特定參數。以下是這些必要條件:
從 IdP 獲得的參數
- IdP 實體 ID: SAML 通訊中 IdP 的唯一標識符,類似於數字名牌。
- SSO URL: SP 將用戶重定向進行身份驗證的登錄端點(URL)。
- X.509 證書: 用於簽署 SAML 申述的公鑰,確保其安全。 這是“印章”以驗證真實性。
提示:如果你的 IdP 提供一個 SAML 元數據 URL,則事情會變得更簡單。 此 URL 包含所有必要的信息(如證書、SSO URL 和 IdP 實體 ID),減少手動複製粘貼錯誤的風險,並消除手動更新證書文件的麻煩。
從 SP 獲得的參數
- SP 實體 ID: SP 的唯一標識符,類似於 IdP 實體 ID。
- 申述消費者服務 (ACS) URL: SP 預期接收來自 IdP 的 SAML 申述的 SP 端點。
- RelayState(可選): 用於在 SAML 過程中傳遞數據,例如用戶最初嘗試訪問的 URL。
SAML 屬性映射和加密
- NameID 格式: 定義用戶標識符格式(例如,電子郵件地址或用戶名)。
- SAML 屬性: 這些是 IdP 發送給 SP 的額外用戶信息,例如角色、電子郵件或部門。
- 示例:如果由 IdP 簽署的 SAML 申述包括
email
([email protected])、role
(admin)和department
(engineering)。 SP 可以使用role
給用戶分配管理員權限,或者使用department
將用戶歸為正確的團隊。為了獲得這些必要的用戶數據,IdP 和 SP 都需要決定如何映射屬性。例如,IdP 可能將“部門”定義為 team,而 SP 期望它為 group。適當的映射可確保順暢的溝通。
- 示例:如果由 IdP 簽署的 SAML 申述包括
- 加密申述(可選):為了保護敏感身份驗證數據,SAML 申述可以被加密。
- IdP 的角色: 使用 SP 的公鑰加密申述。
- SP 的角色: 使用其私鑰解密申述以閱讀用戶信息。
現在,你應該有必要的信息來設置 SAML 連接。要整合 Salesforce(服務提供者)與 Azure AD(身份提供者),請按照以下步驟:
- 從 Azure AD 獲取 IdP 實體 ID、SSO URL 和證書,並在 Salesforce 中配置它們。
- 向 Azure AD 提供 Salesforce 的 SP 實體 ID 和 ACS URL。
Logto 簡化 SAML 整合
Logto 可以作為 IdP 或 SP 來支持你的應用的 SAML SSO。
使用 Logto 作為 SAML IdP
Logto 允許其他應用依賴它進行聯邦身份驗證,並支持多因素身份驗證 (MFA)以增強安全性。
- 創建 Logto 應用 前往 Logto 控制台 > 應用 並創建一個新的 SAML 應用。
- 配置 SAML 參數 設置應用,使用服務提供者(SP)的 申述消費者服務 URL 和 SP 實體 ID。
- 提供元數據 URL Logto 提供一個 IdP 元數據 URL,SP 可以使用它自動檢索必要的信息,如 SSO URL 和證書。
- 高級配置(可選)
- 你可以創建多個具有指紋的新證書並設置過期日期,但一次只能有一個證書是啟用的。
- 修改 Name ID 格式 以滿足你的業務需求。
- 通過從服務提供者複製粘貼 x509 證書以啟用 SAML 申述加密。
- 映射屬性 (可選) 輕鬆自定義如何將用戶屬性與服務提供者 (SP) 共享。
詳細指南,請訪問官方文檔這裡:SAML 應用
使用 Logto 作為 SAML SP
Logto 還可以通過 SAML 或 OIDC 協議與任何企業 IdP 整合。無論你是為統一的登錄頁面啟用 SP 發起的 SSO 還是配置 IdP 發起的 SSO,過程都是簡單的。
- 創建企業連接器 前往 Logto 控制台 > 企業 SSO,創建一個新的企業連接器。選擇 SAML 作為協議標準。
- 配置 SAML 參數 提供來自 IdP 的 元數據 URL 或 元數據 XML 文件。如果元數據不可用,則切換到手動配置,輸入 IdP 實體 ID、SSO URL 並上傳簽名證書。
- 分享 ACS URL 和 SP 實體 ID 向你的 IdP 提供 Logto 的 ACS URL 和 SP 實體 ID 以完成整合設置。
- 映射屬性(可選) 配置用戶數據映射,例如電子郵件或名稱,以確保信息在 IdP 和 Logto 之間正確傳遞。
- 添加企業電子郵件域 在企業連接器的“SSO 體驗”標籤中,添加一個或多個電子郵件域。這可確保只有使用指定域的用戶可以通過 SSO 進行身份驗證。
- 啟用 IdP 發起的 SSO(可選) 僅在企業客戶需要時啟用 IdP 發起的 SSO。此功能允許用戶直接從 IdP 儀表板登錄你的應用。
詳細指南,請訪問官方文檔這裡:企業 SSO 文檔。
結束語
SAML 提供了一種標準化、安全的方法進行 SSO,使身份驗證更加流暢。 Logto 簡化了整個過程,無論你是將其設置為 IdP 還是 SP。憑藉友好的界面以及對雲端和開源版本的支持,Logto 使 SAML 整合不再複雜。只需配置幾個參數,你就可以將服務連接到任何 SAML IdP 或 SP,專注於為用戶創造出色的體驗。