Hello,
I'm using Tomcat 4.1.34 - Axis 1.4 - WSS4J 1.5.
I code my own security Signature Handler extends WSS4JHandler on the client
side :
public boolean handleRequest(MessageContext context) {
   Document doc = context.[...].getAsDocument();
   WSSecHeader secHeader = new WSSecHeader();
   secHeader.insertSecurityHeader(doc);

   WSSecSignature signature = new WSSecSignature();
   // set Signature configuration
   signature.prepare(doc, crypto, secHeader);
   ...
   signature.computeSignature();

   context.[...].setContent(dom2Source(doc));
   context.[...].saveChanges();
}

and i code my own security Verifying Signature extends WSS4JHandler on the
server side :
public boolean handleRequest(MessageContext context) {
  Document doc = context.[...].getAsDocument();

  WSSecurityEngine.getInstance().processSecurityHeader(doc, null, null,
crypto);
}

Here there is my client-config.wsdd (client side), it is on the source
directory (copied with the .class files)
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="AcquittementService"
           xmlns="http://xml.apache.org/axis/wsdd/";
           xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";>
<globalConfiguration>
 <parameter name="enableNamespacePrefixOptimization" value="false"/>
 <parameter name="mustUnderstandWSSHeader" value="true"/>
</globalConfiguration>
 <handler name="ClientSignatureHandler"
          type="java:org.apache.axis.handlers.JAXRPCHandler">
   <parameter name="scope" value="session"/>
   <parameter name="className" value="ClientSignatureHandler"/>
 </handler>
<transport name="http" pivot="java:
org.apache.axis.transport.http.HTTPSender">
<requestFlow>
           <handler type="ClientSignatureHandler"/>
       </requestFlow>
   <responseFlow>
           <handler type="ClientSignatureHandler"/>
   </responseFlow>
</transport>
<transport name="local" pivot="java:
org.apache.axis.transport.local.LocalSender"/>
<transport name="java" pivot="java:
org.apache.axis.transport.java.JavaSender"/>
</deployment>


Here, there is my serer-config.wsdd (server side) : it is on the WEB-INF
directory
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"; xmlns:java="
http://xml.apache.org/axis/wsdd/providers/java";>
<globalConfiguration>
 <parameter name="sendMultiRefs" value="true"/>
 <parameter name="disablePrettyXML" value="true"/>
 <parameter name="adminPassword" value="admin"/>
 <parameter name="attachments.Directory" value="D:\DEV_JAVA\apache-
tomcat-4.1.34\webapps\axis\WEB-INF\attachments"/>
 <parameter name="dotNetSoapEncFix" value="true"/>
 <parameter name="enableNamespacePrefixOptimization" value="false"/>
 <parameter name="sendXMLDeclaration" value="true"/>
 <parameter name="sendXsiTypes" value="true"/>
 <parameter name="attachments.implementation" value="
org.apache.axis.attachments.AttachmentsImpl"/>
 <parameter name="mustUnderstandWSSHeader" value="true"/>
 <parameter name="mustUnderstandMessageID" value="true"/>
</globalConfiguration>
<handler name="LocalResponder" type="java:
org.apache.axis.transport.local.LocalResponder"/>
<handler name="URLMapper" type="java:
org.apache.axis.handlers.http.URLMapper"/>
<handler name="Authenticate" type="java:
org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler name="ServerHandler" type="java:
org.apache.axis.handlers.JAXRPCHandler">
   <parameter name="scope" value="session"/>
   <parameter name="className" value="ServerHandler"/>
   <parameter name="mustUnderstandWSSHeader" value="true"/>
   <parameter name="mustUnderstandMessageID" value="true"/>
</handler>
<service name="AcquittementService" provider="java:RPC">
 <parameter name="allowedMethods" value="*"/>
 <parameter name="className" value="
fr.laposte.rgp.acquitsi.controleur.AcquittementService"/>
</service>
<transport name="http">
 <requestFlow>
  <handler type="URLMapper"/>
  <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
  <handler type="ServerHandler"/>
 </requestFlow>
 <parameter name="qs:list" value="
org.apache.axis.transport.http.QSListHandler"/>
 <parameter name="qs:wsdl" value="
org.apache.axis.transport.http.QSWSDLHandler"/>
 <parameter name="qs.list" value="
org.apache.axis.transport.http.QSListHandler"/>
 <parameter name="qs.method" value="
org.apache.axis.transport.http.QSMethodHandler"/>
 <parameter name="qs:method" value="
org.apache.axis.transport.http.QSMethodHandler"/>
 <parameter name="qs.wsdl" value="
org.apache.axis.transport.http.QSWSDLHandler"/>
</transport>
<transport name="local">
 <responseFlow>
  <handler type="LocalResponder"/>
 </responseFlow>
</transport>
</deployment>

the stacktrace of the exception is :
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}MustUnderstand
faultSubcode:
faultString: Did not understand &quot;MustUnderstand&quot; header(s):{
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security
faultActor:
faultNode:
faultDetail:
   {http://xml.apache.org/axis/}stackTrace:
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(
MustUnderstandChecker.java:96)
   at org.apache.axis.strategies.InvocationStrategy.visit(
InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java
:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java
:699)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
   at org.apache.axis.transport.http.AxisServletBase.service(
AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:198)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:144)
   at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:209)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:138)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.catalina.core.StandardContext.invoke(StandardContext.java
:2459)
   at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:132)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.valves.ErrorDispatcherValve.invoke(
ErrorDispatcherValve.java:118)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:593)
   at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:116)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:593)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:126)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java
:152)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
   at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
   at java.lang.Thread.run(Thread.java:534)

   {http://xml.apache.org/axis/}hostname:XP0487

Did not understand "MustUnderstand" header(s):{
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(
MustUnderstandChecker.java:96)
   at org.apache.axis.strategies.InvocationStrategy.visit(
InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java
:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java
:699)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
   at org.apache.axis.transport.http.AxisServletBase.service(
AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:198)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:144)
   at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:209)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:138)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.catalina.core.StandardContext.invoke(StandardContext.java
:2459)
   at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:132)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.valves.ErrorDispatcherValve.invoke(
ErrorDispatcherValve.java:118)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:593)
   at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:116)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:593)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:126)
   at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext
(StandardPipeline.java:595)
   at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:432)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
   at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java
:152)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
   at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
   at java.lang.Thread.run(Thread.java:534)

This exception occurs after the Server's side handler, just before going
into my webservice.

Thanks for your help
Matthieu

Reply via email to