You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Michael Beardsley <mb...@soundevelopment.com> on 2016/06/15 17:06:09 UTC

Struggling with WS-Policy HTTP Basic Authentication

I am trying to get a simple SOAP client working based off a WSDL that has various policies defined.

- I do not own the service and have no way to modify it.
- Spring is not involved in anyway and will not be.
- Using jaxws-maven-plugin to generate the proxy code. Version 2.4.1
- Using version 3.1.6 of CXF
- Including the following dependencies: cxf-rt-rs-client, cxf-rt-security, cxf-rt-ws-policy, cxf-rt-ws-security, cxf-rt-frontend-jaxws, cxf-rt-features-logging

(The JAX-RS client dependency is included because this app will call a REST service after getting a response from the SOAP service. The JAX-RS stuff is working fine).

The SOAP message generated by CXF appears to be properly formed. I can successfully send the exact same message to the service endpoint using cURL and get the expected response. I can see in the logging that CXF is receiving the same response as cURL, but then blowing up on:

org.apache.cxf.ws.policy.PolicyVerificationInInterceptor handle SEVERE: Inbound policy verification failed: These policy alternatives can not be satisfied:
org.apache.cxf.ws.policy.PolicyException: These policy alternatives can not be satisfied: {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}HttpBasicAuthentication

The response from the SOAP service does not include the Authorization header. Is that why this is happening? Why does CXF care about authentication on the inbound message? My client doesn’t have or require authentication… the service does.

Stepping through in the debugger shows that the AssertionInfoMap has ServiceModelPolicyProvider and Wsdl11AttachmentPolicyProvider instances available, but nothing referring to HTTP Basic Auth. Am I missing a dependency?

Here is my client code

public static void main(String[] args) {
	// Get a proxy for the SOAP endpoint. This is generated from their WSDL file as part of the Maven build.
	Zcustomer1 soap = new Zcustomer1();
	ZUDSCUSTOMER1 port = soap.getZcustomer1();
	
	LoggingInInterceptor logInbound = new LoggingInInterceptor();
	logInbound.setPrettyLogging(true);
	LoggingOutInterceptor logOutbound = new LoggingOutInterceptor();
	logOutbound.setPrettyLogging(true);
	
	Client cxf = ClientProxy.getClient(port);
	cxf.getInInterceptors().add(logInbound);
	cxf.getOutInterceptors().add(logOutbound);
	
	// The SOAP service uses HTTP Basic Authentication
	Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext();
	requestContext.put(BindingProvider.USERNAME_PROPERTY, "username");
	requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
	
	// Invoke the SOAP service
	String iKUNNR = "foo";
	KNA1 response = port.zudsCUSTOMER1(iKUNNR);
}


