使用MULE ESB中的certificate encodedValue验证SOAP服务

时间:2016-09-09 09:09:05

标签: java wcf wsdl mule x509certificate

我提供了wsdl,并且必须使用提供的身份验证凭据(用户名:test-Ser,密码:XXXX)访问某些服务(TestMessage)。 wsdl文件是从C#中的给定配置文件生成的。

private static TestClient AuthUser()
{
TestClient client = new TestClient();
client.ClientCredentials.UserName.UserName = “XXXX”;
client.ClientCredentials.UserName.Password = “XXXXX”;
return client;
}

using (TestClient test = AuthUser())
{
TestListRequestItemWrapper ttt = new TestListRequestItemWrapper();
ttt.RequestItems = new ListRequestItem[1];
ttt.RequestItems[0] = new ListRequestItem();
TestListResponseItemWrapper resp = test.TestList(ttt);


}

验证码在C#中,如下所示:

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" basePath="test" doc:name="HTTP Listener Configuration"/>
     <spring:beans>
        <spring:bean name="myPasswordCallback" class="com.org.message.PasswordCallback"/>
    </spring:beans>
    <spring:beans>
        <spring:bean  id="wss4jInConfiguration" name="Bean" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
       <spring:constructor-arg>
       <spring:map>
        <spring:entry key="action" value="UsernameToken "/>
         <spring:entry key="passwordType" value="PasswordText"/>
          <spring:entry key="user" value="vha-test.xml"/>
        <spring:entry key="passwordCallbackRef" value-ref="myPasswordCallback">

        </spring:entry>
       </spring:map>
       </spring:constructor-arg>
        </spring:bean>


    </spring:beans>
    <http:listener-config name="HTTP_Listener_Configuration_3" host="0.0.0.0" port="8083" doc:name="HTTP Listener Configuration"/>
    <ws:consumer-config name="Web_Service_Consumer" wsdlLocation="http://path.svc?wsdl" service="XService" port="XProxyEndpointSvcCertSpecified" serviceAddress="http://path.svc/SvcCertSpecified" doc:name="Web Service Consumer"/>
    <flow name="testdemoFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <custom-transformer class="com.org.message.GetMessageExample" doc:name="Java"/>
        <response>
            <object-to-string-transformer doc:name="Object to String"/>
        </response>
        <cxf:jaxws-client serviceClass="com.org.IXmlService" doc:name="CXF" operation="GetMessageList" port="IXmlService" soapVersion="1.2">
            <!--   <cxf:ws-security>
                <cxf:ws-config>
                   <cxf:property key="action" value="UsernameToken"/>
                    <cxf:property key="user" value="uname"/>
                    <cxf:property key="passwordCallbackClass" value="com.org.message.PasswordCallback"/>
                    <cxf:property key="passwordType" value="PasswordText"/>
                </cxf:ws-config>
            </cxf:ws-security>  -->



      <cxf:inInterceptors>
           <spring:bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
                    <spring:bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
                        <spring:constructor-arg>
                            <spring:map>
                                <spring:entry key="action" value="Signature" />
                                <spring:entry key="signaturePropFile" value="src/main/resources/ws-sign-security.properties" />
                            </spring:map>
                        </spring:constructor-arg>
                    </spring:bean>
            </cxf:inInterceptors>    
        </cxf:jaxws-client>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <message-properties-transformer doc:name="Message Properties">
            <add-message-property key="Content-type" value="application/soap+xml"/>
            <add-message-property key="charset" value="UTF-8"/>
        </message-properties-transformer>
        <http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8084" method="POST" doc:name="HTTP"/>

    </flow>

我必须在java中做同样的事情,而且我无法这样做。请帮忙。

如何在JAVA中使用证书编码值验证SOAP服务?

Mule ESB中的我的configuration.xml如下

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ws="http://www.mulesoft.org/schema/mule/ws" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="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
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ws http://www.mulesoft.org/schema/mule/ws/current/mule-ws.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" basePath="wsdl" doc:name="HTTP Listener Configuration"/>
    <ws:consumer-config name="Web_Service_Consumer" wsdlLocation="http://patyh.svc?wsdl" service="XService" port="XProxyEndpoint" serviceAddress="http://path.svc" doc:name="Web Service Consumer">
        <ws:security>
            <ws:wss-username-token username="uname" password="password" passwordType="TEXT" addCreated="true" addNonce="true"/>
            <ws:wss-timestamp expires="60000"/>
        </ws:security>
    </ws:consumer-config>
    <flow name="wsdltestFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <ws:consumer config-ref="Web_Service_Consumer" operation="PingWithAuthorization" doc:name="Web Service Consumer"/>
        <logger level="INFO" doc:name="Logger" message="req gen : #[payload]"/>
    </flow>
</mule>

及以下是我尝试过的另一个配置文件:

{{1}}

我仍然无法使用任何XMl

进行身份验证

0 个答案:

没有答案