- 浏览: 2551881 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
xfire的webservice安全机制
在原来使用xfire和spring集成的基础上,需要加入下面的这些包
在集成到jboss的时候还出了一个问题,wss4j-1.5.0.jar这个包还死活找不到,不知道是什么原因,后来找了半天
发现jboss4.2这娃在这个路径上有些安全相关的jar吧,拷贝到这里后,jboss运行正常了
D:\tool\jboss-4.2\server\default\deploy\jbossws.sar
其他的包,都仍到WEB-INF/lib下面就可以了
commons-discovery-0.2.jar
bcprov-jdk15-133.jar
wss4j-1.5.0.jar
xalan-2.7.0.jar
先说server端如何配置和加入程序:
1、server端提供出来的webservice先写个接口,可以直接继承自原来的WS接口UserServiceEnc.java:
package com.megaeyes.ipcamera.service.webservice.iface;
public interface UserServiceEnc extends UserService {
}
2、写一个passwordHandler来校验用户名,PasswordHandler.java:
package com.megaeyes.ipcamera.service.webservice.tools;
import java.util.HashMap;
import java.util.Map;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import org.apache.ws.security.WSPasswordCallback;
public class PasswordHandler implements CallbackHandler {
private final Map passwords = new HashMap();
@SuppressWarnings("unchecked")
public PasswordHandler() {
passwords.put("safedv", "safedv");
passwords.put("tianyi", "tianyi");
}
public void handle(Callback[] callbacks) {
WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];
String id = callback.getIdentifer();
callback.setPassword((String) passwords.get(id));
}
}
3、写一个WSS4JTokenHandler对加密内容的操作的handler,WSS4JTokenHandler.java:
package com.megaeyes.ipcamera.service.webservice.tools;
import java.security.cert.X509Certificate;
import java.util.Vector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
import org.apache.ws.security.WSUsernameTokenPrincipal;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.apache.ws.security.handler.WSHandlerResult;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import sun.security.x509.X500Name;
public class WSS4JTokenHandler extends AbstractHandler {
private static final Log log = LogFactory.getLog(WSS4JTokenHandler.class);
public void invoke(MessageContext context) throws Exception {
Vector result = (Vector) context.getProperty(WSHandlerConstants.RECV_RESULTS);
if (result == null) {
log.error("Client does not contain Security Header, need WSSJOutHandler");
return;
}
for (int i = 0; i < result.size(); i++) {
WSHandlerResult res = (WSHandlerResult) result.get(i);
for (int j = 0; j < res.getResults().size(); j++) {
WSSecurityEngineResult secRes = (WSSecurityEngineResult) res.getResults().get(j);
int action = secRes.getAction();
// USER TOKEN
if ((action & WSConstants.UT) > 0) {
WSUsernameTokenPrincipal principal = (WSUsernameTokenPrincipal) secRes
.getPrincipal();
// Set user property to user from UT to allow response encryption
context.setProperty(WSHandlerConstants.ENCRYPTION_USER, principal.getName());
log.info("Client's Username: " + principal.getName() + " Client's Password: "
+ principal.getPassword() + "\n");
}
// SIGNATURE
if ((action & WSConstants.SIGN) > 0) {
@SuppressWarnings("unused")
X509Certificate cert = secRes.getCertificate();
X500Name principal = (X500Name) secRes.getPrincipal();
// Do something whith cert
log.info("Signature for : " + principal.getCommonName());
}
}
}
log.info("WSS4JTokenHandler Done!");
}
}
4、applicationContext-webservice.xml服务端专门配置文件里面加入:
<bean name="userServiceEnc" parent="baseWebService">
<property name="serviceBean" ref="UserServiceImpl" />
<property name="serviceClass"
value="com.megaeyes.ipcamera.service.webservice.iface.UserServiceEnc" />
<property name="inHandlers">
<list>
<ref bean="domInHandler" />
<ref bean="wss4jInHandlerEnc" />
<ref bean="validateUserTokenHandler" />
</list>
</property>
</bean>
<bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler"/>
<bean id="wss4jInHandlerEnc" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
<property name="properties">
<props>
<prop key="action">Encrypt</prop>
<prop key="decryptionPropFile">
insecurity_enc.properties
</prop>
<prop key="passwordCallbackClass">
com.megaeyes.ipcamera.service.webservice.tools.PasswordHandler
</prop>
</props>
</property>
</bean>
<bean id="validateUserTokenHandler"
class="com.megaeyes.ipcamera.service.webservice.tools.WSS4JTokenHandler"/>
4、在SRPING的配置文件里面的那个properties,放置到classpath下面就可以了insecurity_enc.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=ipcamera
#私匙的名字
org.apache.ws.security.crypto.merlin.file=safedv_private.jks
5、在服务端的classpath里面要放置自己的私匙。关于这几个私匙的生成。后续会讲。以上5步服务端的配置就结束了。
在原来使用xfire和spring集成的基础上,需要加入下面的这些包
在集成到jboss的时候还出了一个问题,wss4j-1.5.0.jar这个包还死活找不到,不知道是什么原因,后来找了半天
发现jboss4.2这娃在这个路径上有些安全相关的jar吧,拷贝到这里后,jboss运行正常了
D:\tool\jboss-4.2\server\default\deploy\jbossws.sar
其他的包,都仍到WEB-INF/lib下面就可以了
commons-discovery-0.2.jar
bcprov-jdk15-133.jar
wss4j-1.5.0.jar
xalan-2.7.0.jar
先说server端如何配置和加入程序:
1、server端提供出来的webservice先写个接口,可以直接继承自原来的WS接口UserServiceEnc.java:
package com.megaeyes.ipcamera.service.webservice.iface;
public interface UserServiceEnc extends UserService {
}
2、写一个passwordHandler来校验用户名,PasswordHandler.java:
package com.megaeyes.ipcamera.service.webservice.tools;
import java.util.HashMap;
import java.util.Map;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import org.apache.ws.security.WSPasswordCallback;
public class PasswordHandler implements CallbackHandler {
private final Map passwords = new HashMap();
@SuppressWarnings("unchecked")
public PasswordHandler() {
passwords.put("safedv", "safedv");
passwords.put("tianyi", "tianyi");
}
public void handle(Callback[] callbacks) {
WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];
String id = callback.getIdentifer();
callback.setPassword((String) passwords.get(id));
}
}
3、写一个WSS4JTokenHandler对加密内容的操作的handler,WSS4JTokenHandler.java:
package com.megaeyes.ipcamera.service.webservice.tools;
import java.security.cert.X509Certificate;
import java.util.Vector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityEngineResult;
import org.apache.ws.security.WSUsernameTokenPrincipal;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.apache.ws.security.handler.WSHandlerResult;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import sun.security.x509.X500Name;
public class WSS4JTokenHandler extends AbstractHandler {
private static final Log log = LogFactory.getLog(WSS4JTokenHandler.class);
public void invoke(MessageContext context) throws Exception {
Vector result = (Vector) context.getProperty(WSHandlerConstants.RECV_RESULTS);
if (result == null) {
log.error("Client does not contain Security Header, need WSSJOutHandler");
return;
}
for (int i = 0; i < result.size(); i++) {
WSHandlerResult res = (WSHandlerResult) result.get(i);
for (int j = 0; j < res.getResults().size(); j++) {
WSSecurityEngineResult secRes = (WSSecurityEngineResult) res.getResults().get(j);
int action = secRes.getAction();
// USER TOKEN
if ((action & WSConstants.UT) > 0) {
WSUsernameTokenPrincipal principal = (WSUsernameTokenPrincipal) secRes
.getPrincipal();
// Set user property to user from UT to allow response encryption
context.setProperty(WSHandlerConstants.ENCRYPTION_USER, principal.getName());
log.info("Client's Username: " + principal.getName() + " Client's Password: "
+ principal.getPassword() + "\n");
}
// SIGNATURE
if ((action & WSConstants.SIGN) > 0) {
@SuppressWarnings("unused")
X509Certificate cert = secRes.getCertificate();
X500Name principal = (X500Name) secRes.getPrincipal();
// Do something whith cert
log.info("Signature for : " + principal.getCommonName());
}
}
}
log.info("WSS4JTokenHandler Done!");
}
}
4、applicationContext-webservice.xml服务端专门配置文件里面加入:
<bean name="userServiceEnc" parent="baseWebService">
<property name="serviceBean" ref="UserServiceImpl" />
<property name="serviceClass"
value="com.megaeyes.ipcamera.service.webservice.iface.UserServiceEnc" />
<property name="inHandlers">
<list>
<ref bean="domInHandler" />
<ref bean="wss4jInHandlerEnc" />
<ref bean="validateUserTokenHandler" />
</list>
</property>
</bean>
<bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler"/>
<bean id="wss4jInHandlerEnc" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
<property name="properties">
<props>
<prop key="action">Encrypt</prop>
<prop key="decryptionPropFile">
insecurity_enc.properties
</prop>
<prop key="passwordCallbackClass">
com.megaeyes.ipcamera.service.webservice.tools.PasswordHandler
</prop>
</props>
</property>
</bean>
<bean id="validateUserTokenHandler"
class="com.megaeyes.ipcamera.service.webservice.tools.WSS4JTokenHandler"/>
4、在SRPING的配置文件里面的那个properties,放置到classpath下面就可以了insecurity_enc.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=ipcamera
#私匙的名字
org.apache.ws.security.crypto.merlin.file=safedv_private.jks
5、在服务端的classpath里面要放置自己的私匙。关于这几个私匙的生成。后续会讲。以上5步服务端的配置就结束了。
发表评论
-
SOAP AXIS2 with HTTPS
2011-11-24 15:28 4247SOAP AXIS2 with HTTPS 1. sampl ... -
xfire后续问题补充
2010-01-06 14:34 2630xfire后续问题补充 问题一:xfire的方法中,需要知道 ... -
AXIS实现WebService
2010-01-06 11:51 3958AXIS实现WebService webservice里面对 ... -
xfire的webservice安全机制之签名
2010-01-05 23:31 1379xfire的webservice安全机制之签名 服务端配置修 ... -
xfire的webservice安全机制之签名
2010-01-05 23:29 1613xfire的webservice安全机制之签名 服务端配置修 ... -
xfire的webservice安全机制之用户校验
2010-01-05 23:29 2110xfire的webservice安全机制之用户校验 xfir ... -
xfire的webservice安全机制之加密(三)
2010-01-05 23:29 1272如何用KEYTOOL工具生成私匙和公匙 1、通过别名和密码创 ... -
xfire的webservice安全机制之加密(二)
2010-01-05 23:28 2815xfire的webservice安全机制 下面是客户端调用的 ... -
spring下的webservice之xfire
2010-01-05 23:25 2036http://xfire.codehaus.org/ xfi ... -
Xfire在Weblogic10.3上发布的问题
2010-01-05 10:37 6324Xfire在Weblogic10.3上发布的问题 最近项目的 ... -
mule2.2.x架构(八)部署到WEB项目
2010-01-05 10:36 1965mule2.2.x架构(八)部署到WEB项目 所有的示例文档 ... -
xfire的Client的WSDL调用
2010-01-05 10:36 3156xfire的Client的WSDL调用 也只是想测试一下,如 ... -
mule2.2.x架构(七)示例学习LoanBroker
2010-01-05 10:36 1709mule2.2.x架构(七)示例学习LoanBroker 所 ... -
xfire的client的JAVA调用方式
2010-01-05 10:35 3553xfire的client的JAVA调用方式 平时我们调用xf ... -
mule2.2.x架构(六)示例学习scripting
2010-01-05 10:35 1474mule2.2.x架构(六)示例学习scripting 所有 ... -
mule2.2.x架构(五)示例学习errorHandle
2010-01-05 10:34 1678mule2.2.x架构(五)示例学习errorHandle ... -
mule2.2.x架构(四)示例学习StockQuote
2010-01-05 10:34 1872mule2.2.x架构(四)示例学习StockQuote 所 ... -
mule2.2.x架构(三)示例学习hello
2010-01-05 10:34 1874mule2.2.x架构(三)示例学习hello 所有的示例文 ... -
mule2.2.x架构(二)示例学习echo
2010-01-05 10:33 1774mule2.2.x架构(二)示例学习echo 所有的示例文档 ... -
mule2.2.x架构(一)环境搭建
2010-01-05 10:31 2278mule2.2.x架构(一)环境搭建 MULE首页 http ...
相关推荐
Xfire Webservice加密是一种在开发基于Xfire的游戏社区服务时,用于保护通信安全的重要技术。Xfire是一款已停运的在线游戏社交平台,它允许玩家与朋友即时通讯、记录游戏成绩,并与其他玩家互动。尽管Xfire本身不再...
**XFire Webservice 上传下载源码详解** XFire 是一款强大的Java Web服务框架,它为开发者提供了构建高质量、高性能的Web服务的工具。在"xfire webservice 上传下载源码"这个主题中,我们将深入探讨如何使用XFire来...
综上所述,XFire Webservice服务器端是一个复杂的系统,涉及到了Web Service的核心概念、安全实践、性能优化等多个方面,对游戏开发者提供了丰富的功能接口,使得游戏能够更好地融入XFire的生态系统。
9. **安全性**:对于涉及到敏感数据或认证的Web服务,XFire也提供了安全特性,如SSL/TLS加密、WS-Security等,以保护通信的安全。 10. **持续集成与部署**:在开发完成后,XFire生成的客户端代码可以被包含在应用的...
4. 安全可靠:xfire提供了一个安全的WebService开发环境,支持SSL/TLS加密、身份验证和授权等功能。 xfire的应用场景包括: 1. 企业应用集成:xfire可以用于企业应用集成,实现不同系统之间的数据交换和集成。 2. ...
为了确保数据安全,开发者需要对API调用进行加密,并遵循XFire的访问策略。同时,优化请求频率和数据量可以提高服务的响应速度和整体性能。 总结,XFire Webservice 客户端是开发者与XFire服务器交互的重要工具,...
你可以通过设置认证机制、加密传输、限制访问策略等方式增强Web服务的安全性。 10. **性能优化** 考虑到性能,可以调整Xfire的配置以减少内存占用、优化线程池或启用缓存。同时,合理设计数据库查询以减少不必要的...
5. **安全机制**:可能涉及到身份验证、授权和加密等,确保服务的安全性。 在**开发文件**中,我们可以期待以下内容: 1. **项目结构**:展示了源码目录的组织方式,帮助开发者定位到具体的功能模块。 2. **配置...
这些阶段为开发者提供了丰富的扩展点,可以通过编写Handler实现各种自定义功能,如安全控制、消息加密、签名或压缩。 【POJO Bean导出为Web服务】 XFire的一大优势在于,它可以轻松地将普通的Java类(POJO Bean)...
可能需要实施HTTPS来加密传输,同时,可能需要使用OAuth或其他认证机制来验证请求的来源,确保只有授权的用户或应用可以访问Xfire的数据。 6. 文件"Xfire建立WebService.doc":这个文档很可能包含了详细的步骤指导...
标题中的“xfire开发webservice所需jar包”指的是在使用XFire框架开发Web服务时所需要的一组Java类库。XFire是Apache CXF项目的一部分,它是一个轻量级的、高性能的Web服务框架,用于创建和消费SOAP服务。这篇博客...
4. **安全机制**:为了保护用户的隐私和数据安全,Xfire Web服务可能采用了身份验证和加密技术,如OAuth、HTTPS或SSL/TLS证书。 5. **多线程编程**:如果.jar包包含服务器端组件,多线程编程可能用于处理并发请求,...
9. **安全性考虑**: 当访问Web服务时,需要考虑身份验证、授权、加密等安全问题。XFire支持WS-Security等安全标准,可以实现安全的Web服务通信。 10. **性能优化**: 通过缓存、线程池和HTTP连接管理等方式,可以...
本篇文章详细介绍了WebService的基本概念和AXIS、XFire、CXF这三个流行的Java WebService框架,以及授权认证和加密解密在WebService中的应用。这些内容对于理解和实践WebService开发具有重要价值,为开发者提供了...
WebService框架XFire是一款用于构建和消费Web服务的开源Java框架,它在早期的Web服务开发中扮演了重要角色。XFire是由Avalon项目发展而来,后来成为了CodeHaus组织的一部分,并最终演变为Apache CXF项目。理解XFire...
XFire支持WS-Security,可以实现消息级的安全性,如数字签名和加密。这使得敏感数据在传输过程中得到保护,防止被窃取或篡改。 6. **与其他技术的集成** XFire与Spring框架的紧密集成使得它易于在企业级应用中...
6. **安全性**:对于涉及敏感信息的Web服务,客户端代码可能需要实现加密和解密机制,如SSL/TLS协议,以确保数据传输的安全性。 7. **缓存策略**:为了提高性能,客户端可能会实现缓存机制,对某些频繁调用但变化...
8. **异常处理和安全性**: 了解如何在Xfire中处理异常,以及如何通过添加安全层(如SSL加密或WS-Security)来保护你的Web Service。 9. **与Spring集成**: 如果你的项目基于Spring框架,你将学习如何将Xfire服务...
8. **安全与权限**:由于涉及到敏感数据(如用户信息),Xfire的Web服务可能需要实施安全措施,如HTTPS加密、身份验证和授权。 9. **性能优化**:对于大规模的在线游戏社区,优化服务性能(如减少延迟、提高并发...