Here is the WSDL

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions targetNamespace="urn:sap-com:document:sap:rfc:functions" 
				  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
				  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
				  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
				  xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
				  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
				  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
				  xmlns:tns="urn:sap-com:document:sap:rfc:functions" 
				  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
				  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

	<wsp:UsingPolicy wsdl:required="true"/>
	<wsp:Policy wsu:Id="BN__zcustomer1">
		<wsp:ExactlyOne>
			<wsp:All>
				<wsp:All xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
					<sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
						<wsp:Policy>
							<sp:TransportToken>
								<wsp:Policy>
									<wsp:Policy>
										<sp:HttpBasicAuthentication/>
									</wsp:Policy>
								</wsp:Policy>
							</sp:TransportToken>
							<sp:AlgorithmSuite>
								<wsp:Policy>
									<sp:Basic128Rsa15/>
								</wsp:Policy>
							</sp:AlgorithmSuite>
							<sp:Layout>
								<wsp:Policy>
									<sp:Strict/>
								</wsp:Policy>
							</sp:Layout>
						</wsp:Policy>
					</sp:TransportBinding>
				</wsp:All>
			</wsp:All>
		</wsp:ExactlyOne>
	</wsp:Policy>
	<wsdl:types>
		<xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:rfc:functions">
			<xsd:simpleType name="char10">
				<xsd:restriction base="xsd:string">
					<xsd:maxLength value="10"/>
				</xsd:restriction>
			</xsd:simpleType>
			<xsd:complexType name="KNA1">
				<xsd:sequence>
					<xsd:element name="KUNNR" type="tns:char10"/>
				</xsd:sequence>
			</xsd:complexType>
			<xsd:element name="ZUDS_CUSTOMER1">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="I_KUNNR" type="tns:char10"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="ZUDS_CUSTOMER1Response">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="O_KNA1" type="tns:KNA1"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="ZUDS_CUSTOMER1">
		<wsdl:part name="parameters" element="tns:ZUDS_CUSTOMER1"/>
	</wsdl:message>
	<wsdl:message name="ZUDS_CUSTOMER1Response">
		<wsdl:part name="parameter" element="tns:ZUDS_CUSTOMER1Response"/>
	</wsdl:message>
	<wsdl:portType name="ZUDS_CUSTOMER1">
		<wsdl:operation name="ZUDS_CUSTOMER1">
			<wsdl:input message="tns:ZUDS_CUSTOMER1"/>
			<wsdl:output message="tns:ZUDS_CUSTOMER1Response"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="zcustomer1" type="tns:ZUDS_CUSTOMER1">
		<wsp:Policy>
			<wsp:PolicyReference URI="#BN__zcustomer1"/>
		</wsp:Policy>
		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
		<wsdl:operation name="ZUDS_CUSTOMER1">
			<soap:operation soapAction="urn:sap-com:document:sap:rfc:functions:ZUDS_CUSTOMER1:ZUDS_CUSTOMER1Request" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="zcustomer1">
		<wsdl:port name="zcustomer1" binding="tns:zcustomer1">
			<soap:address location="http://0.0.0.0/zcustomer1"/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>




Re: Struggling with WS-Policy HTTP Basic Authentication

Posted by Michael Beardsley <mb...@soundevelopment.com>.
Ah! Thank you. Yes, the HttpsToken tags were in the WSDL but we were getting errors from the server (don’t think they have SSL properly set up on the server), so we removed the HttpsToken tags in an effort to get around that.

I will take this back to the owner of the service.

Thanks,
Michael

On Jun 16, 2016, at 9:03 AM, Colm O hEigeartaigh <co...@apache.org> wrote:

