Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1078

SAML

审核人Cybersecurity entrepreneur & security researcher

SAML 是什么?

SAML基于 XML 的开放标准,用于在身份提供方与服务提供方之间交换认证与授权断言。


SAML(Security Assertion Markup Language,安全断言标记语言)于 2005 年被标准化为 OASIS SAML 2.0,它定义了可信的**身份提供方(IdP)如何向服务提供方(SP)**发布带数字签名的 XML 断言,以描述用户的身份与属性,从而在不同安全域之间实现 Web 单点登录。SAML 2.0 支持 HTTP-Redirect 与 HTTP-POST 绑定;SP 在创建会话之前,必须校验断言的 XML 签名、Audience、NotOnOrAfter 时间条件以及 InResponseTo。

攻击与弱点

主要有两类失效方式。**XML 签名包装攻击(XSW)**与注释注入(comment-injection)缺陷可让攻击者将其可控的数据绕过签名验证偷偷带入。2018 年 2 月,Duo Labs 披露了跨多个流行工具包的一大类此类漏洞——CVE-2017-11427(python-saml)、CVE-2017-11428(ruby-saml)、CVE-2017-11429(saml2-js)以及 CVE-2017-11430(omniauth-saml)——其中在 NameID 中插入的 <!-- --> 注释会截断被解析的主体(subject),从而让已认证用户以另一个用户的身份登录。Golden SAML 由 CyberArk 于 2017 年提出,属于攻陷后(post-compromise)手法:窃取了 AD FS 令牌签名私钥的攻击者可以伪造任意断言,绕过密码与 MFA。APT29 在 2020 年的 SolarWinds/SUNBURST 行动中正是利用这一手法,铸造出看似正常登录的联合身份令牌。

防御措施:同时对响应和断言强制签名、严格校验受众/接收方(audience/recipient)、用硬件(HSM)保护令牌签名密钥并对其进行轮换,以及监控异常的联合登录。对于新的集成项目,通常更倾向于采用 OpenID Connect。

flowchart LR
  U[用户浏览器] -->|1 访问资源| SP[服务提供方]
  SP -->|2 AuthnRequest 重定向| IdP[身份提供方]
  IdP -->|3 对用户进行认证| IdP
  IdP -->|4 已签名的 SAML 断言| U
  U -->|5 POST 提交断言| SP
  SP -->|6 校验签名 + 条件| SP
  SP -->|7 授予会话| U

● 示例

  1. 01

    企业 IdP 通过 SAML 断言让员工登录 Salesforce。

  2. 02

    服务提供方验证由 Microsoft Entra ID 签名的 AuthnResponse。

● 常见问题

SAML 是什么?

基于 XML 的开放标准,用于在身份提供方与服务提供方之间交换认证与授权断言。 它属于网络安全的 身份与访问 分类。

SAML 是什么意思?

基于 XML 的开放标准,用于在身份提供方与服务提供方之间交换认证与授权断言。

如何防御 SAML?

针对 SAML 的防御通常结合技术控制与运营实践,详见上方完整定义。

SAML 还有哪些其他名称?

常见的别称包括: SAML 2.0, Security Assertion Markup Language。

● 相关术语

● 另见