论文部分内容阅读
摘要:SAML 是一项基于XML的交换安全性信息的框架,实现Web单点登录和保证Web服务安全性是SAML最重要的用途。本文讨论了SAML实现这两个用途的方法。
关键词:安全断言标记语言;单点登录;Web服务安全
中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)17-31247-02
The Research Of Application Of SAML
HU Jing-yao
(Dept Of Information,Linyi Normal University,Linyi 276005,China)
Abstract:SAML is a XML-based framework for exchanging security information. Web Single Sign-On and securing Web Services is the important usage of SAML. How to implement the above usage is discussed in this paper.
Key words:SAML;Single Sign-On;WS-Security
1 引言
随着互联网软件技术和应用模式的不断演变,基于Web服务的分布式计算模式正在成为发展的潮流。许多企业和政府部门已开始基于Web服务在互联网上提供信息共享与应用服务。由于用户完成一次活动/ 交易所要访问的服务可能分布在不同的应用系统中,用户在进入不同的系统边界时都需要进行登录(如多次输入用户名和口令) ,这将影响执行效率并使用户失去耐心,影响其对服务提供商的信心。如何解决这个问题,就引出了单点登录的概念。
单点登录( Single Sign - On, SSO) ,即用户在访问多个系统和多种受限资源时,只需进行一次登录和身份验证,不用重复登录,用户安全信息转换为电子身份后自动地传递到多个系统,从而提高工作效率和安全性。
同时随着Web 服务技术爆炸性地广为传播,典型的Web 服务正面临着各种新的问题,传统的安全保护技术方法已经不能胜任,而一些常用的安全通信机制(如SSL,TLS,IPsec 等)也不能满足Web 服务的安全通信,如何提供安全可信的Web 服务已成为Web 服务应用必须解决的关键问题。
SAML是一个基于XML的框架,用于在不同的实体间交换有关主体的安全断言信息,可以提供分布式环境下不同的安全服务的互操作性。本文讨论了SAML两个最重要的用途:实现Web单点登录和保证Web服务安全性。
2 安全断言标记语言(SAML)
SAML(Security Authentication Markup Language )是由两项较早的安全提议派生而来,即安全服务标记语言(Security Services Markup Language,S2ML)和授权标记语言(Authorization Markup Languager,AuthXML)。2002年11月,SAML1.0被批准为OASIS(Organization for Advancement of Structured Information Standards)标准,OASIS于2003年9月发布SAML规范1.1版,2005年3月,OASIS批准SAML2.0为标准规范。SAML2.0融合了以前的SAML版本、Liberty Alliance的身份联合框架(Identity Federation Framework,ID-FF)1.2和Shibboleth。
2.1 SAML的参与者
主体(subject):可以是一个人也可以是其它类型的实体,比如一个公司或者一个计算机。
身份提供者(Identity Provider,也叫SAML断言方):负责创建、维护和管理主体的身份信息,对信任圈内的其他服务提供者进行主体认证的系统实体。
服务提供者(Service Provider,也叫SAML信任方):向主体提供业务服务或工具的实体。
2.2 SAML规范的组成
SAML规范由断言、请求/响应协议、绑定和概要这四个部分组成。
断言是SAML的基本数据对象,是对主体(用户、计算机)的安全信息(身份、权限等)的XML描述形式。SAML断言能够传递三种信息:主体完成认证行为的信息、主体的属性信息以及关于主体是否允许访问特定资源的授权决策信息。因此对应SAML断言包括三种形式:认证断言(Authentication Assertion)、属性断言(Attribute Assertion)和授权决策断言(Authorization Assertion)。其中认证断言描述与认证成功事件相关的信息(如认证的机构、方式和有效期等);授权决策断言描述许可权查询和检查的结果,此结果可以是接收或拒绝主体对资源的访问请求;属性断言描述与主体的认证和授权决策相关的信息(如主体的标志、所属用户组、角色、可访问的资源及权限等)。断言就是一组由签发者提供的包含认证、属性和授权决策信息的集合[1]。
每个断言都包含version,assersionID,Issuer,IssuerIstant(断言创建时间)等必要信息。断言中的元素用来描述断言的有效时间、特定接收者。元素可包含用来描述认证对象的相关信息;记录了认证方式、认证时间、IP地址等内容;记录了授权的依据、权限等信息。
请求/响应协议(Protocol)规定了两点间共享SAML数据(断言)所需交换的消息种类和格式,而两点间的消息传输通过与具体传输协议的绑定来实现。
SAML绑定(Bindings)确切地详细描述了SAML请求应如何映射到诸如HTTP上的SOAP消息交换之类的传输协议。
概要(Profiles)控制在底层通信协议中嵌入和提取 SAML 信息的一组规则。
3 SAML的应用
3.1实现Web单点登录
3.1.1单点登录(SSO)
传统的单点登录解决方案[2]根据应用程序的登录方式可以分为两类,一种是基于脚本(Script)的SSO解决方案,一种是基于访问票据(Access Ticket)的SSO解决方案。基于脚本的解决方案的优点在于实现容易,可以在不需要修改目标系统的代码的情况下把一个目标系统加入SSO解决方案;缺点在于需要安装客户端软件,其安全性还有待提高,由于目标系统不用修改,实现SSO的一些除登录外的其他功能(如单点注销、目标系统间用户数据的安全交换、用户身份的集中管理等)也是难以解决的问题。对于基于访问票据的SSO解决方案,其主要目标是通过要求目标系统进行改造接受访问票据来实现SSO,对用户的验证工作由SSO服务器负责,目标系统的责任只是向SSO服务器验证访问票据的有效性。这种解决方案的倾向于形成一个SSO的标准(包括:访问票据的表示、用户与SSO服务器间通信、目标系统与SSO服务器间通信等),各个需要进行SSO的目标系统必须遵循这个标准。
3.1.2 SAML实现Web SSO的模式
根据身份提供者和服务提供者的交互方式, SAML 可以分为两种模式:Browser/Artifact方式和Browse/Post方式[3]。两种方式都有用户浏览器、身份提供者和服务提供者组成。
图1 Browse/Artifact方式 图2 Browse/Post方式
3.1.2.1 Browser/Artifact方式
Browser/Artifact方式是主体从身份提供者接收Artifact。其中Artifact是标识,用来唯一指向一个SAML断言。而Web服务提供者则使用该Artifact来获取SAML身份验证断言。这种模式可以提供更多的安全性,因为SAML身份验证断言并不随主体一起传输,相反,服务提供者必须通过其他的通道来单独获取该断言。
Browser/Artifact方式的认证过程如图1所示。认证过程分为六个步骤:
(1)用户浏览器访问身份提供者进行身份验证。身份提供者为用户创建代表登录上下文的SAML断言,并创建唯一指向这个断言的Artifact。
(2)用户浏览器访问身份提供者信任域内的服务提供者。身份提供者将用户重定向到服务提供者。
(3)用户浏览器访问服务提供者,并将Artifact以查询字符串的形式包含在目标站点的URL。
(4)服务提供者通过收到的Artifact想身份提供者请求认证所需要的SAML断言。
(5)身份提供者想服务提供者回复所请求的SAML断言。
(6)服务提供者根据所收到的SAML断言及相关安全策略,决定是否向用户提供所访问的资源。
3.1.2.2 Browse/Post方式
Browse/Post方式比较简单,用户的认证信息以form的形式提交给服务提供者。认证过程如图2。
具体认证过程如下:
(1)用户浏览器访问身份提供者进行身份验证。身份提供者为用户创建代表登录上下文的SAML断言。
(2)用户浏览器访问身份提供者信任域内的服务提供者。身份提供者将用户重定向到服务提供者,并将其产生的SAML断言以html form的形式发送给用户浏览器。
(3)用户浏览器访问服务提供者,并将SAML断言提交给服务提供者。
(4)服务提供者根据所收到的SAML断言及相关安全策略,决定是否向用户提供所访问的资源。
在Browser/Artifact方式中,身份提供者和服务提供者之间传输断言的过程对用户是透明的。Browse/Post方式中所有的安全信息都是通过浏览器进行传送,因此安全性很难得到保证。此外,在步骤(2)中身份提供者将用户认证的断言发送给用户浏览器,这使得断言创建后很难由身份提供者控制,因此在实现Web SSO时,最好采用第一种方式。
3.2保证Web服务安全
3.2.1 WS-Security
WS-Security是OASIS提出的一个Web Services安全规范,它定义了一组SOAP标准扩展,以满足保护Web服务的安全以及实现消息验证、消息完整性、消息机密性和安全令牌传播等需求。它还定义了用于支持各种安全令牌、签名、加密机制以及基于标准的安全技术(包括PKI和Kerberos)的机制。其主要目的之一是实现端到端(end-to-end)的安全,保证SOAP消息通过不安全的中间节点,安全可靠地从请求者到达提供者。为实现这一目的,WS-Security不再依赖传输层安全机制,而是直接在SOAP消息中嵌入安全标记,并对需要保密的数据进行加密。SOAP消息到达目的结点后由服务提供者直接验证这些安全信息的真伪并解密相关数据。这样就避免了中间结点的依赖,从而实现端对端的安全性。
WS-Security规范为Web服务应用的安全提供了3种保证[4]:消息完整性、消息加密和单消息认证。
(1)消息完整性:WS-Security使用XML签名对SOAP消息进行数字签名,保证SOAP消息经过中间结点时不被篡改。
(2)消息加密:WS-Security使用XML加密对SOAP消息进行加密,保证SOAP消息即使被监听,监听者也无法提取出有效信息。
(3)单消息认证:WS-Security引入安全令牌的概念,代表服务请求者的身份。通过与数字签名结合,服务提供者可以确认SOAP消息由合法的请求者产生。OASIS WS-Security TC开发了一种SAML令牌概要(SAML Token Profile),该概要定义了在WS-Security中使用SAML1.1和SAML2.0断言的规则。
3.2.2 在WS-Security中使用SAML令牌
在WS-Security中使用SAML令牌的过程如图3,具体步骤如下:
(1)发送者获取SAML断言。
(2)发送者构造SOAP消息,其中SOAP头中包含WS-Security。SAML断言作为WS-Security令牌放到security头中。SAML断言中包含的密钥(key)用来对SOAP消息体中的信息进行数字签名,签名信息同样放到security头中。
(3)接收者验证数字签名。
(4)SAML断言中的信息可以用作访问控制或者审计日志等。
图3 在WS-Security中使用SAML令牌
4 结束语
SAML作为一种面向Web服务,基于 XML 的安全信息交换和共享语言,支持单点登陆(Single Sign-On),通过 SAML,用户访问某个信任域的所有Web服务时,只需要一次登录。同时SAML还可以用于保证Web服务安全性。
参考文献:
[1]Scott Cantor, John Kemp, Rob Philpott, etal. Assertions and Protocols for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL], http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf,200.
[2]林满山,郭荷清.单点登录技术的现状及发展.计算机应用[J],2004,24(6):248-250.
[3]Scott Cantor, Frederick Hirsch, John Kemp, etal. Bindings for the OASIS Security Assertion Markup Language(SAML) V2.0[EB/OL], http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf,2005.
[4]王凡,李勇,朗宝平,等.基于WS-Security构筑安全SOAP消息调用[J].计算机应用,2004,24(4):121-123.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:安全断言标记语言;单点登录;Web服务安全
中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)17-31247-02
The Research Of Application Of SAML
HU Jing-yao
(Dept Of Information,Linyi Normal University,Linyi 276005,China)
Abstract:SAML is a XML-based framework for exchanging security information. Web Single Sign-On and securing Web Services is the important usage of SAML. How to implement the above usage is discussed in this paper.
Key words:SAML;Single Sign-On;WS-Security
1 引言
随着互联网软件技术和应用模式的不断演变,基于Web服务的分布式计算模式正在成为发展的潮流。许多企业和政府部门已开始基于Web服务在互联网上提供信息共享与应用服务。由于用户完成一次活动/ 交易所要访问的服务可能分布在不同的应用系统中,用户在进入不同的系统边界时都需要进行登录(如多次输入用户名和口令) ,这将影响执行效率并使用户失去耐心,影响其对服务提供商的信心。如何解决这个问题,就引出了单点登录的概念。
单点登录( Single Sign - On, SSO) ,即用户在访问多个系统和多种受限资源时,只需进行一次登录和身份验证,不用重复登录,用户安全信息转换为电子身份后自动地传递到多个系统,从而提高工作效率和安全性。
同时随着Web 服务技术爆炸性地广为传播,典型的Web 服务正面临着各种新的问题,传统的安全保护技术方法已经不能胜任,而一些常用的安全通信机制(如SSL,TLS,IPsec 等)也不能满足Web 服务的安全通信,如何提供安全可信的Web 服务已成为Web 服务应用必须解决的关键问题。
SAML是一个基于XML的框架,用于在不同的实体间交换有关主体的安全断言信息,可以提供分布式环境下不同的安全服务的互操作性。本文讨论了SAML两个最重要的用途:实现Web单点登录和保证Web服务安全性。
2 安全断言标记语言(SAML)
SAML(Security Authentication Markup Language )是由两项较早的安全提议派生而来,即安全服务标记语言(Security Services Markup Language,S2ML)和授权标记语言(Authorization Markup Languager,AuthXML)。2002年11月,SAML1.0被批准为OASIS(Organization for Advancement of Structured Information Standards)标准,OASIS于2003年9月发布SAML规范1.1版,2005年3月,OASIS批准SAML2.0为标准规范。SAML2.0融合了以前的SAML版本、Liberty Alliance的身份联合框架(Identity Federation Framework,ID-FF)1.2和Shibboleth。
2.1 SAML的参与者
主体(subject):可以是一个人也可以是其它类型的实体,比如一个公司或者一个计算机。
身份提供者(Identity Provider,也叫SAML断言方):负责创建、维护和管理主体的身份信息,对信任圈内的其他服务提供者进行主体认证的系统实体。
服务提供者(Service Provider,也叫SAML信任方):向主体提供业务服务或工具的实体。
2.2 SAML规范的组成
SAML规范由断言、请求/响应协议、绑定和概要这四个部分组成。
断言是SAML的基本数据对象,是对主体(用户、计算机)的安全信息(身份、权限等)的XML描述形式。SAML断言能够传递三种信息:主体完成认证行为的信息、主体的属性信息以及关于主体是否允许访问特定资源的授权决策信息。因此对应SAML断言包括三种形式:认证断言(Authentication Assertion)、属性断言(Attribute Assertion)和授权决策断言(Authorization Assertion)。其中认证断言描述与认证成功事件相关的信息(如认证的机构、方式和有效期等);授权决策断言描述许可权查询和检查的结果,此结果可以是接收或拒绝主体对资源的访问请求;属性断言描述与主体的认证和授权决策相关的信息(如主体的标志、所属用户组、角色、可访问的资源及权限等)。断言就是一组由签发者提供的包含认证、属性和授权决策信息的集合[1]。
每个断言都包含version,assersionID,Issuer,IssuerIstant(断言创建时间)等必要信息。断言中的
请求/响应协议(Protocol)规定了两点间共享SAML数据(断言)所需交换的消息种类和格式,而两点间的消息传输通过与具体传输协议的绑定来实现。
SAML绑定(Bindings)确切地详细描述了SAML请求应如何映射到诸如HTTP上的SOAP消息交换之类的传输协议。
概要(Profiles)控制在底层通信协议中嵌入和提取 SAML 信息的一组规则。
3 SAML的应用
3.1实现Web单点登录
3.1.1单点登录(SSO)
传统的单点登录解决方案[2]根据应用程序的登录方式可以分为两类,一种是基于脚本(Script)的SSO解决方案,一种是基于访问票据(Access Ticket)的SSO解决方案。基于脚本的解决方案的优点在于实现容易,可以在不需要修改目标系统的代码的情况下把一个目标系统加入SSO解决方案;缺点在于需要安装客户端软件,其安全性还有待提高,由于目标系统不用修改,实现SSO的一些除登录外的其他功能(如单点注销、目标系统间用户数据的安全交换、用户身份的集中管理等)也是难以解决的问题。对于基于访问票据的SSO解决方案,其主要目标是通过要求目标系统进行改造接受访问票据来实现SSO,对用户的验证工作由SSO服务器负责,目标系统的责任只是向SSO服务器验证访问票据的有效性。这种解决方案的倾向于形成一个SSO的标准(包括:访问票据的表示、用户与SSO服务器间通信、目标系统与SSO服务器间通信等),各个需要进行SSO的目标系统必须遵循这个标准。
3.1.2 SAML实现Web SSO的模式
根据身份提供者和服务提供者的交互方式, SAML 可以分为两种模式:Browser/Artifact方式和Browse/Post方式[3]。两种方式都有用户浏览器、身份提供者和服务提供者组成。
图1 Browse/Artifact方式 图2 Browse/Post方式
3.1.2.1 Browser/Artifact方式
Browser/Artifact方式是主体从身份提供者接收Artifact。其中Artifact是标识,用来唯一指向一个SAML断言。而Web服务提供者则使用该Artifact来获取SAML身份验证断言。这种模式可以提供更多的安全性,因为SAML身份验证断言并不随主体一起传输,相反,服务提供者必须通过其他的通道来单独获取该断言。
Browser/Artifact方式的认证过程如图1所示。认证过程分为六个步骤:
(1)用户浏览器访问身份提供者进行身份验证。身份提供者为用户创建代表登录上下文的SAML断言,并创建唯一指向这个断言的Artifact。
(2)用户浏览器访问身份提供者信任域内的服务提供者。身份提供者将用户重定向到服务提供者。
(3)用户浏览器访问服务提供者,并将Artifact以查询字符串的形式包含在目标站点的URL。
(4)服务提供者通过收到的Artifact想身份提供者请求认证所需要的SAML断言。
(5)身份提供者想服务提供者回复所请求的SAML断言。
(6)服务提供者根据所收到的SAML断言及相关安全策略,决定是否向用户提供所访问的资源。
3.1.2.2 Browse/Post方式
Browse/Post方式比较简单,用户的认证信息以form的形式提交给服务提供者。认证过程如图2。
具体认证过程如下:
(1)用户浏览器访问身份提供者进行身份验证。身份提供者为用户创建代表登录上下文的SAML断言。
(2)用户浏览器访问身份提供者信任域内的服务提供者。身份提供者将用户重定向到服务提供者,并将其产生的SAML断言以html form的形式发送给用户浏览器。
(3)用户浏览器访问服务提供者,并将SAML断言提交给服务提供者。
(4)服务提供者根据所收到的SAML断言及相关安全策略,决定是否向用户提供所访问的资源。
在Browser/Artifact方式中,身份提供者和服务提供者之间传输断言的过程对用户是透明的。Browse/Post方式中所有的安全信息都是通过浏览器进行传送,因此安全性很难得到保证。此外,在步骤(2)中身份提供者将用户认证的断言发送给用户浏览器,这使得断言创建后很难由身份提供者控制,因此在实现Web SSO时,最好采用第一种方式。
3.2保证Web服务安全
3.2.1 WS-Security
WS-Security是OASIS提出的一个Web Services安全规范,它定义了一组SOAP标准扩展,以满足保护Web服务的安全以及实现消息验证、消息完整性、消息机密性和安全令牌传播等需求。它还定义了用于支持各种安全令牌、签名、加密机制以及基于标准的安全技术(包括PKI和Kerberos)的机制。其主要目的之一是实现端到端(end-to-end)的安全,保证SOAP消息通过不安全的中间节点,安全可靠地从请求者到达提供者。为实现这一目的,WS-Security不再依赖传输层安全机制,而是直接在SOAP消息中嵌入安全标记,并对需要保密的数据进行加密。SOAP消息到达目的结点后由服务提供者直接验证这些安全信息的真伪并解密相关数据。这样就避免了中间结点的依赖,从而实现端对端的安全性。
WS-Security规范为Web服务应用的安全提供了3种保证[4]:消息完整性、消息加密和单消息认证。
(1)消息完整性:WS-Security使用XML签名对SOAP消息进行数字签名,保证SOAP消息经过中间结点时不被篡改。
(2)消息加密:WS-Security使用XML加密对SOAP消息进行加密,保证SOAP消息即使被监听,监听者也无法提取出有效信息。
(3)单消息认证:WS-Security引入安全令牌的概念,代表服务请求者的身份。通过与数字签名结合,服务提供者可以确认SOAP消息由合法的请求者产生。OASIS WS-Security TC开发了一种SAML令牌概要(SAML Token Profile),该概要定义了在WS-Security中使用SAML1.1和SAML2.0断言的规则。
3.2.2 在WS-Security中使用SAML令牌
在WS-Security中使用SAML令牌的过程如图3,具体步骤如下:
(1)发送者获取SAML断言。
(2)发送者构造SOAP消息,其中SOAP头中包含WS-Security。SAML断言作为WS-Security令牌放到security头中。SAML断言中包含的密钥(key)用来对SOAP消息体中的信息进行数字签名,签名信息同样放到security头中。
(3)接收者验证数字签名。
(4)SAML断言中的信息可以用作访问控制或者审计日志等。
图3 在WS-Security中使用SAML令牌
4 结束语
SAML作为一种面向Web服务,基于 XML 的安全信息交换和共享语言,支持单点登陆(Single Sign-On),通过 SAML,用户访问某个信任域的所有Web服务时,只需要一次登录。同时SAML还可以用于保证Web服务安全性。
参考文献:
[1]Scott Cantor, John Kemp, Rob Philpott, etal. Assertions and Protocols for the OASIS Security Assertion Markup Language(SAML)V2.0[EB/OL], http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf,200.
[2]林满山,郭荷清.单点登录技术的现状及发展.计算机应用[J],2004,24(6):248-250.
[3]Scott Cantor, Frederick Hirsch, John Kemp, etal. Bindings for the OASIS Security Assertion Markup Language(SAML) V2.0[EB/OL], http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf,2005.
[4]王凡,李勇,朗宝平,等.基于WS-Security构筑安全SOAP消息调用[J].计算机应用,2004,24(4):121-123.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。