> Hi Michael,
> 
> The problem is that the security policy of the service does not conform to
> the spec:
> 
> <sp:TransportToken>
>     <wsp:Policy>
>           <wsp:Policy>
>                 <sp:HttpBasicAuthentication/>
>           </wsp:Policy>
>     </wsp:Policy>
> </sp:TransportToken>
> 
> There should be a "HttpsToken" policy wrapping "HttpBasicAuthentication".
> See here for an example:
> 
> https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob;f=systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/https/basic-auth-policy.xml;h=f36e46702aa0fa7330694c9069d3b67d40aff02b;hb=HEAD
> 
> Colm.
> 
> On Wed, Jun 15, 2016 at 6:06 PM, Michael Beardsley <
> mbeards@soundevelopment.com> wrote:
> 
>> I am trying to get a simple SOAP client working based off a WSDL that has
>> various policies defined.
>> 
>> - I do not own the service and have no way to modify it.
>> - Spring is not involved in anyway and will not be.
>> - Using jaxws-maven-plugin to generate the proxy code. Version 2.4.1
>> - Using version 3.1.6 of CXF
>> - Including the following dependencies: cxf-rt-rs-client, cxf-rt-security,
>> cxf-rt-ws-policy, cxf-rt-ws-security, cxf-rt-frontend-jaxws,
>> cxf-rt-features-logging
>> 
>> (The JAX-RS client dependency is included because this app will call a
>> REST service after getting a response from the SOAP service. The JAX-RS
>> stuff is working fine).
>> 
>> The SOAP message generated by CXF appears to be properly formed. I can
>> successfully send the exact same message to the service endpoint using cURL
>> and get the expected response. I can see in the logging that CXF is
>> receiving the same response as cURL, but then blowing up on:
>> 
>> org.apache.cxf.ws.policy.PolicyVerificationInInterceptor handle SEVERE:
>> Inbound policy verification failed: These policy alternatives can not be
>> satisfied:
>> org.apache.cxf.ws.policy.PolicyException: These policy alternatives can
>> not be satisfied: {
>> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}HttpBasicAuthentication
>> 
>> The response from the SOAP service does not include the Authorization
>> header. Is that why this is happening? Why does CXF care about
>> authentication on the inbound message? My client doesn’t have or require
>> authentication… the service does.
>> 
>> Stepping through in the debugger shows that the AssertionInfoMap has
>> ServiceModelPolicyProvider and Wsdl11AttachmentPolicyProvider instances
>> available, but nothing referring to HTTP Basic Auth. Am I missing a
>> dependency?
>> 
>> Here is my client code
>> 
>> public static void main(String[] args) {
>>        // Get a proxy for the SOAP endpoint. This is generated from their
>> WSDL file as part of the Maven build.
>>        Zcustomer1 soap = new Zcustomer1();
>>        ZUDSCUSTOMER1 port = soap.getZcustomer1();
>> 
>>        LoggingInInterceptor logInbound = new LoggingInInterceptor();
>>        logInbound.setPrettyLogging(true);
>>        LoggingOutInterceptor logOutbound = new LoggingOutInterceptor();
>>        logOutbound.setPrettyLogging(true);
>> 
>>        Client cxf = ClientProxy.getClient(port);
>>        cxf.getInInterceptors().add(logInbound);
>>        cxf.getOutInterceptors().add(logOutbound);
>> 
>>        // The SOAP service uses HTTP Basic Authentication
>>        Map<String, Object> requestContext = ((BindingProvider)
>> port).getRequestContext();
>>        requestContext.put(BindingProvider.USERNAME_PROPERTY, "username");
>>        requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
>> 
>>        // Invoke the SOAP service
>>        String iKUNNR = "foo";
>>        KNA1 response = port.zudsCUSTOMER1(iKUNNR);
>> }
>> 
>> 
>> Here is the WSDL
>> 
>> <?xml version="1.0" encoding="utf-8"?>
>> <wsdl:definitions targetNamespace="urn:sap-com:document:sap:rfc:functions"
>>                                  xmlns:wsdl="
>> http://schemas.xmlsoap.org/wsdl/"
>>                                  xmlns:xsd="
>> http://www.w3.org/2001/XMLSchema"
>>                                  xmlns:soap="
>> http://schemas.xmlsoap.org/wsdl/soap/"
>>                                  xmlns:wsoap12="
>> http://schemas.xmlsoap.org/wsdl/soap12/"
>>                                  xmlns:http="
>> http://schemas.xmlsoap.org/wsdl/http/"
>>                                  xmlns:mime="
>> http://schemas.xmlsoap.org/wsdl/mime/"
>> 
>> xmlns:tns="urn:sap-com:document:sap:rfc:functions"
>>                                  xmlns:wsp="
>> http://schemas.xmlsoap.org/ws/2004/09/policy"
>>                                  xmlns:wsu="
>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
>> ">
>> 
>>        <wsp:UsingPolicy wsdl:required="true"/>
>>        <wsp:Policy wsu:Id="BN__zcustomer1">
>>                <wsp:ExactlyOne>
>>                        <wsp:All>
>>                                <wsp:All xmlns:wsp="
>> http://schemas.xmlsoap.org/ws/2004/09/policy">
>>                                        <sp:TransportBinding xmlns:sp="
>> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
>>                                                <wsp:Policy>
>>                                                        <sp:TransportToken>
>> 
>> <wsp:Policy>
>> 
>> <wsp:Policy>
>> 
>>      <sp:HttpBasicAuthentication/>
>> 
>> </wsp:Policy>
>> 
>> </wsp:Policy>
>> 
>> </sp:TransportToken>
>>                                                        <sp:AlgorithmSuite>
>> 
>> <wsp:Policy>
>> 
>> <sp:Basic128Rsa15/>
>> 
>> </wsp:Policy>
>> 
>> </sp:AlgorithmSuite>
>>                                                        <sp:Layout>
>> 
>> <wsp:Policy>
>> 
>> <sp:Strict/>
>> 
>> </wsp:Policy>
>>                                                        </sp:Layout>
>>                                                </wsp:Policy>
>>                                        </sp:TransportBinding>
>>                                </wsp:All>
>>                        </wsp:All>
>>                </wsp:ExactlyOne>
>>        </wsp:Policy>
>>        <wsdl:types>
>>                <xsd:schema attributeFormDefault="qualified"
>> targetNamespace="urn:sap-com:document:sap:rfc:functions">
>>                        <xsd:simpleType name="char10">
>>                                <xsd:restriction base="xsd:string">
>>                                        <xsd:maxLength value="10"/>
>>                                </xsd:restriction>
>>                        </xsd:simpleType>
>>                        <xsd:complexType name="KNA1">
>>                                <xsd:sequence>
>>                                        <xsd:element name="KUNNR"
>> type="tns:char10"/>
>>                                </xsd:sequence>
>>                        </xsd:complexType>
>>                        <xsd:element name="ZUDS_CUSTOMER1">
>>                                <xsd:complexType>
>>                                        <xsd:sequence>
>>                                                <xsd:element
>> name="I_KUNNR" type="tns:char10"/>
>>                                        </xsd:sequence>
>>                                </xsd:complexType>
>>                        </xsd:element>
>>                        <xsd:element name="ZUDS_CUSTOMER1Response">
>>                                <xsd:complexType>
>>                                        <xsd:sequence>
>>                                                <xsd:element name="O_KNA1"
>> type="tns:KNA1"/>
>>                                        </xsd:sequence>
>>                                </xsd:complexType>
>>                        </xsd:element>
>>                </xsd:schema>
>>        </wsdl:types>
>>        <wsdl:message name="ZUDS_CUSTOMER1">
>>                <wsdl:part name="parameters" element="tns:ZUDS_CUSTOMER1"/>
>>        </wsdl:message>
>>        <wsdl:message name="ZUDS_CUSTOMER1Response">
>>                <wsdl:part name="parameter"
>> element="tns:ZUDS_CUSTOMER1Response"/>
>>        </wsdl:message>
>>        <wsdl:portType name="ZUDS_CUSTOMER1">
>>                <wsdl:operation name="ZUDS_CUSTOMER1">
>>                        <wsdl:input message="tns:ZUDS_CUSTOMER1"/>
>>                        <wsdl:output message="tns:ZUDS_CUSTOMER1Response"/>
>>                </wsdl:operation>
>>        </wsdl:portType>
>>        <wsdl:binding name="zcustomer1" type="tns:ZUDS_CUSTOMER1">
>>                <wsp:Policy>
>>                        <wsp:PolicyReference URI="#BN__zcustomer1"/>
>>                </wsp:Policy>
>>                <soap:binding transport="
>> http://schemas.xmlsoap.org/soap/http" style="document"/>
>>                <wsdl:operation name="ZUDS_CUSTOMER1">
>>                        <soap:operation
>> soapAction="urn:sap-com:document:sap:rfc:functions:ZUDS_CUSTOMER1:ZUDS_CUSTOMER1Request"
>> style="document"/>
>>                        <wsdl:input>
>>                                <soap:body use="literal"/>
>>                        </wsdl:input>
>>                        <wsdl:output>
>>                                <soap:body use="literal"/>
>>                        </wsdl:output>
>>                </wsdl:operation>
>>        </wsdl:binding>
>>        <wsdl:service name="zcustomer1">
>>                <wsdl:port name="zcustomer1" binding="tns:zcustomer1">
>>                        <soap:address location="http://0.0.0.0/zcustomer1
>> "/>
>>                </wsdl:port>
>>        </wsdl:service>
>> </wsdl:definitions>
>> 
>> 
>> 
>> 
> 
> 
> -- 
> Colm O hEigeartaigh
> 
> Talend Community Coder
> http://coders.talend.com


