簡化開發人員的 SAML 應用整合
了解什麼是 SAML、如何實作 SSO,以及如何快速將 SAML 應用以身分提供者(IdP)或服務提供者(SP)的身份進行整合的步驟。
單一登入(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 Assertion 是 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 Metadata URL,事情會變得更容易。這個 URL 包含所有必要的信息(如證書、SSO URL 和 IdP 實體 ID)為一體。它減少了手動複製粘貼的錯誤風險並消除了手動更新證書文件的麻煩。
從 SP 獲取的參數
- **SP 實體 ID:**SP 的唯一標識符,類似於 IdP 實體 ID。
- **Assertion Consumer Service (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 可能將“department”定義為 team,而 SP 期望其為 group。正確的映射確保通信的順暢。
- 範例:如果 IdP 簽署的 SAML 斷言中包含
- **加密斷言(可選):**為了保護敏感的驗證數據,SAML 斷言可以被加密。
- **IdP 的角色:**使用 SP 的公鑰加密斷言。
- **SP 的角色:**用其私鑰解密斷言以讀取用戶詳細信息。
到現在,你應該擁有設置 SAML 連接所需的信息。要將 Salesforce(服務提供者)與 Azure AD(身份提供者)整合,請遵循以下步驟:
- 從 Azure AD 獲取 IdP 實體 ID、SSO URL 和證書並將其配置到 Salesforce。
- 將 Salesforce 的 SP 實體 ID 和 ACS URL 提供給 Azure AD。
Logto 簡化 SAML 整合
Logto 可以作為 IdP 或 SP 支持你應用的 SAML SSO。
使用 Logto 作為 SAML IdP
Logto 允許其他應用依賴其進行聯合身份驗證並支持多因素驗證(MFA),以增強安全性。
- 創建 Logto 應用 前往 Logto 控制台 > 應用並創建一個新的 SAML 應用。
- 配置 SAML 參數 使用服務供應商的(SP)Assertion Consumer Service URL 和 SP 實體 ID 設置應用。
- 提供元數據 URL Logto 提供一個 IdP Metadata URL,SP 可以使用它自動獲取必要的詳細信息,如 SSO URL 和證書。
- 進階配置(可選)
- 你可以創建多個新證書與指紋並設置到期日期,但一次只能啟用一個證書。
- 修改 Name ID 格式以滿足你的業務需求。
- 通過從服務供應商處複製粘貼 x509 證書來啟用 SAML 斷言加密。
- 映射屬性(可選) 輕鬆自訂如何將用戶屬性共享給服務供應商(SPs)。
如需詳細指導,請訪問官方文檔這裡:SAML App
使用 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 提供 Logto 的 ACS URL 和 SP 實體 ID 給你的 IdP 以完成整合設置。
- 映射屬性(可選) 配置用戶數據映射,例如電子郵件或名稱,以確保信息在 IdP 和 Logto 之間正確傳遞。
- 添加企業電子郵件域 在“SSO 體驗”選項卡中,為企業連接器添加一個或多個電子郵件域。這確保只有具有指定域的用戶可以透過 SSO 驗證。
- 啟用 IdP 初始化 SSO(可選) 僅在企業客戶要求時啟用 IdP 初始化 SSO。此功能允許用戶直接從 IdP 儀表板登入你的應用。
如需詳細指導,請訪問官方文檔這裡:企業 SSO 文檔。
結語
SAML 提供了一種標準化、安全的 SSO 方法,使驗證更加順暢。 Logto 簡化了設置,使其無論你是設置為 IdP 還是 SP 都變得容易。通過其用戶友好的界面以及對 cloud 和 open-source 版本的支持,Logto 消除了 SAML 整合的複雜性。只需配置一些參數,你就可以將服務連接到任何 SAML IdP 或 SP,專注於為用戶打造卓越的體驗。