首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

Mule ESB 学习札记(15)CXF SOAP基于JKS的验证的配置

2013-09-07 
Mule ESB 学习笔记(15)CXF SOAP基于JKS的验证的配置mule xmlns:corehttp://www.mulesoft.org/schema/mu

Mule ESB 学习笔记(15)CXF SOAP基于JKS的验证的配置
<mule xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:http="http://www.mulesoft.org/schema/mule/http" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd " version="EE-3.3.0"> <flow name="UsernameTokenSignedServiceFlow" doc:name="UsernameTokenSignedServiceFlow"> <http:inbound-endpoint address="http://localhost:63083/services/signed" exchange-pattern="request-response" doc:name="HTTP Inbound Endpoint"/> <cxf:jaxws-service servicedoc:name="Secure UsernameToken Signed service"> <cxf:ws-security> <cxf:ws-config> <cxf:property key="action" value="UsernameToken Signature Timestamp"/> <cxf:property key="signaturePropFile" value="wssecurity.properties"/> <cxf:property key="passwordCallbackClass" value="com.mulesoft.mule.soap.security.PasswordCallback"/> </cxf:ws-config> </cxf:ws-security> </cxf:jaxws-service> <component doc:name="Greeter Service"/> </flow> <flow name="UsernameTokenEncryptedServiceFlow" doc:name="UsernameTokenEncryptedServiceFlow"> <http:inbound-endpoint address="http://localhost:63083/services/encrypted" exchange-pattern="request-response" doc:name="HTTP Inbound Endpoint"/> <cxf:jaxws-service servicedoc:name="Secure UsernameToken Encrypted service"> <cxf:ws-security> <cxf:ws-config> <cxf:property key="action" value="UsernameToken Timestamp Encrypt"/> <cxf:property key="decryptionPropFile" value="wssecurity.properties"/> <cxf:property key="passwordCallbackClass" value="com.mulesoft.mule.soap.security.PasswordCallback"/> </cxf:ws-config> </cxf:ws-security> </cxf:jaxws-service> <component doc:name="Greeter Service"/> </flow> </mule>

?服务端测试:

import org.mule.api.MuleContext;import org.mule.api.MuleException;import org.mule.api.context.MuleContextFactory;import org.mule.config.spring.SpringXmlConfigurationBuilder;import org.mule.context.DefaultMuleContextFactory;public class MuleServerApp {  public static void main(String[] args) throws MuleException {  String configFile = "mule-config.xml";      System.setProperty("mule.verbose.exceptions","true");      String[] configFileArr = new String[] {configFile };      MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();      MuleContext muleContext = muleContextFactory              .createMuleContext(new SpringXmlConfigurationBuilder(configFileArr));      muleContext.start();   }}

?

?

客户端测试:

package com.mulesoft.mule.soap.test;import java.net.MalformedURLException;import java.net.URL;import java.util.HashMap;import java.util.Map;import javax.xml.namespace.QName;import javax.xml.ws.Service;import javax.xml.ws.soap.SOAPFaultException;import org.apache.cxf.endpoint.Client;import org.apache.cxf.frontend.ClientProxy;import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;import com.mulesoft.mule.soap.security.Greeter;import com.mulesoft.mule.soap.security.PasswordCallback;/** *  * <p>功能描述,该部分必须以中文句号结尾。<p> * * 创建日期 2013-8-27<br> * @author  $Author$<br> * @version $Revision$ $Date$ * @since   3.0.0 */public class MuleSecureClient{    public static void main(String[] args) throws Exception    {        try        {            Greeter  service = createService("http://localhost:63083/services/signed?wsdl",                getUsernameTokenProps("UsernameToken Signature Timestamp", "wssecurity.properties"));            System.out.println(service.greet("Mule"));                                    service = createService("http://localhost:63083/services/encrypted?wsdl",                    getUsernameTokenProps("UsernameToken Timestamp Encrypt", "wssecurity.properties"));            System.out.println(service.greet("Mule"));        }        catch (SOAPFaultException e)        {            System.out.println(e.getMessage());        }        }    protected static Map<String, Object> getUsernameTokenProps(String action, String propertiesFile)    {        Map<String, Object> wss4jProps = new HashMap<String, Object>();        wss4jProps.put("action", action);        wss4jProps.put("signaturePropFile", propertiesFile);        wss4jProps.put("encryptionPropFile", propertiesFile);        wss4jProps.put("user", "joe");        wss4jProps.put("encryptionUser", "joe");        wss4jProps.put("passwordCallbackClass", PasswordCallback.class.getName());        return wss4jProps;    }        public static Greeter createService(String url, Map<String, Object> wss4jProps)    {        URL wsdlDocumentLocation;        try        {            wsdlDocumentLocation = new URL(url);        }        catch (MalformedURLException e)        {            throw new RuntimeException("Invalid test definition", e);        }        QName serviceName = new QName("http://security.soap.mule.mulesoft.com/", "GreeterService");        Service dynService = Service.create(wsdlDocumentLocation, serviceName);        Greeter service = dynService.getPort(Greeter.class);        Client client = ClientProxy.getClient(service);        if (wss4jProps != null)        {            client.getOutInterceptors().add(new WSS4JOutInterceptor(wss4jProps));        }        return service;    }    }

?

热点排行