cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrei Shakirin <ashaki...@talend.com>
Subject RE: ws-policy with camel CXF
Date Sat, 12 Apr 2014 13:17:02 GMT
Hi,

I wonder how you apply the policy embedded in your WSDL.
IMO you spring configuration should have wsdlLocation or wsdlURL pointing to your wsdl on
classpath:

<bean id="securityFileTransferServiceProxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
             <property name="wsdlURL" value="classpath:wsdl/WSDL_NAME.wsdl"/>
...

Regards,
Andrei.

> -----Original Message-----
> From: Lopez, Scott [mailto:scott.lopez2@hp.com]
> Sent: Samstag, 12. April 2014 04:07
> To: users@cxf.apache.org
> Subject: ws-policy with camel CXF
> 
> What I'm doing seems like it should work, on the server side the policy is being
> read in and enforced because messages are being denied.  I'm trying to do a
> simple username/password to get started but the client does seem interested
> in reacting to the policy.  Messages are being sent across the queues
> successfully but they contain no username/password information, causing the
> receiving server to deny the request.
> 
> I have spent a good bit of time searching the internet so I wouldn't bother
> anyone, but I haven't been able to find the answer.  One thing I did notice is
> that the examples used jaxws:client for their policies to work.  I'm not sure
> that's an option since we are using JMS for the transport.
> 
> I've also debugged as much as I can and nothing obvious seems to stand out, it
> seems to enter the policy interceptor and then exit without doing any work.
> 
> Any help is greatly appreciated, thanks in advance.
> 
> CXF Version is 2.7.7 (included with JBoss Fuse)
> 
> Spring configuration file (for the web service):
> 
> ****************************************************************
> ********************************************
> 
> <!-- *** Sender service creator *** -->
>        <bean id="securityFileTransferServiceProxyFactory"
> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
>               <property name="serviceClass"
> 
> value="com.hp.usa.es.csg.filetransfer.SecurityFileTransferServicePortPortType"
> />
>               <property name="address"
>                      value="camel://direct:SecurityFileTransferServicePortPortType" />
>               <property name="username" value="admin"/>
>               <property name="password" value="admin"/>
>               <property name="outInterceptors">
>                      <list>
>                             <bean
> class="org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor"/>
>                      </list>
>               </property>
>        </bean>
> 
>        <bean id="securityFileTransferServiceClient"
> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"
>               factory-bean="securityFileTransferServiceProxyFactory" factory-
> method="create"
>               scope="prototype" />
> ****************************************************************
> ********************************************
> 
> I have tried removing the interceptor shown above and leaving it in.
> 
> I also have the following defined in the spring framework:
> 
> 
> ****************************************************************
> ********************************************
> 
> <cxf:bus>
>    <cxf:features>
>       <p:policies/>
>    </cxf:features>
> </cxf:bus>
> 
> 
> ****************************************************************
> ********************************************
> 
> My application is as follows:
> 
> 
> ****************************************************************
> ********************************************
> 
> SecurityFileTransferServicePortPortType serviceClient =
> (SecurityFileTransferServicePortPortType)applicationContext.getBean("security
> FileTransferServiceClient");
> 
> Send in = new Send();
> Send.Properties properties = new Send.Properties();
> in.setProperties(properties); <.. a bunch of code that doesn't matter ..>
> in.setData(sendData);
> 
> 
> ****************************************************************
> ********************************************
> 
> The WSDL looks like the following, I took the policy directly from the CXF policy
> example:
> 
> 
> ****************************************************************
> ********************************************
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="FileTransferServiceService"
> targetNamespace="http://soa.jboss.org/SecurityFileTransferServiceService"
> xmlns:ns1="http://com.hp.usa.csg.services.filetransfer.service/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:tns="http://soa.jboss.org/SecurityFileTransferServiceService"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
>   <wsdl:types>
> <xs:schema xmlns:tns="http://com.hp.usa.csg.services.filetransfer.service/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://com.hp.usa.csg.services.filetransfer.service/"
> version="1.0">
> 
>   <xs:import
> namespace="http://soa.jboss.org/SecurityFileTransferServiceService"/>
> 
>   <xs:element name="send" type="tns:send"/>
> 
>   <xs:complexType name="send">
>     <xs:sequence>
>       <xs:element name="properties">
>         <xs:complexType>
>           <xs:sequence>
>             <xs:element maxOccurs="unbounded" minOccurs="0" name="entry"
> nillable="true">
>               <xs:complexType>
>                 <xs:sequence>
>                   <xs:element minOccurs="0" name="key" type="xs:string"/>
>                   <xs:element minOccurs="0" name="value" type="xs:string"/>
>                 </xs:sequence>
>               </xs:complexType>
>             </xs:element>
>           </xs:sequence>
>         </xs:complexType>
>       </xs:element>
>       <xs:element minOccurs="0" name="data" type="xs:base64Binary"/>
>     </xs:sequence>
>   </xs:complexType>
> 
> </xs:schema>
>   </wsdl:types>
>   <wsdl:message name="SecurityFileTransferServicePortOp">
>     <wsdl:part name="in" element="ns1:send">
>     </wsdl:part>
>   </wsdl:message>
> 
> 
>   <wsdl:portType name="SecurityFileTransferServicePortPortType">
>     <wsdl:operation name="SecurityFileTransferServicePortOp">
>       <wsdl:input name="SecurityFileTransferServicePortOp"
> message="tns:SecurityFileTransferServicePortOp">
>     </wsdl:input>
>     </wsdl:operation>
>   </wsdl:portType>
> 
> 
>   <wsdl:binding name="FileTransferServiceServiceSoapBinding"
> type="tns:SecurityFileTransferServicePortPortType">
>     <wsp:PolicyReference
> xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
> URI="#UP_policy"/>
>     <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="SecurityFileTransferServicePortOp">
>       <soap:operation
> soapAction="http://soa.jboss.org/SecurityFileTransferServiceService/SecurityFil
> eTransferServicePortOp" style="document"/>
>       <wsdl:input name="SecurityFileTransferServicePortOp">
>         <soap:body use="literal"/>
>       </wsdl:input>
>     </wsdl:operation>
>   </wsdl:binding>
> 
> 
>   <wsdl:service name="FileTransferServiceService">
>     <wsdl:port name="SecurityFileTransferServicePortPortTypePort"
> binding="tns:FileTransferServiceServiceSoapBinding">
>       <soap:address
> location="https://localhost:8183/SecurityFileTransferServicePortPortTypePort"/
> >
>     </wsdl:port>
>   </wsdl:service>
> 
>      <wsp:Policy wsu:Id="UP_policy" xmlns:wsp="http://www.w3.org/ns/ws-
> policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
> wssecurity-utility-1.0.xsd">
>         <wsp:ExactlyOne>
>             <wsp:All>
>                 <sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-
> securitypolicy/200702">
>                     <wsp:Policy>
>                         <sp:TransportToken>
>                             <wsp:Policy>
>                                 <sp:HttpsToken>
>                                     <wsp:Policy/>
>                                 </sp:HttpsToken>
>                             </wsp:Policy>
>                         </sp:TransportToken>
>                         <sp:Layout>
>                             <wsp:Policy>
>                                 <sp:Strict />
>                             </wsp:Policy>
>                         </sp:Layout>
>                         <sp:IncludeTimestamp />
>                         <sp:AlgorithmSuite>
>                             <wsp:Policy>
>                                 <sp:Basic128 />
>                             </wsp:Policy>
>                         </sp:AlgorithmSuite>
>                     </wsp:Policy>
>                 </sp:TransportBinding>
>                 <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-
> securitypolicy/200702">
>                     <wsp:Policy>
>                         <sp:UsernameToken
>                             sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-
> securitypolicy/200702/IncludeToken/AlwaysToRecipient">
>                             <wsp:Policy>
>                                 <sp:WssUsernameToken11/>
>                             </wsp:Policy>
>                         </sp:UsernameToken>
>                     </wsp:Policy>
>                 </sp:SupportingTokens>
>             </wsp:All>
>         </wsp:ExactlyOne>
>     </wsp:Policy>
> </wsdl:definitions>
> 
> ****************************************************************
> ********************************************
> 


Mime
View raw message