什么是安全断言标记语言 (SAML)?

安全断言标记语言 (SAML) 是一种开放的、基于 XML 的标准,允许身份提供商 (IdP) 将用户的身份验证和授权数据安全地传递给服务提供商 (SP)。简单来说,SAML 是一种主要技术,让用户只需登录一次即可访问多个应用程序,而无需重新输入凭据。

SAML 有什么用途?

SAML 通常用于用户需要安全、便捷地访问多个应用程序的场景。最常见的使用场景包括:

  • 单点登录 (SSO):登录一次即可访问多个应用程序,无需为每项服务重新输入凭据。
  • 联合身份:SAML 允许组织信任由合作伙伴或母公司签发的身份,使来自受信任域的用户无需单独创建账户即可获得访问权限。
  • 企业访问管理:IT 团队通过单一 IdP 路由登录,集中控制哪些用户可以访问哪些应用程序,并有助于在所有应用程序中统一实施多因素身份验证 (MFA) 等策略。

在每种使用场景中,IdP 都会签发一份已签名的 XML 断言,并通过用户的浏览器将其传递给 SP,从而安全传输身份验证数据,而无需用户再次登录。

SAML 的关键组成部分

SAML 交换通常涉及多个组成部分的协同工作。以下是一些核心术语,有助于理解身份验证过程:

  • 主体 (subject):正在接受身份验证的用户,通常是尝试访问特定应用程序的人员。
  • 身份提供商 (IdP):验证用户身份并签发断言的系统,例如 Microsoft Entra ID 或 Okta,从而完成实际登录。
  • 服务提供商 (SP):用户想要访问的应用程序或网站,依赖 IdP 确认用户身份,而不是自行管理登录凭据。
  • SAML 断言:IdP 发送给 SP 的已签名 XML 声明,其中包含用户的身份和授权数据(详见下文)。
  • 元数据:双方提前交换的配置信息,包括端点、证书等,用于建立 IdP 和 SP 之间的信任关系并确保双方能够通信。
  • 签名证书:包含公钥的数字证书,SP 使用其中的公钥验证断言签名,在 SP 和 IdP 之间建立信任,并确认断言在传输过程中未被篡改。

SAML 身份验证是如何工作的?

SAML 身份验证通过将已签名的断言从 IdP 传递至 SP,确认用户的身份。SP 发起的流程是最常见的 SAML 身份验证方式,始于用户访问想要使用的网站或应用程序。如果应用程序依赖外部 IdP 进行登录,它会携带 SAML 身份验证请求,将用户的浏览器重定向到 IdP。随后,IdP 会检查用户的凭据以验证其身份;如果用户已有活动会话,则跳过此步骤。IdP 验证通过后,会生成已签名的断言,并通过浏览器将其发送回 SP。最后,SP 验证断言签名并信任该断言,让用户直接访问应用程序,无需再次单独登录。虽然 SP 发起的身份验证是 SAML 中最常见的方式,但也存在 IdP 发起的流程,即用户从 IdP 端开始操作,例如点击公司仪表板上的应用程序磁贴。

什么是 SAML 断言?

SAML 断言是 IdP 发送给 SP、用于证明用户身份的已签名 XML 文档。每个断言可包含一条或多条声明,这些声明是 SP 用于决定是否向用户授予访问权限的具体信息。声明有三种类型:

  • 身份验证声明用于确认用户身份、登录时间和登录方式(即是否使用了 MFA)。
  • 属性声明包含用户的其他信息,例如其角色或部门。SP 可使用这些属性来决定用户可以查看哪些内容或执行哪些操作。
  • 授权决策声明用于指明是否授予用户访问特定资源的权限。此类声明很少使用,因为更复杂的授权通常由可扩展访问控制标记语言 (XACML) 处理。

SAML 与其他身份验证标准的比较

SAML 通常与其他身份和访问协议一起使用,这些协议的功能相互关联,但各不相同。SAML 的主要用途是处理身份验证,确认用户身份以及其是否有权访问网站或应用程序。正是这种身份验证功能使 SAML 区别于 OAuth。OAuth 是一种授权协议,用于授予应用程序访问特定资源的权限。SAML 和 OAuth 是互补而非竞争关系:SAML 用于确认身份,OAuth 用于授予访问权限。

OpenID Connect (OIDC) 与 SAML 更为相似,因为两者都用于用户身份验证并支持 SSO。但是,OIDC 是构建在 OAuth 之上的身份验证层,使用适用于现代 Web 和移动应用程序的 JSON Web 令牌 (JWT);相比之下,SAML 基于 XML 的方式仍广泛用于企业 Web SSO,不过 OIDC 正日益成为新应用程序的默认选择。相比之下,轻量级目录访问协议 (LDAP) 是一种较早的目录协议,早于云计算出现,专为本地部署环境设计。LDAP 并不与 SAML 竞争,而通常位于 SAML IdP 的后端,作为用户凭据的来源。

SAMLOAuthOIDCLDAP
作用身份验证和单点登录 (SSO)授权身份验证(基于 OAuth)目录访问
格式已签名的 XML 断言访问令牌JWT目录查询
最适合的场景企业 Web 应用程序 SSO委派 API 访问移动和云原生应用程序本地部署目录

SAML

作用身份验证和单点登录 (SSO)
格式已签名的 XML 断言
最适合的场景企业 Web 应用程序 SSO

OAuth

作用授权
格式访问令牌
最适合的场景委派 API 访问

OIDC

作用身份验证(基于 OAuth)
格式JWT
最适合的场景移动和云原生应用程序

LDAP

作用目录访问
格式目录查询
最适合的场景本地部署目录

SAML 的优缺点

SAML 既有诸多优势,也存在需要权衡的因素,采用前值得深入了解。

SAML 的优势

SAML 的最大优势在于减少用户需要管理的密码数量。通过一次登录即可访问多个应用程序,用户需要记住的凭据更少,从而缩小攻击面并降低凭据被盗的风险。由于身份验证通过单一 IdP 进行,组织还能实现集中式策略控制;安全团队可在一个位置对所有已连接的应用程序统一实施 MFA。这种集中化能够降低服务台成本,因为密码重置请求减少了,从而减轻 IT 支持通常面临的压力。

SAML 的局限性

只有正确配置标记语言,SAML 的优势才能充分发挥。它依赖 XML 签名和 XML 加密来保障消息完整性和隐私性,并结合 TLS 确保传输安全。最常见的 SAML 漏洞之一与配置错误有关,例如未能正确验证签名。其基于 XML 的模型不如现代令牌格式灵活,因此 SAML 在移动应用程序和单页应用程序中的实施更具挑战性。

撤销 Cookie 同意我们重视您的隐私

我们的网站使用 cookies 为您提供最佳的浏览体验、提供有关我们产品和内容的个性化广告,并分析网站流量。 如需了解更多信息,请参阅我们的隐私政策。

注册免费试用

立即购买