概述
Web Service是安全的吗?鉴于安全性涉及诸多方面(例如身份验证和授权、数据隐私和完整性等),而 SOAP 规范中根本没有提及安全性这一事实,所以我们不难理解人们为什么认为答案是否定的。
很少有不需要某种形式的安全性保证的企业级系统。在 Web Service中,处理Web Service安全的过程比处理其他领域应用的安全问题更为复杂,因为Web Service具有分布式、无状态的特性。
WS- Security是解决Web Service安全问题的规范,大多数商业的Java EE应用服务器都实现了WS-Security规范,Apache WSS4J是WS-Security的开源实现,WSS4J通过SOAP中WS-Security相关的信息对SOAP报文进行验证和签名,XFire通过WSS4J对WS-Security提供了支持。你可以从http://ws.apache.org/wss4j了解更多关于WSS4J的信息。
认识WS-Security
2002 年 4 月,IBM、Microsoft 和 VeriSign 在他们的 Web 站点上提议建立 Web Services Security (WS-Security)规范。此规范包括安全凭证、XML签名和XML加密的安全性问题。此规范还定义了用户名凭证和已编码的二进制安全性凭证的格式。
2002 年 6 月,OASIS 从 IBM、Microsoft 和 Verisign 接收到了提议的WS-Security安全性规范。不久之后就在 OASIS 成立了“Web Service 安全性技术委员会”(WSS TC)。
2006 年2月15日,OASIS通过了WS-Security 1.1安全规范,1.1规范突出了对安全权标支持、消息附件和权限管理的增强。1.1规范包括WS-Security核心规范及用户名权标规范1.1、 X.509权标规范1.1、Kerberos权标规范1.1、SAML权标规范1.1、权限表达(REL)权标规范1.1、带附件的SOAP(SWA)规范1.1和模式1.1。
也许读者会提出这样的问题:SSL也具有完整性和机密性,为什么还需要另外一个WS-Security规范呢?之所以要制定WS-Security规范,是SSL存在以下的问题:
端对端的通信,脱离传输层就无法保证安全性; 消息必须全部加密/或者全部签名,而不能针对消息的某部分,没有考虑XML处理。
SSL对应OSI的传输层,前面我们提到过Web Service是和传输层无关的,将安全问题依附在SSL上就违反了Web Serivce与传输层无关的原则。而WS-Security对应于OSI的应用层,建立消息层SOAP之上。
针对不同领域的细分问题,OASIS 在WS-Security的基础上又制定了几十个规范,其中包括WS-SecureConversation、WS-Federation、 WS-Authorisation、WS-Policy、WS-Trust、WS-Privacy等,形成了一个庞大Web Service安全性协议家族。
基于XFire实施WS-Security(第一部分)
图1 WS-Security所在位置
有了WS-Security规范,用户就拥有在Web Service应用中实施完整性、机密性和身份验证等安全需求的规范方法。
XFire应用WS-Security的总体方案
XFire 通过Apache的WSS4J对WS-Security提供支持,XFire完整发布包中包含了WSS4J的类包。我们知道XFire在发送和接收 SOAP报文前拥有多个阶段,每个阶段都可以注册Handler,对SOAP报文进行前置和后置处理的加工操作。XFire即通过Handler实施 WSS4J,当发送SOAP报文时,通过注册一系列OutHandler,对SOAP报文进行加密、签名、添加用户身份信息等后置处理操作。而在接收 SOAP报文时,则通过注册一系列的InHandler对SOAP进行解密、验证签名,用户身份认证等前置操作。
基于XFire实施WS-Security(第一部分)
图2 XFire应用WS-Security的方案
请求和响应的SOAP在发送之前可以通过注册的OutHanlder进行加工处理,让SOAP转换为WS-Security的保护格式。而服务端和客户端的接收SOAP 报文之前,可以通过注册的InHandler,将WS-Security格式的SOAP转换正常的SOAP进行处理。
由于XFire在SOAP收发过程中定义了多个不同的生命阶段,所以可以在发送前和接收前完成SOAP报文安全处理的工作,这些操作完全独立于业务处理逻辑,实施WS-Security对于Web Service的业务操作是透明的。
使用WS-Security
在前面内容中,我们通过各种方式将BbtForum中的方法以BbtForumSerivice窄接口开放为Web Service服务,但个Web Service是没有任何安全性可言的,任何拿到WSDL的人都可以轻松地构造客户端程序访问我们的Web Service服务。在这节里,我们将解决这个问题,对BbtForumSerivice添加不同的安全功能。
准备工作
在使用XFire的WS-Security之前,必须做一些准备性的工作:包括搭建安全环境,创建密钥对和证书等内容。
分享到:
相关推荐
1. **配置XFire**: 首先需要在XFire配置中启用WS-Security支持,这可能涉及到添加必要的依赖库和设置安全策略。 2. **处理安全令牌**: 根据安全需求,可能需要处理Username Tokens、X.509证书等,这些令牌会在SOAP...
10. **安全性**:虽然XFire 1.2.6不包含Xalan,但它支持WS-Security标准,可以实现基于SOAP消息的安全认证和加密。 在"lib"目录下,通常会包含XFire运行所需的JAR文件,如XFire的核心库、依赖的XML解析器、JAXB实现...
2. **WSDL第一**:它允许开发者从WSDL(Web服务描述语言)文档开始,自动生成服务端和客户端代码,简化了Web服务的开发流程。 3. **XML数据绑定**:XFire集成了流行的XML数据绑定技术,如JAXB,使得XML文档与Java...
Xfire(现已被Apache CXF所吸收)是一个基于Java的Web服务实现,它支持SOAP、WSDL、WS-Security等Web服务标准。它的设计目标是简化Web服务的开发过程,通过提供简洁的API和自动化的代码生成工具,使得开发者可以...
- 支持多种标准:如SOAP、WSDL、WS-I Basic Profile、WS-Addressing、WS-Security等。 - 高性能的SOAP栈:基于低内存的STAX模型,提高处理效率。 - 多种绑定方式:支持POJO、XMLBeans、JAXB 1.1/2.0、Castor、...
XFire支持WSDL第一类公民,可以自动生成WSDL文件,也可以根据WSDL文件生成服务端代码,简化了Web服务的开发流程。 2. **JAX-RPC(Java API for XML-based Remote Procedure Calls)**:JAX-RPC是Java平台上的Web...
《XFire开发指南第二版》是一本专注于XFire框架深入理解和应用实践的权威教程。XFire,一个曾经在Java世界中流行的轻量级服务框架,为开发者提供了构建基于SOAP和RESTful服务的强大工具。该书的第二版针对XFire的...
- 支持多种标准:如SOAP、WSDL、WS-I Basic Profile、WS-Addressing、WS-Security等。 - 高性能的SOAP栈:基于低内存消耗的STAX模型,提高了处理速度和资源利用率。 - 多样的绑定方式:提供多种数据绑定选项,如...
在本压缩包“XFire1.2.6”中,包含的是XFire 1.2.6版本所需的全部jar文件,这些文件是开发者进行基于webservice开发的重要组成部分。 一、XFire简介 XFire是一个轻量级的Web服务实现,它通过简化API和快速的性能,...
CXF是Apache基金会的一个项目,它整合了XFire和Axis2的优势,提供了一站式的解决方案,支持SOAP、REST、WS-*标准等。 4. CXF特性 - 强大的工具集,包括WSDL-to-Java和Java-to-WSDL工具。 - 对WS-Security、WS-...
XFire(后被整合到 CXF 中)是一款基于Java的Web服务框架,它支持SOAP 1.1/1.2、WSDL 1.1、WS-Security等多种Web服务标准。XFire以其简单易用、高性能和低内存消耗的特点,受到了开发者们的欢迎。它允许开发者使用...
2. **创建第一个Web服务**:从定义服务接口,到实现服务类,再到部署服务,整个流程的详细步骤。 3. **调用Web服务**:如何生成客户端代理,以及如何使用这个代理来调用远程服务。 4. **异常处理与安全性**:理解...
1. **XFire介绍**:XFire是一个基于Java的轻量级Web服务框架,它支持SOAP 1.1/1.2、WS-I Basic Profile 1.1、WSDL 1.1等标准,并且与Spring框架有很好的集成。 2. **安装与配置**:首先,你需要在项目中添加XFire的...
创建Web服务的第一步是定义服务接口。你可以使用Java的JAX-RPC或JAX-WS规范来定义一个普通的Java接口,然后用XFire的注解来标记这个接口,使其成为Web服务接口。例如: ```java @WebService public interface ...
8. **异常处理和安全性**: 了解如何在Xfire中处理异常,以及如何通过添加安全层(如SSL加密或WS-Security)来保护你的Web Service。 9. **与Spring集成**: 如果你的项目基于Spring框架,你将学习如何将Xfire服务...
1. **SOAP和RESTful服务**:CXF支持基于SOAP的WS-*标准,如WS-Security、WS-Addressing等,同时也支持RESTful风格的服务,使得开发者可以灵活选择服务实现方式。 2. **多种协议支持**:CXF不仅支持HTTP和HTTPS,还...
- 创建第一个Web服务 - 定义服务接口和实现 - 使用Aegis绑定进行对象到XML的映射 - 配置WSDL文件 - 调试和测试Web服务 - 插件机制和自定义行为的实现 - 高级特性,如事务管理、安全性配置等 通过深入阅读这份指南,...
CXF(Camel XFire)是一个开源服务框架,它允许开发人员创建和部署基于Java API for Web Services (JAX-WS) 和Java API for RESTful Web Services (JAX-RS) 的Web服务。CXF是一个高度可扩展且功能丰富的框架,提供了...