SAML(Security Assertion Markup Language,安全断言标记语言)是一套基于 XML 的标准,用于在身份提供方(IdP)和业务应用(SP)之间传递“你是谁、有什么属性”的断言,最常用于企业单点登录(SSO,Single Sign-On)。
它的典型流程是:员工在浏览器访问某个 SaaS 应用(SP,Service Provider,服务提供方),应用发现未登录,就把浏览器重定向到公司的身份系统(IdP,Identity Provider,身份提供方)。员工在 IdP 完成登录后,IdP 生成一段 XML 断言,写明身份、部门、认证时间等信息,并用自己的私钥签名。浏览器把这段断言 POST 回应用指定的接口,应用用 IdP 的公钥验签,确认没被篡改,就建立会话。
打个比方:你去园区办事,前台核对身份后给你开一张盖了公章的介绍信;你拿着介绍信去各部门,部门认公章就放行。SAML 断言就是那张介绍信,XML 是纸张格式,数字签名是公章。关键点是“浏览器转交”,应用并不直接连 IdP 的接口。
它常和 OAuth、OIDC 被混为一谈。简单分工是:OAuth 2.0 是授权框架,解决“某个应用能不能代表你访问某个资源”,本身不负责证明你是谁;OIDC(OpenID Connect)建在 OAuth 2.0 之上,用 JSON/JWT 做身份认证,移动 App 和 API 场景更顺手;SAML 则是更早的企业级浏览器 SSO 方案,用 XML 断言,和大量企业 SaaS、传统身份系统集成成熟。SAML 不适合拿来做 API 的细粒度授权。
| 维度 | SAML 2.0 | OIDC |
|---|---|---|
| 主要目的 | 浏览器单点登录、传递身份与属性 | 身份认证,常配合 OAuth 做授权 |
| 数据格式 | XML 断言,带数字签名 | JSON/JWT |
| 典型场景 | 员工登录企业 SaaS、内网应用 | 新应用、移动 App、API 网关 |
| 移动与 API | 偏弱 | 较友好 |
对从业者来说,做 To B 的 AI 产品,大客户 IT 采购时常常会问“支不支持 SAML SSO”。支持它,意味着员工用公司账号就能登录,离职停用账号即失效,审计也清楚。对普通人来说,看到“跳转到公司登录页,再跳回应用”多半就是 SAML 或 OIDC 在干活。具体某款产品支持哪种协议、如何配置,以官方文档为准。
