`
wangwengcn
  • 浏览: 176717 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

CXF使用X509证书的WS-Security进行验证

 
阅读更多
client端
package com.tongtech.ti.cxf.demo.security.X509.client;

/**
 * Please modify this class to meet your needs
 * This class is not complete
 */

import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import javax.xml.namespace.QName;

import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
import org.apache.ws.security.handler.WSHandlerConstants;

import com.tongtech.ti.cxf.demo.security.service.ISecuriyDemo;
import com.tongtech.ti.cxf.demo.security.service.ISecuriyService;

/**
 * This class was generated by Apache CXF 2.4.0-SNAPSHOT Tue Oct 26 16:45:43 CST
 * 2010 Generated source version: 2.4.0-SNAPSHOT
 * 
 */

public final class Client {

	private static final QName SERVICE_NAME = new QName(
			"http://demo.ti.tongtech.com/security/", "ISecuriyService");

	private Client() {
	}

	public static void main(String args[]) throws Exception {
		URL wsdlURL = ISecuriyService.WSDL_LOCATION;

		ISecuriyService ss = new ISecuriyService(wsdlURL, SERVICE_NAME);
		ISecuriyDemo port = ss.getISecuriyServicePort();
		org.apache.cxf.endpoint.Client client = ClientProxy.getClient(port);
		Endpoint cxfEp = client.getEndpoint();

		// Clint Out
		Map<String, Object> outProp = new HashMap<String, Object>();
		outProp.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP
				+ " " + WSHandlerConstants.SIGNATURE + " "
				+ WSHandlerConstants.ENCRYPT);
		outProp.put(WSHandlerConstants.USER, "clientprivatekey");
		outProp.put(WSHandlerConstants.ENCRYPTION_USER, "serverpublickey");
		outProp.put(WSHandlerConstants.PW_CALLBACK_CLASS,
				UTPasswordClientCallBack.class.getName());
		outProp.put(WSHandlerConstants.SIG_PROP_FILE,
				"cert/Client_Sign.properties");
		outProp.put(WSHandlerConstants.ENC_PROP_FILE,
				"cert/Client_Encrypt.properties");
		cxfEp.getOutInterceptors().add(new WSS4JOutInterceptor(outProp));

		// Client In(Return)
		Map<String, Object> inProp = new HashMap<String, Object>();
		inProp.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP
				+ " " + WSHandlerConstants.SIGNATURE + " "
				+ WSHandlerConstants.ENCRYPT);
		inProp.put(WSHandlerConstants.PW_CALLBACK_CLASS,
				UTPasswordClientCallBack.class.getName());
		inProp.put(WSHandlerConstants.DEC_PROP_FILE,
				"cert/Client_Sign.properties");
		inProp.put(WSHandlerConstants.SIG_PROP_FILE,
				"cert/Client_Encrypt.properties");
		cxfEp.getInInterceptors().add(new WSS4JInInterceptor(inProp));

		{
			System.out.println("Invoking input...");
			java.lang.String _input_in = "Input Value!";
			java.lang.String _input__return = port.input(_input_in);
			System.out.println("input.result=" + _input__return);
		}

		System.exit(0);
	}

}


server端
package com.tongtech.ti.cxf.demo.security.X509.server;

import java.util.HashMap;
import java.util.Map;

import javax.xml.ws.Endpoint;

import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
import org.apache.ws.security.handler.WSHandlerConstants;

import com.tongtech.ti.cxf.demo.security.service.ISecuriyDemoImpl;

/**
 * This class was generated by Apache CXF 2.4.0-SNAPSHOT Tue Oct 26 16:45:43 CST
 * 2010 Generated source version: 2.4.0-SNAPSHOT
 * 
 */

public class Server {

	protected Server() throws Exception {
		System.out.println("Starting Server");
		Object implementor = new ISecuriyDemoImpl();
		String address = "http://localhost:8080/sec";
		EndpointImpl ep = (EndpointImpl) Endpoint.publish(address, implementor);
		org.apache.cxf.endpoint.Endpoint cxfEp = ep.getServer().getEndpoint();

		// ///////////////////////////////////////////////////////////////

		Map<String, Object> inProp = new HashMap<String, Object>();
		inProp.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP
				+ " " + WSHandlerConstants.SIGNATURE + " "
				+ WSHandlerConstants.ENCRYPT);
		inProp.put(WSHandlerConstants.PW_CALLBACK_CLASS,
				UTPasswordServerCallBack.class.getName());
		inProp.put(WSHandlerConstants.SIG_PROP_FILE,
				"cert/Server_SignVerf.properties");
		inProp.put(WSHandlerConstants.DEC_PROP_FILE,
				"cert/Server_Decrypt.properties");
		cxfEp.getInInterceptors().add(new WSS4JInInterceptor(inProp));

		// /////////////////////////////////////////////////////////////////

		Map<String, Object> outProp = new HashMap<String, Object>();
		outProp.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP
				+ " " + WSHandlerConstants.SIGNATURE + " "
				+ WSHandlerConstants.ENCRYPT);
		outProp.put(WSHandlerConstants.USER, "serverprivatekey");
		outProp.put(WSHandlerConstants.PW_CALLBACK_CLASS,
				UTPasswordServerCallBack.class.getName());
		outProp.put(WSHandlerConstants.ENCRYPTION_USER, "clientpublickey");
		outProp.put(WSHandlerConstants.SIG_PROP_FILE,
				"cert/Server_Decrypt.properties");// 私钥
		outProp.put(WSHandlerConstants.ENC_PROP_FILE,
				"cert/Server_SignVerf.properties");// 公钥
		cxfEp.getOutInterceptors().add(new WSS4JOutInterceptor(outProp));
	}

	public static void main(String args[]) throws Exception {
		new Server();
		System.out.println("Server ready...");

		Thread.sleep(60 * 60 * 1000);
		System.out.println("Server exiting");
		System.exit(0);
	}
}
分享到:
评论

相关推荐

    CXFWS-Security

    1)参考: ...2)CXFWS工程是基于WS-Security规范,实现X.509身份验证的,同时实现签名和加密 keytool 工具的使用参考 http://hi.baidu.com/qianshuifanchuan/blog/item/6291b8510009ad3c42a75b8e.html ...

    纯java调用ws-security+CXF实现的webservice安全接口

    本文将深入探讨如何使用CXF框架结合ws-security标准来实现对Java客户端调用Web服务的安全接口。CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务,而ws-security(Web Services Security)则是用于...

    cxf+ws-security-JAR

    CXF支持使用X.509证书进行签名。 3. **消息加密(Message Encryption)**:保护数据在传输过程中的隐私,防止数据被窃取。加密通常基于公钥基础设施(PKI)。 4. **WS-SecureConversation**:用于建立长期的安全上...

    ws-security 和wss4j的jar包

    而Apache WSS4J(Web Services Secure Utilities for Java)则是Apache软件基金会开发的一个实现WS-Security标准的开源库,它为Java开发者提供了处理和验证Web服务消息安全性的工具。 首先,我们来看一下标题提到的...

    ws-security jar

    1. **身份验证**:通过用户名令牌、X.509证书或SAML令牌进行服务消费者的认证。 2. **消息完整性**:使用消息摘要(如MD5或SHA-1)和数字签名来防止消息被篡改。 3. **消息保密性**:通过加密机制确保消息内容不被...

    我的cxf与ws-security

    【标题】"我的cxf与ws-security"涉及的是在Java Web服务开发中使用Apache CXF框架集成WS-Security(Web Service Security)的安全机制。Apache CXF是一个开源的、功能丰富的Web服务框架,它允许开发者创建和消费各种...

    CXF(WS_Security)证书加密

    证书加密是WS-Security中的一个重要组成部分,它通常使用X.509数字证书来验证服务提供者和服务消费者的标识,并对消息进行加密。X.509证书包含公钥和私钥,公钥用于加密数据,私钥用于解密数据。在CXF中,我们可以...

    ws-security三个jar包

    这些可能包括X.509证书处理、XML数字签名、XML加密、SOAP头的处理以及其他与WS-Security相关的功能。 在Web服务中使用这些库,开发者可以实现以下功能: 1. 用户身份验证:通过用户名令牌、X.509证书或其他安全令牌...

    CXF WS-Security WSS4J 例子

    本示例是关于如何在CXF中使用WS-Security和WSS4J进行安全配置和实践的实例。运行此例子时,你需要关注以下几个核心知识点: 1. **WS-Security**:这是OASIS制定的一套标准,定义了Web服务安全的各种模式,包括消息...

    Web 服务规范_第 4 部分:WS-Security源码

    1. **身份验证**:WS-Security允许服务提供商和消费者进行身份验证。通过在SOAP消息中添加安全令牌,如X.509证书或用户名/密码对,可以验证服务请求者的身份。 2. **消息完整性**:通过数字签名确保消息在传输过程...

    ws-security java-mail

    例如,`ws-security` 可以通过X.509证书进行公钥基础设施(PKI)的认证,也可以使用UsernameToken或 Kerberos Token进行用户身份验证。 在Xfire中实现`ws-security`,意味着开发者正在为基于Xfire的Web服务添加安全...

    WS-Security构筑安全的SOAP消息调用

    3. **CXF**:一个开源框架,支持多种Web服务标准,包括WS-Security。 #### 六、总结 WS-Security规范为Web服务的安全性提供了一个强大的框架,它不仅解决了传统安全机制的局限性,还通过消息完整性和加密等功能...

    cxf-uw-ws-soap

    - CXF支持SOAP 1.1和1.2版本,提供了完整的SOAP处理能力,包括消息编码、处理WS-Security等。 - 使用CXF,开发者可以通过JAX-WS(Java API for XML Web Services)来创建SOAP服务。JAX-WS是Java中定义Web服务的...

    CXF实现SSL安全验证

    这些信息构成了 X.509 标准中的 Distinguished Name (DN)。 ### 步骤二:配置 Tomcat 服务器 完成密钥库的创建后,下一步是在 Tomcat 服务器上启用 HTTPS。这可以通过修改 Tomcat 的 `server.xml` 文件来实现。在 ...

    CXF WSSCEURITRY 身份认证demo

    【CXF WSSCEURITRY 身份认证demo】是一个关于在WEB服务中使用Apache CXF框架实现WS-Security(Web Services Security)标准的身份验证的示例项目。该示例着重展示了如何在CXF中配置和使用WS-SecureConversation(WS-...

    CXF 通过用户名和密码进行验证

    3. **证书认证**:除了用户名和密码,也可以使用X.509证书进行双向认证,提供更高级别的安全性。 4. **安全协议**:使用HTTPS等安全协议,确保数据在传输过程中的安全。 总结,"CXF 通过用户名和密码进行验证"涉及...

    Cxf客户端及服务器端,实现客户端和服务器端的权限验证

    例如,可以使用X.509证书进行客户端和服务器端的身份验证,或者使用UsernameToken来传递用户名和密码。此外,还可以使用加密和签名策略来保护消息内容。 为了实现这些功能,我们需要进行以下步骤: 1. **服务器端...

    cxf 3.1.1 jar包

    8. **cxf-rt-ws-security.jar**: 包含了WS-Security和其他安全相关的实现,用于Web服务的安全认证和加密。 9. **cxf-tools-common.jar** 和 **cxf-tools-wsdlto-core.jar** 等工具类库,用于生成服务端和客户端代码...

    apache-cxf-2.5.2

    6. **安全特性**:CXF支持WS-Security和其他安全标准,以确保Web服务的安全性。 7. **集成性**:CXF可以很好地与其他Java企业级框架集成,如Spring,允许灵活的配置和服务部署。 8. **测试工具**:CXF提供了诸如...

    cxf 安全验证例子

    例如,使用X.509证书进行签名和加密。 5. **角色基授权**:通过在SOAP消息中添加WS-政策或WS-SecurityPolicy声明,可以实现基于角色的访问控制。 6. **令牌认证**:如SAML令牌,可以实现单点登录(SSO)功能。 ...

Global site tag (gtag.js) - Google Analytics