SAML:糟糕设计的分形
安全断言标记语言(SAML)认证协议源于学术界与企业 IT 领域,现已过时。SAML 于 2002 年由一个委员会开发,旨在为日益增长的 Web 服务提供单点登录(SSO)。该协议基于 XML 构建,而 XML 是一种复杂的标记语言,这导致其固有的安全弱点及实施困难。协议的设计融合了多项现有规范,采取了“大杂烩”式的做法。尽管 SAML 已被主要 SSO 提供商广泛采用,但仍面临严重的安全漏洞。XML 签名封装及其他相关攻击多年来一直困扰着 SAML 的实现,暴露了其脆弱性。XML 本身的复杂性及其众多特性引入了巨大的攻击面。规范化(Canonicalization)是将 XML 标准化以实现一致签名验证的过程,却成为众多安全缺陷的源头。包封签名(enveloped signatures)将签名嵌入其所签数据中,也带来了实施挑战与漏洞。此外,SAML 的设计包含许多在现代实现中极少使用的功能,增加了不必要的复杂性。该协议已趋于僵化,未能适应现代互联网基础设施(如 HTTPS),而 HTTPS 在传输层处理加密与信任问题。与有机演进以应对特定需求的 OpenID Connect(OIDC)不同,SAML 大多是一开始就设计完成的,缺乏新协议的敏捷性。这些因素表明,SAML 是一个“糟糕设计的分形”,应予以弃用,转而采用 OIDC 等现代替代方案。