安全断言标记语言SAML的应用研究

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:duoduo5211314
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: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格式阅读原文。
其他文献
摘要:介绍了电气设计中端子排以及AutoCAD中的图元,利用AutoCAD 所提供的强大的二次开发工具AutoCAD VBA,开发了识别端子排的系统,该系统只需要少量人工辅助的方式,就能够完成端子排组缆图的设计任务,使得电气二次设计专业人员从繁琐重复的手工端子排图绘制中解脱出来。  关键词:AutoCAD VBA;端子排;图元;数据库  中图分类号:TP317文献标识码:A文章编号:1009-30
期刊
摘要:Struts为Web应用提供了现成的通用的框架,可以大大提高Web应用的开发速度。首先介绍了MVC设计模式,接着分析了Struts如何实现MVC机制,最后揭示了Struts的不足之处。  关键词:Struts;MVC;设计模式  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31677-02  Struts: the Development of Web
期刊
摘要:随着互联网在社会生活各个领域的广泛应用和商业化的深入发展,现有的网络基础设施和网络服务已经难以满足和支持大规模的网络应用,如交互式远程实时教学、协同科研、数字化图书馆、虚拟实验室等。与此同时,随着网络规模的扩大,现有网络的管理和运营已经变得非常复杂,地址空间匮乏、带宽瓶颈、网络安全、数据保密、服务质量等问题变得越来越突出。本文通过对IPV6的特点、协议体系等核心技术的分析,结合在实际工作中的
期刊
摘要:关联规则挖掘向来是数据挖掘的一个重要领域,挖掘算法也层出不穷。本文在深入分析了FP树特性的基础上,改进了FP树构造过程,通过一次扫描事务数据库生成FP树。缩短了关联规则挖掘时间,提高了效率,实验验证了其有效性。  关键词:数据挖掘;关联规则;FP树  中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)18-31707-01  An Improved FP-Tree
期刊
摘要:教育城域网是教育信息化建设的重点项目,本文提出了教育城域网中教学资源的异构问题,特别是对遗留资源的异构,并利用XML和Web服务技术,结合J2EE对教学资源异构系统进行设计和实现。  关键词:教育城域网;遗留教学资源库;异构;XML;Web服务  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31754-03  Implementation of Hete
期刊
摘要:在现在各种基于Java的信息系统的设计与实现中,用户权限管理是一个不可缺少的模块。目前通常的设计思想是利用像Acegi这样优秀的开源框架提供描述性的安全保护。这里通过一个用户权限管理系统介绍了利用Spring的面向方面特性使权限管理在基于Spring系统中通用的一种实现方案。  关键词:数据库;Acegi;面向方面编程;切面;角色  中图分类号:TP311文献标识码:A文章编号:1009-3
期刊
摘要:通过实现网上教学平台中教师端对学生在线测试成绩的统计饼图,本文描述了用svg,vml,flash实现动态统计饼图的方法,分析了用SVG+JavaScript,VML+JavaScript,AS实现动态统计饼图的优缺点。  关键词:SVG;VML;AS;JavaScript  中图分类号:TP37 文献标识码:A文章编号:1009-3044(2007)18-31721-02  Comparis
期刊
摘要:Visual Basic程序设计语言(简称VB)是计算机相关专业学生的必修课。本文在总结实践教学经验的基础上,就如何给毕业班这个特殊群体上好VB课程,总结了几种有效的教学方法,尝试以创新精神和实践能力为重点的素质教育,为毕业班的VB教学提供了参考。  关键词:VB;毕业班;教学  中图分类号:G642文献标识码:A文章编号:1009-3044(2007)18-31765-01  Analys
期刊
摘要:本文对C/S、B/S两种软件体系结构进行了分析比较,论述了其在软件开发中的优势和劣势,认为C/S、B/S混合体系结构更适用于大型复杂系统的开发。最后,通过对其在数字化教学系统中的应用,进一步剖析了C/S、B/S混合体系结构的特点,及其在特定领域中的开发模式。  关键词:软件体系结构;CS与BS混合结构;数字化教学系统  中图分类号:TP311文献标识码:A文章编号:1009-3044(200
期刊
摘要:农产品质量安全备受人们关注,随着信息技术的不断成熟,如何利用信息技术提高农产品质量安全成为学术界研究热点。文章从知识管理角度,研究农产品安全知识转移模型,并使用Agent技术构建该模型,尝试为提高农产品质量安全提供一条途径。  关键词:农产品安全知识;知识转移;Agent  中国分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31191-02  Researc
期刊