简化开发人员的 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: 登录端点(URL),SP 将用户重定向进行身份验证的地方。
- 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 可能将“department”定义为团队,而 SP 期望它为组。正确的映射确保顺畅的通信。
- 示例:如果由 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,专注于为用户构建出色的体验。