保护WebLogic Server上WebServices
本文首先概述了消息完整性、消息机密性和身份验证,简短讨论了怎样通过策略注释加以实现。接着实例指导如何构建一个基本服务,添加消息完整性、机密性和授权……
在现今的IT领域,Web services变得日益重要,特别是随着面向服务的架构(SOA)的快速发展和应用。默认情况下,Web Services调用(请求和响应)采用纯文本通过HTTP之类的协议传送。虽然使用纯文本传送是考虑到更广泛的客户端互操作性,但是也带来了安全隐患。本文讨论了这样做所招致的一些安全风险以及怎样应用BEA WebLogic Server的Web Services安全性实现避免这些风险。
Web Services和安全性概述
本节概述Web Services安全性的许多方面,包括消息的完整性、机密性和身份验证。如果您熟悉这些内容,那么可以跳过这一节,直接阅读 教程部分。
Web Services基础
一个基本的Web Services由两个组件组成:
- 服务的提供者——实际的服务,由服务容器提供。
- 服务的消费者——调用服务的客户端,既可以是本地的,也可以是远程的。
本文中,我们将假定服务的提供者是部署(和运行)在WebLogic Server 9实例上的一个基于Java的Web Services。服务的消费者将是位于本地或远端计算机上且运行在它自己的JVM中的一个Java客户端。
Web Services交互首先由客户端从服务提供者获得WSDL文件。WSDL文件包含客户端调用服务所需的服务和调用信息。一旦客户端有了WSDL文件,它就能够向服务提供者发送一个纯文本SOAP请求消息(含有要调用的服务和任何参数等信息)来调用一个Web Services。服务提供者收到这个消息并解析它,然后进行处理。处理一结束,服务提供者就返回给客户端一个纯文本SOAP响应消息(含有所有的结果数据)。
由此可见,纯文本SOAP是默认的传输协议。遗憾的是,这种协议非常容易受到各种安全性攻击。我们要求助于WS-Security。
WS-Security
由OASIS负责定义和维护的WS-Security概述了需要Web services解决的安全性的三个关键部分。特别是当请求和响应消息进行交换时,需要考虑以下三个方面:
- 消息完整性
- 消息机密性
- 身份验证
消息完整性保证消息来源是惟一的,在传输过程中不被篡改。这是通过外向SOAP消息签名实现的。签名典型地包含附加的数字证书(加密的纯文本块),它表示一个惟一的消息散列。当收到消息时,接收方可将消息的内容与这个散列相比较。如果匹配,说明消息在传输过程中没有被篡改。
消息机密性保证只有接收方能够理解发来的消息。这是通过外向SOAP消息加密实现的。
身份验证保证只有通过身份验证的客户才允许调用Web Services。这是由客户端在服务调用中增加WS-Security 令牌 (例如,用户名/密码、X.509证书和Kerberos票据)实现的。然后这个令牌在请求时经服务器的安全系统验证,只有确认合法,服务才会处理请求。
默认的SOAP规范本身不具有这些功能。虽然手工(通过编程)添加对这些特性的支持是可能的,但是这会耗费时间而且容易出错。幸而WS-Security规范描述了一个相应的实现,它利用了SOAP报头的固有可扩展性,几乎不用编码,就能够在Web Services消息交换中增加完整性、机密性和身份验证。
- 本文关键词:

