I would tackle it by copying how the WSS4JOutInterceptor gets the SAAJ Document + make sure this interceptor runs before the WSS4JOutInterceptor.
Colm. On Tue, Apr 15, 2014 at 6:07 PM, Hart, Andrew B. <[email protected]> wrote: > Wrt Matteo's message, I decided to revisit this as well, using the > abstract MessageChangeInterceptor at the stackoverflow link he included. > So, I have my interceptor constructor like this: > > public MessageChangeInterceptor() { > super(Phase.PRE_STREAM); > List<String> interceptors = new ArrayList<String>(); > > interceptors.add(org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor.class.getName()); > interceptors.add(SoapPreProtocolOutInterceptor.class.getName()); > //addBefore(SoapPreProtocolOutInterceptor.class.getName()); > addBefore(interceptors); > } > [...] > > It's being setup in the jboss-cxf.xml config file like this: > > <bean id="TestInterceptor" > class="com.akimeka.ws.common.interceptors.TestChangeInterceptor" /> > > <bean id="Sign_Response" > class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"> > <constructor-arg> > <map> > <entry key="action" value="Timestamp Signature Encrypt"/> > ... > <jaxws:inInterceptors> > <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/> > <ref bean="Sign_Request"/> > </jaxws:inInterceptors> > > > But, my problem is that I see the Soap message dumped out to my log, but > it is already encrypted. > > So, my question is, how can I set this interceptor up to allow me access > to the Soap envelope before this occurs... > > Again, using CXF 2.3.1 with JBoss 6. > > Regards, > > -- Andy > > > > > -----Original Message----- > From: Pampolini Matteo [mailto:[email protected]] > Sent: Tuesday, April 15, 2014 8:25 AM > To: [email protected] > Subject: Please help me with HTTP authentication/XML message modification > > Hello there, > > I'm developing an ONVIF client module that needs to make appropriate SOAP > requests to some remote devices. Usually these devices accept HTTP text or > digest authentication or both. > > Sometimes it happens that their date/time is not synchronized with the one > of the client PC, thus authentication fails. However, ONVIF devices provide > a method to retrieve their current date/time to calculate an offset and > then set the right time inside the SOAP request. > > The only way I found to achieve this is through an out interceptor that > takes the XML message and modifies the wsu:Created element accordingly. > Googling a lot I came to this link: > > > http://stackoverflow.com/questions/6915428/how-to-modify-the-raw-xml-message-of-an-outbound-cxf-request > > The problem is that adding this interceptor, I can modify the XML message, > but I see no packet transmitted over the wire. If I just comment out the > line: > > message.getInterceptorChain().doIntercept(message); > > the packet is transmitted, but my XML message to be modified is empty. > > Any ideas? I really don't know how to go further... > > Many thanks in advance, > > Matteo > > This email and any attachments are confidential to the intended recipient > and may also be privileged. If you are not the intended recipient please > delete it from your system and notify the sender. You should not copy it or > use it for any purpose nor disclose or distribute its contents to any other > person. > Questa e-mail e tutti i suoi allegati sono da intendersi inviati in via > riservata all'effettivo destinatario e possono essere soggetti a > restrizioni legali. Se non siete l'effettivo destinatario o avete ricevuto > il messaggio per errore siete pregati di cancellarlo dal vostro sistema e > di avvisare il mittente. E' vietata la duplicazione, l'uso a qualsiasi > titolo, la divulgazione o la distribuzione dei contenuti di questa e-mail a > qualunque altro soggetto. > > Prima di stampare questa comunicazione consideratene, per favore, > l'impatto ambientale Please consider the environment before printing this > email > -- Colm O hEigeartaigh Talend Community Coder http://coders.talend.com