Re: Struggling with WS-Policy HTTP Basic Authentication

Posted by Colm O hEigeartaigh <co...@apache.org>.
Hi Michael,

The problem is that the security policy of the service does not conform to
the spec:

<sp:TransportToken>
     <wsp:Policy>
           <wsp:Policy>
                 <sp:HttpBasicAuthentication/>
           </wsp:Policy>
     </wsp:Policy>
 </sp:TransportToken>

There should be a "HttpsToken" policy wrapping "HttpBasicAuthentication".
See here for an example:

https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob;f=systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/https/basic-auth-policy.xml;h=f36e46702aa0fa7330694c9069d3b67d40aff02b;hb=HEAD

Colm.

On Wed, Jun 15, 2016 at 6:06 PM, Michael Beardsley <
mbeards@soundevelopment.com> wrote:

> I am trying to get a simple SOAP client working based off a WSDL that has
> various policies defined.
>
> - I do not own the service and have no way to modify it.
> - Spring is not involved in anyway and will not be.
> - Using jaxws-maven-plugin to generate the proxy code. Version 2.4.1
> - Using version 3.1.6 of CXF
> - Including the following dependencies: cxf-rt-rs-client, cxf-rt-security,
> cxf-rt-ws-policy, cxf-rt-ws-security, cxf-rt-frontend-jaxws,
> cxf-rt-features-logging
>
> (The JAX-RS client dependency is included because this app will call a
> REST service after getting a response from the SOAP service. The JAX-RS
> stuff is working fine).
>
> The SOAP message generated by CXF appears to be properly formed. I can
> successfully send the exact same message to the service endpoint using cURL
> and get the expected response. I can see in the logging that CXF is
> receiving the same response as cURL, but then blowing up on:
>
> org.apache.cxf.ws.policy.PolicyVerificationInInterceptor handle SEVERE:
> Inbound policy verification failed: These policy alternatives can not be
> satisfied:
> org.apache.cxf.ws.policy.PolicyException: These policy alternatives can
> not be satisfied: {
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}HttpBasicAuthentication
>
> The response from the SOAP service does not include the Authorization
> header. Is that why this is happening? Why does CXF care about
> authentication on the inbound message? My client doesn’t have or require
> authentication… the service does.
>
> Stepping through in the debugger shows that the AssertionInfoMap has
> ServiceModelPolicyProvider and Wsdl11AttachmentPolicyProvider instances
> available, but nothing referring to HTTP Basic Auth. Am I missing a
> dependency?
>
> Here is my client code
>
> public static void main(String[] args) {
>         // Get a proxy for the SOAP endpoint. This is generated from their
> WSDL file as part of the Maven build.
>         Zcustomer1 soap = new Zcustomer1();
>         ZUDSCUSTOMER1 port = soap.getZcustomer1();
>
>         LoggingInInterceptor logInbound = new LoggingInInterceptor();
>         logInbound.setPrettyLogging(true);
>         LoggingOutInterceptor logOutbound = new LoggingOutInterceptor();
>         logOutbound.setPrettyLogging(true);
>
>         Client cxf = ClientProxy.getClient(port);
>         cxf.getInInterceptors().add(logInbound);
>         cxf.getOutInterceptors().add(logOutbound);
>
>         // The SOAP service uses HTTP Basic Authentication
>         Map<String, Object> requestContext = ((BindingProvider)
> port).getRequestContext();
>         requestContext.put(BindingProvider.USERNAME_PROPERTY, "username");
>         requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
>
>         // Invoke the SOAP service
>         String iKUNNR = "foo";
>         KNA1 response = port.zudsCUSTOMER1(iKUNNR);
> }
>
>
> Here is the WSDL
>
> <?xml version="1.0" encoding="utf-8"?>
> <wsdl:definitions targetNamespace="urn:sap-com:document:sap:rfc:functions"
>                                   xmlns:wsdl="
> http://schemas.xmlsoap.org/wsdl/"
>                                   xmlns:xsd="
> http://www.w3.org/2001/XMLSchema"
>                                   xmlns:soap="
> http://schemas.xmlsoap.org/wsdl/soap/"
>                                   xmlns:wsoap12="
> http://schemas.xmlsoap.org/wsdl/soap12/"
>                                   xmlns:http="
> http://schemas.xmlsoap.org/wsdl/http/"
>                                   xmlns:mime="
> http://schemas.xmlsoap.org/wsdl/mime/"
>
> xmlns:tns="urn:sap-com:document:sap:rfc:functions"
>                                   xmlns:wsp="
> http://schemas.xmlsoap.org/ws/2004/09/policy"
>                                   xmlns:wsu="
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
> ">
>
>         <wsp:UsingPolicy wsdl:required="true"/>
>         <wsp:Policy wsu:Id="BN__zcustomer1">
>                 <wsp:ExactlyOne>
>                         <wsp:All>
>                                 <wsp:All xmlns:wsp="
> http://schemas.xmlsoap.org/ws/2004/09/policy">
>                                         <sp:TransportBinding xmlns:sp="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
>                                                 <wsp:Policy>
>                                                         <sp:TransportToken>
>
> <wsp:Policy>
>
> <wsp:Policy>
>
>       <sp:HttpBasicAuthentication/>
>
> </wsp:Policy>
>
> </wsp:Policy>
>
> </sp:TransportToken>
>                                                         <sp:AlgorithmSuite>
>
> <wsp:Policy>
>
> <sp:Basic128Rsa15/>
>
> </wsp:Policy>
>
> </sp:AlgorithmSuite>
>                                                         <sp:Layout>
>
> <wsp:Policy>
>
> <sp:Strict/>
>
> </wsp:Policy>
>                                                         </sp:Layout>
>                                                 </wsp:Policy>
>                                         </sp:TransportBinding>
>                                 </wsp:All>
>                         </wsp:All>
>                 </wsp:ExactlyOne>
>         </wsp:Policy>
>         <wsdl:types>
>                 <xsd:schema attributeFormDefault="qualified"
> targetNamespace="urn:sap-com:document:sap:rfc:functions">
>                         <xsd:simpleType name="char10">
>                                 <xsd:restriction base="xsd:string">
>                                         <xsd:maxLength value="10"/>
>                                 </xsd:restriction>
>                         </xsd:simpleType>
>                         <xsd:complexType name="KNA1">
>                                 <xsd:sequence>
>                                         <xsd:element name="KUNNR"
> type="tns:char10"/>
>                                 </xsd:sequence>
>                         </xsd:complexType>
>                         <xsd:element name="ZUDS_CUSTOMER1">
>                                 <xsd:complexType>
>                                         <xsd:sequence>
>                                                 <xsd:element
> name="I_KUNNR" type="tns:char10"/>
>                                         </xsd:sequence>
>                                 </xsd:complexType>
>                         </xsd:element>
>                         <xsd:element name="ZUDS_CUSTOMER1Response">
>                                 <xsd:complexType>
>                                         <xsd:sequence>
>                                                 <xsd:element name="O_KNA1"
> type="tns:KNA1"/>
>                                         </xsd:sequence>
>                                 </xsd:complexType>
>                         </xsd:element>
>                 </xsd:schema>
>         </wsdl:types>
>         <wsdl:message name="ZUDS_CUSTOMER1">
>                 <wsdl:part name="parameters" element="tns:ZUDS_CUSTOMER1"/>
>         </wsdl:message>
>         <wsdl:message name="ZUDS_CUSTOMER1Response">
>                 <wsdl:part name="parameter"
> element="tns:ZUDS_CUSTOMER1Response"/>
>         </wsdl:message>
>         <wsdl:portType name="ZUDS_CUSTOMER1">
>                 <wsdl:operation name="ZUDS_CUSTOMER1">
>                         <wsdl:input message="tns:ZUDS_CUSTOMER1"/>
>                         <wsdl:output message="tns:ZUDS_CUSTOMER1Response"/>
>                 </wsdl:operation>
>         </wsdl:portType>
>         <wsdl:binding name="zcustomer1" type="tns:ZUDS_CUSTOMER1">
>                 <wsp:Policy>
>                         <wsp:PolicyReference URI="#BN__zcustomer1"/>
>                 </wsp:Policy>
>                 <soap:binding transport="
> http://schemas.xmlsoap.org/soap/http" style="document"/>
>                 <wsdl:operation name="ZUDS_CUSTOMER1">
>                         <soap:operation
> soapAction="urn:sap-com:document:sap:rfc:functions:ZUDS_CUSTOMER1:ZUDS_CUSTOMER1Request"
> style="document"/>
>                         <wsdl:input>
>                                 <soap:body use="literal"/>
>                         </wsdl:input>
>                         <wsdl:output>
>                                 <soap:body use="literal"/>
>                         </wsdl:output>
>                 </wsdl:operation>
>         </wsdl:binding>
>         <wsdl:service name="zcustomer1">
>                 <wsdl:port name="zcustomer1" binding="tns:zcustomer1">
>                         <soap:address location="http://0.0.0.0/zcustomer1
> "/>
>                 </wsdl:port>
>         </wsdl:service>
> </wsdl:definitions>
>
>
>
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com