简介
SAML安全断言标记语言是组织安全服务技术委员会OASIS发布的一种安全认证XML标准,英文全称是Security Assertion Markup Language。SAML的主要功能是在不同的安全域之间提供身份认证和授权信息交换SAML主要为用户跨不同网络平台进行身份认证和授权提供了方便,解决了多个系统共享认证授权信息过程中信息的传递问题。SAML定义了用于不同安全域Web服务问安全传输信息的XML文档描述,解决了多次认证带来了效率问题,能够允许不同平台的安全系统信息之间的安全交换,也因此提高了网络安全服务的性能。1
SAML是一个基于XML的框架,用于在不同的实体间交换有关主体的安全断言信息,可以提供分布式环境下不同的安全服务的互操作性。
随着互联网软件技术和应用模式的不断演变,基于Web服务的分布式计算模式正在成为发展的潮流。许多企业和政府部门已开始基于Web服务在互联网上提供信息共享与应用服务。由于用户完成一次活动/交易所要访问的服务可能分布在不同的应用系统中,用户在进入不同的系统边界时都需要进行登录(如多次输入用户名和口令),这将影响执行效率并使用户失去耐心,影响其对服务提供商的信心。如何解决这个问题,就引出了单点登录的概念。
单点登录(SingleSign-On,SSO),即用户在访问多个系统和多种受限资源时,只需进行一次登录和身份验证,不用重复登录,用户安全信息转换为电子身份后自动地传递到多个系统,从而提高工作效率和安全性。同时随着Web服务技术爆炸性地广为传播,典型的Web服务正面临着各种新的问题,传统的安全保护技术方法已经不能胜任,而一些常用的安全通信机制(如SSL,TLS,IPsec等)也不能满足Web服务的安全通信,如何提供安全可信的Web服务已成为Web服务应用必须解决的关键问题。2
SAML规范SAML规范主要分为四部分,分别是断言、请求/响应协议、绑定和配置文件。各个部分关系图如图所示。
断言(Assertions)断言(Assertion)是SAML规范的核心,是SAML规范中的基本数据对象,由特定的SAML机构(SAML Authority)产生和颁布。断言是对Subject身份、属性、权限等信息的XML描述,为服务提供者和身份提供者之间提供基础的信息交换。SAML断言有以下三种类型:
认证断言(Authentication Assertion)。一种用于表明用户身份的断言。当主体成功的通过身份提供者的身份认证,身份提供者将会颁发主体的认证断言来证明主体身份已经被指定身份提供者成功验证。认证断言由主体元素元素和认证声明元素组成。Subject表明了被认证主体的身份,可以是用户名等用户身份标识。认证声明包含了用户通过认证的信息。认证断言能够被信任圈中所有服务提供者参考。用于对Subject身份的识别。
属性断言(Attribute Assertion)。一种用来指明主体属性信息的断言。由主体元素和属性声明元素组成。Subject表明了被认证主体的身份;AttributeStatement包含了主体的各种属性,如主体的权限分组、联系方式、角色等。
授权决策断言(Authorization Decision ssertion)。一种指明对访问请求的授权决策结果的断言。由主体元素和授权决策声明组成。AuthzDecisionStatemem用来表明对Subject访问服务请求的决策结果。
SAML的断言结构如图所示,SAML断言中各属性的含义如下(""代表XML子元素):
:断言的颁发者。
:对断言的签名结果。使用XML签名技术既可以用来验证断言的颁发者,也可以保护断言不受恶意篡改。
:断言的作用目标主体。
:可选元素,一些条件限制。
:非必须元素,在验证时可以被忽略。
:说明是哪种声明。包含下面三种声明
:授权决策声明。
:认证声明。
:属性声明.
Version:断言的版本号。
ID:断言的ID号。
Issuelnstance:颁发断言的时间。
请求/响应协议(Request/Response)请求/响应协议规定具体的消息种类和格式用于SAML数据的传输。各个模块之间通过发送请求消息与响应消息达到交换消息和认证主体等目的。
SAML规范中定义了两种种消息格式:请求消息和响应消息。请求消息一般包含主体信息等和查询(Query)。查询分为四种是主体查询(SubjectQuery)、认证查询fAuthenticationQuery)、属性查询(AttributeQuery)和授权决策查询(AuthorizationtQuery)。响应消息中一般包含了对应查询的SAML断言。
绑定(Bindings)绑定解决了SAML消息的传递问题,SAML消息通过绑定标准绑定了消息收发协议和传输协议。SAML标准使用时可以绑定当前许多传输通信协议。最常用的绑定方式有H丁rPRedirect绑定、HTTPPost绑定、HTTPArtifact绑定、SOAP绑定、ReverseSOAP绑定等。在SOAP绑定中规定了如何把SAML数据封装在SOAP消息中。SMVIL数据被封装在SOAPBody,增添了SOAPHeader头部信息,形成一个SOAP消息,最后依靠HT口协议进行传输。图为SAML基于SOAP绑定的示意图。
配置(Profiles)配置是SAML定义的SAML消息如何关于如何向底层通信协议中插入S—蝴L数据的规则,具体描述了在底层消息收发和传输协议中嵌入、集成、提取声明的方法。SAML规范有两种配置文件:HTTPPOST配置文件和BrowserArtifact配置文件。1
SAML单点登录基于SAML的单点登录模型通常由三部分组成:
主体(Subject):指的是向服务提供者提出访问请求的实体。
身份提供者(Identity Provider),下文中简称IDP:指的是提供身份认证服务的实体。负责校验用户信息并提供用户所需的安全凭证或安全断言。
服务提供者(Service provider),简称SP:指的是负责保护和提供资源、服务的实体。SP与IDP构成同一个安全域。
基于SAML的单点登录模型主要由实体、认证权威、属性权威、策略执行点和策略决策点这几个部分组成。如图所示。
实体(Access Entity):资源请求者。
认证权威(Authenticatiort Authority):负责对处理身份认证请求和产生认证断言。
属性权威(Attribute Authority):负责保护用户的属性信息和生成属性断言。
策略执行点(Policy Enforcemem Point,简称PEP):负责截获受保护资源请求,同时把从认证权威接收到的SAML认证断言标识交由PDP。
策略决策点(Policy Decision Point,PDP):PDP负责相应安全策略,判断用户是否允许具有请求的操作的权限,并做出授权决策断言。
总结来说,各个模块主要负责处理用来传递用户身份认证信息、授权决策信息、用户的属性信息的SAML数据。简单来说,基于SAML的单点登录过程为:用户A在IDP上登录发送认证请求并由IDP产生相应的SAML认证断言,SP通过断言对用户属性和授权进行确认。1
SAML特点SAML作为一种基于XML的安全信息交换、共享语言,具有如下特点3:
支持SSO。通过SAML,用户在进行多个B to C业务时,只需一次登录。以后的交易中,SAML声明将在信任域中被自动转发给支持SAML的可信任合作者,用户可直接访问这些商业网站,而无需多次输入用户名、密码等登录信息。
灵活性。SAML支持可扩展机制,允许开发者对其中的一些元素进行扩展和选择。SAML未定义新的认证技术,而是在现有传输、认证、安全技术的基础上,为开发者提供了一个与平台无关的安全服务框架。开发者可以根据具体情况,决定所采用的相关技术和实现方法。
更强的互操作性。SAML对用户端没有特殊的要求,用户可以通过浏览器向服务器发送请求,无需安装专门的客户端软件。SAML声明可以直接嵌入SOAP消息体中并通过SOAP over HTTP传输,能够穿过企业防火墙,从而提供更好的互操作性。