
SAML
安全断言标记语言(英语:Security Assertion Markup Language,简称SAML,发音sam-el)是一个基于XML的开源标準数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。SAML是OASIS安全服务技术委员会的一个产品,始于2001年。其最近的主要更新发布于2005年,但协定的增强仍在通过附加的可选标準稳步增加。
SAML解决的最重要的需求是网页浏览器单点登录(SSO)。单点登录在内部网层面比较常见,(例如使用Cookie),但将其扩展到内部网之外则一直存在问题,并使得不可互操作的专有技术激增。(另一种近日解决浏览器单点登录问题的方法是OpenID Connect协定)
基本介绍
- 中文名:SAML
- 外文名:Security Assertion Markup Language
- 释义:安全声明标记语言
- 作用:表明用户是否已经认证
简介
安全断言标记语言(英语:Security Assertion Markup Language,简称SAML,发音sam-el)是一个基于XML的开源标準数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。SAML是OASIS安全服务技术委员会的一个产品,始于2001年。其最近的主要更新发布于2005年,但协定的增强仍在通过附加的可选标準稳步增加。
SAML解决的最重要的需求是网页浏览器单点登录(SSO)。单点登录在内部网层面比较常见,(例如使用Cookie),但将其扩展到内部网之外则一直存在问题,并使得不可互操作的专有技术激增。(另一种近日解决浏览器单点登录问题的方法是OpenID Connect协定)
原则
SAML规範定义了三个角色:委託人(通常为一名用户)、身份提供者(IdP),服务提供者(SP)。在用SAML解决的使用案例中,委託人从服务提供者那里请求一项服务。服务提供者请求身份提供者并从那里并获得一个身份断言。服务提供者可以基于这一断言进行访问控制的判断——即决定委託人是否有权执行某些服务。
在将身份断言传送给服务提供者之前,身份提供者也可能向委託人要求一些信息——例如用户名和密码,以验证委託人的身份。SAML规範了三方之间的断言,尤其是断言身份讯息是由身份提供者传递给服务提供者。在SAML中,一个身份提供者可能提供SAML断言给许多服务提供者。同样的,一个服务提供者可以依赖并信任许多独立的身份提供者的断言。
SAML没有规定身份提供者的身份验证方法;他们大多使用用户名和密码,但也有其他验证方式,包括採用多重要素验证。诸如轻型目录访问协定、RADIUS和Active Directory等目录服务允许用户使用一组用户名和密码登录,这是身份提供者使用身份验证令牌的一个典型来源。许多流行的网际网路社交网路服务也提供身份验证服务,理论上他们也可以支持SAML交换。
历史
OASIS安全服务技术委员会(SSTC)于2001年1月首次举行会议,提出“定义一个用于交换身份验证和授权的XML框架。”为完成此目标,下列智慧财产权在该年的头两个月内向SSTC进行了捐献:
- Security Services Markup Language(S2ML),来自Netegrity
- AuthXML,来自Securant
- XML Trust Assertion Service Specification(X-TASS),来自VeriSign
- Information Technology Markup Language(ITML),来自Jamcracker
在这项工作的基础上,OASIS于2002年11月宣布“安全断言标记语言”(SAML)V1.0规範成为一个OASIS标準。
与此同时,大型企业、非营利及政府组织的联盟Liberty Alliance提出了一个扩展SAML标準的“自由联盟统一联合框架”(ID-FF)。与其前身SAML类似,Liberty ID-FF提出了一个标準化、跨域、基于Web的单点登录框架。此外,Liberty描绘了一个“信任圈”(circle of trust),其中每个参与域被信任将準确记录识别用户的过程、所使用的身份验证类型,以及任何与生成身份验证凭据相关的策略。信任圈中的其他成员可以查验这些策略,以决定是否信任此类信息。
虽然ID-FF开发了Liberty,SSTC已开始小规模升级到SAML规範。这使得SSTC在2003年9月批准了SAML V1.1规範。在同月,Liberty将ID-FF贡献至OASIS,从而为SAML下一版本奠基。2005年3月,SAML V2.0被宣布成为一项OASIS标準。SAML V2.0意味着Liberty ID-FF及其他专有扩展的收敛,以及包括SAML本身的早期版本。大多数SAML实现支持V2.0,并也大多支持V1.1以实现向后兼容。截至2008年1月,SAML V2.0的开发已在政府、高等教育和全球商业企业中普遍存在。
版本
SAML自V1.0以来已进行一次重大及一次次要修订。
- SAML 1.0于2002年11月获準成为OASIS标準
- SAML 1.1于2003年9月获準为OASIS标準
- SAML 2.0于2005年3月成为OASIS标準
Liberty Alliance在2003年9月将其自由联盟统一联合框架(ID-FF)贡献至OASIS SSTC:
- ID-FF 1.1于2003年4月发布
- ID-FF 1.2于2003年11月完成
SAML的1.0和1.1版本很类似,仅存在微小差异。
SAML 2.0与SAML 1.1则有着实质性的差异。虽然两者都是解决相同的使用案例,但SAML 2.0与1.1并不兼容。
儘管ID-FF 1.2已作为SAML 2.0的基础贡献至OASIS,但在SAML 2.0与ID-FF 1.2之间有着一些重要的差异。尤其是儘管这两个规範同根同源,但两者并不兼容。
设计
SAML 创建在一些现有标準之上:
- Extensible Markup Language (XML)
- 大多数SAML交换是以一个标準化的XML方言表示,这也是SAML的名称(Security Assertion Markup Language)的根源。; XML Schema (XSD): SAML断言和协定部分採用XML Schema。
- XML Signature
- SAML 1.1和SAML 2.0都为身份验证和讯息完整性使用基于XML Signature标準的数字签名。
- XML Encryption
- SAML 2.0使用XML Encryption为加密名称标识符、加密属性和加密断言提供元素(SAML 1.1没有加密功能)。但XML加密据报有着严重的安全问题。
- Hypertext Transfer Protocol (HTTP)
SAML很大程度上依赖超文本传输协定作为其通信协定。
- SOAP
- SAML指定使用SOAP,尤其是SOAP 1.1。
SAML定义了基于XML的断言、协定、绑定和配置。术语SAML核心(SAML Core)指SAML断言的一般语法和语义,以及用于请求和在系统实体间传输这些断言的协定。SAML协定指谁来传输,而不是如何传输(后者由所选择的绑定决定)。因此SAML核心只定义了“纯粹的”SAML断言,以及SAML的请求和回响元素。
SAML绑定决定SAML请求和回响如何映射到标準的讯息或通信协定。一个重要的、同步的绑定是SAML SOAP绑定。
SAML配置是使用特定断言、协定和绑定组成的适用于所定义使用情况的一个具体表现形式。
参见
- 基于SAML的产品和服务
- 身份管理
- 身份管理系统
- OpenID Connect
- 信息卡
- WS-Federation
- OAuth