1 Web服务概述
Web服务(Web Services)是一种完全基于XML(eXtensible Markup Language)的软件技术。它提供了一个标准方式,用于应用程序之间的通信和互操作,而不管这些应用程序运行在什么样的平台和使用什么框架。W3C把Web服务定义为一个URL(Uniform Resource Identifier)识别的软件系统,使用XML来定义和描述公共界面及其绑定。从使用者的角度而言,Web服务实际是一种部署在Web上的对象/组件[1]。
通过Web服务,企业可以包装现有的业务处理过程,把它们作为服务发布(Publish),查找和订阅其他服务,以及在企业间交换信息和集成对方的服务。Web服务使得电子交易成为可能,免除了人的参与,极大的提高了效率。
1.1 Web服务协议栈
实现一个完整的Web服务体系需要有一系列的协议规范来支撑,Web服务技术的核心是各种Web服务技术标准。经过这几年的迅速发展,Web服务的标准家族不断扩展,目前已经成为包括十数个标准规范的标准体系:Web Services Stack。
IP:Internet Protocol,网际协议
HTTP:Hyper Text Transfer Protocol,超文本传输协议
FTP:File Transfer Protocol,文件传输协议
SMTP:Simple Mail Transfer Protocol,简单邮件传输协议
SOAP:Simple Object Access Protocol,简单对象访问协议
WSDL:Web Services Description Language ,Web服务描述语言
UDDI:Universal Description Discovery and Integration,统一描述,发现和集成
WSFL:Web Services Flow Language,Web服务流程语言
其中,最底两层是先前已经定义好的并且广泛使用的传输层和网络层的标准:IP、HTTP、SMTP等。而中间四层是目前开发的Web服务的相关标准协议,包括服务调用协议SOAP、服务描述协议WSDL和服务发现/集成协议UDDI,以及服务工作流描述语言WSFL。而最上面两层描述的是更高层的待开发的关于路由、可靠性以及事务等方面的协议。右边部分是各个协议层的公用机制,这些机制一般由外部的正交机制来完成。
从以上这个技术层次图我们看以看到,Web服务追求的第一目标是简单性。这样说的原因有三个:首先,这些协议本身都是简单的,无论是HTTP, FTP等传统的TCP/IP系统的网络协议,还是SOAP, WSDL, UDDI, WSFL等基于XML的协议,他们设计原则中的一个最重要点就是力求简单性;其次,一个可以使用的Web服务应当按照需要选用若干层次的功能,而无需所有的特性,比如在目前状况下,一个简单应用可能只要使用WSDL/SOAP就可以架构一个符合规范的Web服务了;最后,所有的机制完全是基于现有的技术,并没有创造一个完全的新体系。无论是IPv4、HTTP、FTP这些现有的网络协议,还是SOAP、WSDL等这些基于XML而定义的协议都是遵循着一个原则:继承原有的被广泛接受的技术,这样才能使得Web服务被广泛接受
1.2 Web服务调用
Web服务的实际调用过程:服务请求方和服务提供方都应该包含一个SOAF消息监听器(SOAP Listener),它专门负责SOAP消息的接收与发送。运行时,首先由请求方的应用程序发出服务调用请求,由客户端代理程序将该请求转化成符合Web服务调用所要求的格式;然后,由SOAP消息监听器将消息以SOAP请求的形式传给服务提供方;服务提供方的SOAP监听器收到SOAP请求后,由SOAP路由器(SOAP Router)处理该请求,并将请求转发给能处理该请求的web服务应用程序,由该程序处理并返回相应结果;最后,由SOAP消息监听器将处理结果封装成SOAP响应的形式返回给客户端;服务请求方收到响应后,由客户端代理程序解析出处理结果并返回给实际的请求程序。
假设SOAP绑定在http上,那么它就会利用http的请求/响应消息模式,将SOAP请求的参数放在http请求里面,而将SOAP响应的结果放在http响应里面。Web服务的这种调用模式使得应用程序的集成更方便,快捷和廉价。部署的Web服务将可以随时在不同的环境下通过网络进行访问。
2.Web服务的安全问题分析
2.1 当前的Web服务安全原理分析
Web服务的关键能力就是提供一种综合的,全方位的,互交的,容易集成的解决方案。目前,SSL(Secure Socket Layer)和TLS(Transport Layer Security)被用来提供传输层的Web服务安全,SSL/TLS在点对点(Point-To-Point)的会话中,可以完全包括审计,数据完整性,机密性这样的要求。网络层的IPSec对Web服务安全来说,也是一个很重要的标准。同SSL/TLS一样,它也提供主机审计认证,数据完整性和机密性的功能。
然而,仅有传输层和网络层的这些安全机制是远远不够的。Web服务的基本工作过程是通过发送SOAP消息到一个URI来鉴别服务点(由一个SOAP Server接受消息),来请求一个特定的Web服务,接受到的消息的响应结果或错误提示。在图2我们可以看到,在传输层之外,当消息数据被接受和中转的时候,数据的完整性以及其他的安全信息就可能泄漏或者丢失。这要求Web服务的请求者/提供者必须信任那些中间节点对消息的获得和处理(那些中间节点可能需要处理信息、生成新的信息)。
除了消息的安全性之外,对于合法的请求方按照消息的内容作出适当的反应和行为,即权限策略控制都是现有的安全机制无法解决的。现在SOAP通常都是绑定在http上进行传送,而在常见的Web服务器(比如apache,IIS)上普遍使用的安全技术就是IP阻塞(IP blocking)。其实,它就是识别IP地址的过程,服务器通常保存一个禁止访问的IP地址列表。这样的安全措施显然是粗糙的,让那些潜在的客户无法访问,Web服务的接口描述(WDSL文件)他们也无法获得,更为全面的安全策略也无法实现。尤其是现在很多公司提供的Web服务都和相应的Web站点捆绑在一起,这也让那些 对Web服务无效的IP地址不能正确的访问这个Web服务站点。
所以单一的传输解决方案或普通的防火墙是无法确保Web服务安全性的。它们缺少下列特征:端到端的保护、不可抵赖性、选择性保护(保护消息的一部分)、灵活的认证机制和消息保护。
2.2 解决问题的方法
一个可能的办法是对安全性要求不同的服务提供各种不同级别的SOAP Server(对应不同URI),那么不同的安全策略就可以被强迫执行在不同级别上。然而Web服务并非是为那些基于浏览器的手工参与的客户端准备的,它真正的优势是要实现链式的事物化的服务之间的互相调用,通过众多的SOAP Server来解决这一问题,不仅是昂贵的,也是复杂的,更为重要的是,也违背了可重用性的要求,通过Web服务描述语言(WSDL)得到Web服务接口应该是统一的,这样才能让Web服务的机制完整的实现。
概括来说,一个完整的Web服务安全解决方案应该通过利用Web服务模型核心组件的可扩展性,建立一套完整的安全规范。这些规范应该建立在一些基础技术如SOAP、WSDL、XML数字签名(XML Signature)、XML加密(XML Encryption)和SSL/TLS的基础上。让Web服务提供者和请求者在这个实用框架上,开发满足他们应用程序的特殊安全性需求的解决方案。
这样的解决方案应该是把那些不兼容的安全技术(比如PKI、Kerberos和其它安全性技术)能放在一起,建立一个安全模型,让那些异构的系统在改建为Web服务的时候,可以安全地互操作,同时又尽量利用自己已有的设施,这样的安全模型也可以添加到传输级别的安全解决方案中。
3 Web服务的安全模型和安全规范
Web 服务安全性模型引入了一个由各个相互联系的规范组成的集合,这些规范描述了把安全性功能程序放到 Web 服务环境中的方法。体系结构被设计成允许对规范进行混合匹配,使实现者能够仅部署他们需要的那部分。这些规范中的第一个 — Web 服务安全性(Web Services Security)(或称 WS-Security)文档 — 提供了把消息完整性和机密性功能程序添加到 Web 服务中所必需的基本元素,并且提供把安全性令牌(例如,数字证书和 Kerberos 票据)关联到 SOAP 消息的方法。WS-Security 为正提议的 Web 服务安全性模型打下了基础。随着时间的推移,除安全性外,还将引入其它规范来解决安全性策略、信任、隐私权和授权。
有望成为 Web 服务安全性模型的部分内容的规范有:
(1) WS-Security:该规范定义了如何将元素添加到一条 SOAP 消息,这条 SOAP 消息有助于保护在企业应用程序之间交换的消息的完整性和机密性,并且提供了将发送者身份和消息关联在一起的方法。
(2) WS-Policy:该规范描述了决定企业应用程序必须如何与另一个企业应用程序集成在一起的业务、安全性、隐私权和信任策略。
(3) WS-Trust:该规范描述了如何在 Web 服务环境中建立企业之间的信任关系。
(4) WS-Privacy:该规范描述了如何把隐私权策略以及首选项与 Web 服务相关联。
(5) WS-SecureConversation:描述了如何将集合消息作为更复杂的企业事务的一部分安全地交换。
(6) WS-Federation:描述了一个模型,该模型用于把不兼容的安全性机制,或部署在不同域中的、类似的机制集成在一起。例如,如果两个 IBM 业务伙伴都实现基于 PKI 的身份基础架构,或者如果其中一个伙伴碰巧实现了 Kerberos 系统,WS-Federation 规范将提供一个关于如何应用 Web 服务技术把那些系统联系到一起的指南。
(7) WS-Authorization:描述了如何在 Web 服务基础架构中提供应用程序授权请求和决定(例如,允许 Sally 访问 Employee 数据库)。
这套规范最重要的方面或许就是它们并不是一夜之间制订的。安全性指南的作者已经认识到:只有当这个模型可以分解成独立的组件,并且以既满足客户短期和长期的需求又能满足产业发展的需求的方式组装时,它才能发挥作用。被提议的安全性指南首先试图解决最紧急的问题,而不是试图一次解决所有的 Web 服务安全性问题。
4.总结
Web服务的安全问题仍将是业界关注的焦点问题,现有的Web服务体系架构缺少有效的安全性支持。文章对现有的Web服务安全进行分析并指出不足,提出的解决方案可以解决端到端的保护、不可抵赖性、选择性保护(保护消息的一部分)、灵活的认证机制和消息保护等问题。很多规范还在制定当中,一个开放的,通用的,完整的Web服务安全标准在不久的将来将会诞生。