- 浏览: 1528961 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
转自:http://hi.baidu.com/zhaopengletter/blog/item/a85945915dcf378ba877a448.html
经过了一个星期的晕头转向之后终于对wss4j和axis2实现WS-Security 有点了解,写了一个demo如下:
一、 wss4j 简介
Wss4j 是 apache 开发的,标准实现 WS-Security (WebService 安全 ) 的开源项目,它提供了用户名令牌环验证 (UsernameToken) 和传递消息时保证信息的完整性和真实性等一些 WebService 安全保障。
二、环境准备
2.1 开发环境准备
在正式开始前还要去下载一个
rampart-1.1.mar
,下载地址
http://apache.hoxt.com/ws/rampart/1_1/
。把这个东东放到
WEB-INF\modules
下去
这个东东是在
AXIS2
上实现
WSS4J
必需要的一个组件。把
wss4j
的相关
jar
包导到
lib
下。
三、用 KEYTOOL 生成一对 JKS 文件
首先我们用
keytool
生成一对
JKS
文件,
service.jks
和
client.jks
。
service.jks
存放了
service
的私钥和
client
的公钥。
client.jks
存放了
client
的私钥和
service
的公钥。
本人生成的
service.jks
的私钥和公钥
keystore
的密码是
apache
client.jks
的私钥和公钥
keystore
的密码是
apache
,
( 注如果不会用 keytool 请自己看相关资料,我用的是 apache 提供 sample 的文件 )
2.2 搭建 webservice 环境
将 axis2.war 包拷贝到 tomcat 安装目录下的 webapps 目录下。
启动 Tomcat(D:\Tomcat5.5\bin\startup.bat) ,打开浏览器输入并访问 :http://127.0.0.1:8080/axis2 来查看 , 结果如下图,表示 axis2 已经工作正常。
四、建立 web 应用
4.1 编写服务器端代码
首先简单介绍我的 Wss4j 实现 WS-Security 功能 , 很简单就是客户端发送一个字符串,服务器端得到该字符串,同时把字符串在发送给客户端, 首先自己建立一个 web 应用工程 , 这里就以我的 wsc 应用工程为例
在 src 下建一个包 com.neusoft.wss4j.rempart.demo.services 在这里写一个类 SimpleService 作为服务器端
该类的内容是:
package com.neusoft.wss4j.rempart.demo.services;
public class SimpleService
{
public String echo(String arg)
{
return arg;
}
}
这个类的作用就是接收客户端的字符串,并且把该字符串返回给客户端。
这里还有个类,该类是实现 UsernameToken 和传送信息的安全性和完整性的核心,该类被配置在 axis2.xml 和 service.xml 中,从而能得到用户配置的 axis2.xml 中的信息,和服务器端配置的 service.xml 的 信息。每当客户端发送请求时,它都要首先通过该类获得访问服务端的权限和获得发送数据所需要的加密密码,然后把数据加密发送给服务器端,如果没有权限则不 能把数据发送到服务器端,每当服务器端想要把数据传送到客户端时,也要经过次类获得发送数据所需要的加密密码,然后把数据加密返回给客户端,客户端通过解 密获得明文信息。它的内容如下:
package com.neusoft.wss4j.rempart.demo.services;
import org.apache.ws.security.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import java.io.IOException;
public class PWCBHandler implements CallbackHandler
{
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException
{
for (int i = 0; i < callbacks.length; i++)
{
WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
String id = pwcb.getIdentifer();
if("client".equals(id))
{
pwcb.setPassword("apache");
}
else if("service".equals(id))
{
pwcb.setPassword("apache");
}
else
{
throw new UnsupportedCallbackException(callbacks[i],
" 对不起,您不是授权用户,不能访问该 WEB 服务! ");
}
}
}
}
4.2 编写服务器端的描述文件 services.xml
然后写一个解析该服务器类 services.xml 文件该文件的内容如下:
<? xml version = "1.0" encoding = "UTF-8" ?>
< service name = "wsc" >
< operation name = "echo" >
< messageReceiver
class = "org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</ operation >
< parameter name = "ServiceClass" locked = "false" >
com.neusoft.wss4j.rempart.demo.services.SimpleService
</ parameter >
< module ref = "rampart" />
<parameter name="InflowSecurity">
<action>
<items>Timestamp Signature</items>
<signaturePropFile>
keys/service.properties
</signaturePropFile>
</action>
</parameter>
<parameter name="OutflowSecurity">
<action>
<items>Timestamp Signature</items>
<user>service</user>
<passwordCallbackClass>
com.neusoft.wss4j.rempart.demo.services.PWCBHandler
</passwordCallbackClass>
<signaturePropFile>
keys/service.properties
</signaturePropFile>
<signatureKeyIdentifier>
DirectReference
</signatureKeyIdentifier>
</action>
</parameter>
</ service >
服务器 wsc 中有几个方法就需要配置几个 < operation ></ operation >
echo 为 wsc 服务器类中的方法 。 wsc 为服务的名字也就是后边的打包服务器端 wsc .aar 的名字 。着重看下红色 和粉色 字体部分,红色 这部分是客户端传来信息用数字签名来解密客户端传过来的加密信息本例通过 keys 文件夹下的 service.properties 这个文件找到 service.jks 对信息进行解密,粉色 部分是服务器端把输出向客户端的信息加密用的,本例通过 keys 文件夹下的 service.properties 这个文件找到 service.jks 对信息加密的。
service.properties 的内容如下:
org.apache.ws.security.crypto.provider = org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type = jks
org.apache.ws.security.crypto.merlin.keystore.password = apache
org.apache.ws.security.crypto.merlin.file = keys/service.jks
写明了加密文件的类型,文件密码,文件名称。
发表评论
-
客户端用https连接服务器的一点心得
2016-05-11 17:13 541转自:http://dannyyuan.blog.51ct ... -
解决PKIX:unable to find valid certification path to requested target 的问题
2016-05-11 17:11 921转自:http://blog.csdn.net/ ... -
Spring boot下自定义spring oauth2的授权页面
2016-05-06 17:48 22258自定义WhitelabelApprovalEndpoint ... -
xStream开发HTTP的XML内容
2013-07-03 09:58 10591、编写自定义XPPDriver代码: package ... -
AXIS2 开发示例
2013-06-28 17:10 1048实体类: package com.mport.entity ... -
HttpURLConnection or URLConnection post xml content to web server
2013-05-31 01:56 2064客户端示例1: package client; ... -
Axis2 体系结构
2012-06-19 12:34 1010前言 结构都是它本身所能产生效率的结果。任何一个成功 ... -
Axis 1.4 基于wss4j UsernameToken 的安全验证
2011-12-30 17:24 2470利用以下的wsdl文件生成客户端及服务端代码: < ... -
wss4j和axis2实现WS-Security(2)
2011-12-29 12:13 1091转自:http://hi.baidu.com/zhaopeng ... -
Using WS-Security with Axis (Java) v2006
2011-12-23 11:24 1561转自:http://www.arcwebservices.co ... -
[Java] Testing SOAP Headers with a Simple Axis Handler
2011-12-23 11:02 1164转自:http://weblogs.asp.net/jdanf ... -
Axis 1.4 将WSDL文件逆向后String数组只变成String
2011-12-22 08:26 2040这些天在对一个项目扩展功能时使用Axis 1. ... -
实现Axis web service 的数字证书认证(CLIENT-CERT)
2011-12-09 12:28 3733本文参考自:J2EE Web服务开发系列之十二: 实现安全的 ... -
实现Axis web service 的基本方式认证(BASIC)
2011-12-09 10:41 2190本文参考自:J2EE Web服务开发系列之十二: 实现安全的A ... -
生成SOAP消息示例
2011-09-27 11:36 11283调用 web service 时生成soap消息的区别, ... -
Axis 1.4 上传二进制文件(base64Binary)
2011-04-22 16:32 2045服务端代码: package samples.userg ... -
Axis 1.4 WSDL2Java、Java2WSDL的使用
2011-04-21 16:52 3446d:>java -classpath % ... -
在axis1.4中传递复杂类型数组参数(ArrayMapping)
2011-04-21 11:50 3747Axis1.4环境配置: 配置一些工具在命 ... -
axis2 学习(rpc)
2011-04-15 16:03 2157刚开始学习时,可不必考虑某些包的功能。我当前是把所有的包都导进 ... -
xfire 学习
2011-04-14 13:45 830我
相关推荐
2. **wss4j-ws-security-dom.jar**:DOM(Document Object Model)版本的WS-Security实现,用于处理基于DOM的XML消息。 3. **wss4j-ws-security-stax.jar**:STAX(Streaming API for XML)版本的实现,适用于处理...
`ws-security`和`wss4j`就是两个关键的库,它们专注于为基于SOAP的Web服务提供安全支持。这两个组件主要涉及到WS-Security(Web Services Security)规范,该规范定义了一套标准来确保Web服务消息的机密性、完整性和...
2. **创建安全上下文**:为了实现身份验证,你需要创建一个`WSS4JOutInterceptor`,并提供安全相关的配置,比如使用`UsernameToken`进行基本认证。这可以通过`WSSecurityProperties`类来完成。 3. **添加拦截器**:...
**标签“wss4j和axis2”关联知识点** - **Apache Axis2**:Axis2是Apache软件基金会的一个开放源代码Web服务引擎,它提供了一种基于SOAP的消息传递模型。Axis2与WSS4J结合,可以提供端到端的Web服务安全解决方案。 ...
2. **WSS4J(Web Services Security for Java)**:Apache Axis2通常使用WSS4J库来处理WS-Security相关的操作,包括头鉴权。 3. **用户名令牌(Username Token Profile)**:这是WS-Security中的一种常见认证方式,...
2. **配置客户端处理程序**:如果使用WS-Security,需要在客户端的 AxisClient 或 ServiceClient 实例中添加适当的处理程序,如WSS4J处理程序,这些处理程序负责在请求中添加必要的安全令牌。 3. **发送安全请求**...
1. **WSS4J**:Apache WSS4J实现了OASIS Web Services Security标准,用于对SOAP消息进行签名和验证,与Axis和XML-Security项目兼容,支持与JAX-RPC和.NET环境的互操作。 2. **Rampart**:是Axis2的一个模块,主要...
Axis是一个开放源码的SOAP栈,常用于创建和部署Web服务,而CXF则是一个更现代的Java框架,也用于构建和消费Web服务,支持WS-Security等高级特性。 首先,理解身份验证在Web服务中的重要性。身份验证是确保只有授权...
在"Server"部分的源码中,可能会看到实现这些安全特性的代码,如使用X.509证书进行SSL/TLS握手,或者使用WSS4J库实现WS-Security头的添加和验证。"Client"则可能包含相应的调用和服务请求,同时处理服务器返回的加密...
Rampart模块基于WSS4J(Web Services Security for Java)库,该库提供了实施WS-Security规范的各种工具。在源码中,我们可以看到Rampart如何创建和管理加密密钥,以及如何在SOAP消息中插入加密元素。开发者可以通过...
WSS4J是WS-Security标准的实现,提供了安全的Web服务通信,支持加密和数字签名等功能。 #### 13. Apache WSRF WSRF实现了Web Services Resource Framework标准,提供了一种管理Web服务资源的机制,增强了服务的管理...
4. **整合过程**:在Axis1.4中实现Wrapped样式加密和签名,开发者需要配置WSS4J(Web Services Security for Java)库,该库提供了在SOAP消息上添加安全头的功能。这包括设置加密和签名的策略,如使用的算法、密钥...
- **加密和签名**:使用WSS4J库来加密和签名SOAP消息,确保数据在传输过程中的安全。 - **强化部署**:采取措施来防止未经授权的访问,例如设置访问控制列表。 - **输入验证**:确保所有接收到的数据都是合法的,...
9. **XML Security Libraries** (如wsse.jar, wss4j.jar): 在安全性要求较高的场景下,这些库提供了Web服务安全标准的支持,如WS-Security,用于加密、签名和身份验证。 10. **Protocol Handlers** (如httpclient....
- **服务器端实现**:首先,定义服务接口和实现类,然后使用XFire或Axis工具发布为Web服务。发布时,需要指定服务的URI和WSDL文件位置。 - **客户端实现**:获取服务器发布的WSDL文件,使用XFire或Axis提供的工具...
5. **wss4j-1.5.1.jar**:Web Services Security for Java,提供安全相关的支持,如数字签名和加密,确保Web服务的安全通信。 6. **wstx-asl-3.2.0.jar**:Woodstox,一个高效的XML流解析器和生成器,用于处理XML...
`WSS`可能指的是Web Service的安全性,如使用WS-Security标准来保护数据传输过程。 总的来说,这个主题涉及的技术点包括Web Service架构、WSDL描述、SOAP通信、API使用、编程实践以及可能的安全措施。对于开发者来...