一、概述
CXF 的 WS-Security 实现基于开放源码的 WSS4J 库。Axis2 代码也使用这个库,因此这两个堆栈的 WS-Security 配置细节有一些相似之处。但是,通过解释 WS-SecurityPolicy 配置 WSS4J 的代码层不一样。在 Axis2 中这由单独发布的 Rampart 模块处理,而在 CXF 中由 cxf-rt-ws-policy 和 cxf-rt-ws-security 模块处理(这些模块包含在标准的 cxf-#.jar 中,其中的 #是版本号)。
WS-Security提供了一些方法保证你的服务安全,常用的有以下方法:
①在两个服务之间传递授权标识。
②加密传递的信息或加密传递信息中重要部分。
③对传递的信息进行数字签名
④Timestamp messages
当前,CXF通过整合WSS4J实现WS-Security,为了能够使用这个整合,我们需要配置一些interceptors(拦截器)并且将他们安装到服务端或客户端。
二、WSS4J是什么?主要使用来做什么的?
WSS4J是一个OASIS Web服务安全实现,他是一个重要的Java库,主要用来签名和验证SOAP信息通过WS-Security信息。它主要的用途有:XML签名、XML加密和用户令牌(Username Tokens)、Timestamps、SAML Tokens。并且WSS4J支持X.509证书和证书路径。如果要想详细了解,请看他的doc: http://ws.apache.org/wss4j/api.html
常用方法简介:
①SOAPEnvelope数字签名:
②SOAPEnvelope加密:
③用户授权
④例子:
三、通过采用Spring XML 配置WSS4J拦截器(interceptors)实现
(1)授权服务
(2)数字签名服务
(3)加密服务
如果你的服务是通过Spring建立的,那么通过配置Spring XML文件很容易配置WSS4J拦截器。在CXF官方文档中讲解了两种配置方式,分别是原始的WS-Security配置和WS-SecurityPlolicy配置,其中WS-SecurityPolicy是WS-Security的替代品,他提供更简单更标准的方式配置security。并且在WS-Security中的后台元素在WS-SecurityPolicy中仍然有效,并且有时需要去了解。
WS-SecurityPolicy配置说明如下:
① ws-security.username—用户名(UsernameToken中应用)
②WS-Security.password—密码(UsernameToken中应用),如果没有指定,就会调用callback Handler。
③ws-security.callback-handler—WSS4J安全处理Handler,通常用来检索密码为Keystores或者为UsernameToken。
④ws-security.signature.properties—数字签名配置文件,通常用来配置签名的Keystore和密钥对象。
⑤ws-security.encryption.properties—加密配置文件。通常用来配置签名的Keystore和密钥对象。
⑥ws-security.signature.username—KeyStore中的密钥别名(用来进行签名)如果在Spring中没有配置,将会查找配置文件中的配置的别名,如果在配置文件中没有配置,并且在KeyStore中仅包含一个密钥,那么就会用这个密钥。
⑦ws-security.encryption.username-- KeyStore中的密钥别名(用来进行加密)如果在Spring中没有配置,将会查找配置文件中的配置的别名,如果在配置文件中没有配置,并且在KeyStore中仅包含一个密钥,那么就会用这个密钥。如果在服务器端设置为useReqSigCert,这表示应该使用请求签名所用的客户机证书对响应进行加密。使用这个设置让服务器代码可以处理多个客户机,每个客户机有自己的证书。
⑧ws-security.signature.crypto—代替签名配置文件,它能够指向密钥对象。它允许更容易的密钥信息配置方案。
⑨ws-security.encryption.crypto--代替加密配置文件,它能够指向密钥对象。它允许更容易的密钥信息配置方案
UsernameToken
是向 WS-Security 提供用户名和密码对的标准方法。可以以明文形式发送密码信息,也可以以散列值形式(经过加密处理)发送。它对于需要直接身份验证的许多应用程序很方便。
例子如下
Spring XML配置文件如下:
常用配置文件如下:
有关Spring中配置简介,例子如下
相关推荐
本篇文章将详细介绍如何通过客户端编程方式使用Java调用WebService。 首先,让我们理解Java中调用WebService的基本步骤: 1. **获取WSDL文件**:WSDL是WebService的接口定义,它描述了服务的位置、服务提供的操作...
在IT行业中,VB6.0(Visual Basic 6.0)是微软公司开发的一款经典编程环境,用于构建Windows桌面应用程序。而Web Service是一种基于互联网的、采用标准XML(Extensible Markup Language)进行通信的软件系统,它允许...
PB11(PowerBuilder 11)是一款由Sybase公司推出的可视化编程工具,主要用于开发企业级的客户端/服务器(Client/Server)和Web应用程序。它以其强大的数据窗口组件和易用性著称,广泛应用于数据库应用开发。而...
**WebService详解** WebService是一种基于XML(可扩展标记语言)的通信协议,用于构建跨平台、跨语言的分布式应用程序。它的核心理念是提供一种标准的方式来暴露业务逻辑,使得不同系统之间可以互相调用服务,实现...
在IT领域,特别是企业级应用服务(EBS)与Web服务集成方面,Oracle E-Business Suite(EBS)提供了一套强大的工具和技术,允许企业通过Web服务接口将EBS的功能暴露给外部系统或应用程序。本文将深入探讨在EBS中发布...
Web服务(WebService)是一种基于互联网的、用于不同应用程序之间互相通信的技术。它的核心目标是让软件应用能够跨过网络障碍,实现异构系统间的无缝数据交换。在本教程中,我们将深入探讨Web服务,特别是JSON作为...
Web服务(WebService)是一种基于互联网的,用于应用程序之间交互的技术。它通过标准的XML(可扩展标记语言)和SOAP(简单对象访问协议)进行通信,允许不同系统间的数据交换,打破了平台和编程语言的障碍。本实例将...
Java作为一种广泛使用的编程语言,在开发基于Webservice的应用时具有天然优势。本文将详细介绍两种主流的Java调用Webservice的方式:Axis和SOAP,并通过具体代码示例进行阐述。 #### 二、Axis 方式调用 Webservice ...
【Lotus Domino与WebService服务详解】 Lotus Domino是一款强大的企业级协作软件,它不仅提供了电子邮件、日历、任务管理等功能,还支持通过WebService技术与其他系统进行数据交换和交互。在本文中,我们将深入探讨...
【WebService之CXF详解】 1. WebService概念解析: WebService是一种基于互联网的、平台独立的通信方式,它允许不同的系统之间通过网络交换数据,实现了应用程序间的互操作性。这种技术利用XML(eXtensible Markup...
【WebService详解】 WebService是一种基于互联网的、平台独立的交互服务技术,它允许不同的应用程序之间进行数据交换和功能调用。WebService的核心技术包括XML(可扩展标记语言)、SOAP(简单对象访问协议)、WSDL...
### WebService之通俗理解 #### 一、WebService简介与应用场景 WebService是一种标准的网络服务,它使得不同系统之间可以通过标准的协议(如HTTP)进行数据交换和服务调用,而无需关心底层实现细节。WebService...
**WebService描述语言WSDL详解** WebService是一种基于XML的开放标准,允许不同系统通过网络进行通信和数据交换。在WebService的世界里,WSDL(Web Services Description Language)扮演着至关重要的角色,它是一种...
### SAP调用外部WebService知识点详解 #### 一、概述 SAP系统中调用外部WebService是一种常见的集成场景,主要用于实现SAP系统与非SAP系统的数据交换或业务流程交互。本文将详细介绍如何在SAP系统中配置并调用外部...
【WebService详解】 WebService是一种基于Web的应用程序接口,它利用HTTP协议进行通信,使得不同系统间的应用程序可以相互通信。在本教程中,我们将深入探讨WebService的核心概念和技术。 **1. WebService工作原理...
【WebService详解】 WebService是一种基于互联网的、松散耦合的服务交互模式,它允许不同系统间的应用程序通过网络进行通信。在本示例中,“利用WebService编写的SendEMail程序”是利用了WebService技术来发送电子...
【Myeclipse创建的Webservice应用源码详解】 在IT行业中,Web服务是不同系统间进行数据交换和交互的一种标准方式。Webservice基于开放的XML(可扩展标记语言)标准,使得不同平台、不同编程语言的系统能够无缝对接...
Web服务(WebService)是一种基于开放标准的,使得不同系统间能够进行互操作的网络应用程序。...通过观看"05.WebService核心之WSDL深入详解.wmv"这个视频,相信你能对WSDL有更深入的理解,并能应用于实际项目中。