in axis2.xml check your declared phases e.g.
 <!-- ================================================= -->
   <!-- Phases  -->
   <!-- ================================================= -->
    <phaseOrder type="inflow">
        <!--  System pre defined phases       -->
        <phase name="TransportIn"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch"/>
        <phase name="PostDispatch"/>
        <!--  System pre defined phases       -->
        <!--   After Postdispatch phase module author or or service author can 
add any phase he want      -->
        <phase name="userphase1"/>
    </phaseOrder>
<!-- so if i referenced Security phase i would get org.apache.axis2.AxisFault 
because it isnt a declared phase -->

Martin 
______________________________________________ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
 
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger 
sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung 
oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem 
Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. 
Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung 
fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le 
destinataire prévu, nous te demandons avec bonté que pour satisfaire informez 
l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est 
interdite. Ce message sert à l'information seulement et n'aura pas n'importe 
quel effet légalement obligatoire. Étant donné que les email peuvent facilement 
être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité 
pour le contenu fourni.




Date: Sat, 4 Jun 2011 17:56:21 +0530
Subject: rampart security header in fault messages
From: [email protected]
To: [email protected]

Hi,



My client program is not able to process
the fault messages from the server.  The exception that I am getting
is,



org.apache.axis2.AxisFault:
Must Understand check failed for header 
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
: Security

       
at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:86)

       
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:138)

       
at 
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:336)

       
at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)

       
at 
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)

       
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)





As per the suggestion that I got after
googling, I modified the InFaultFlow section of module.xml inside the 
rampart-1.5.1.mar
like below





 <InFaultFlow>

        <handler
name="PolicyBasedSecurityInHandler" 
class="org.apache.rampart.handler.RampartReceiver">

           
<order phase="Security" phaseFirst="true"/>

        </handler>

        <handler
name="SecurityInHandler" class="org.apache.rampart.handler.WSDoAllReceiver">

           
<order phase="Security"/>

        </handler>

        <handler
name="PostDispatchVerificationHandler" 
class="org.apache.rampart.handler.PostDispatchVerificationHandler">

           
<order phase="Dispatch" phaseLast="true"/>

        </handler>

    </InFaultFlow>



But this didn't turned out to be success.
I checked the code of WSDoAllReceiver and found the following line,



 SOAPConstants soapConstants
= WSSecurityUtil.getSOAPConstants(doc

         
      .getDocumentElement());

 if
(WSSecurityUtil.findElement(doc.getDocumentElement(), "Fault",

         
      soapConstants.getEnvelopeURI()) != null)
{

         
   return;

 }



Does this mean that the Rampart engine
does not except the security header for SOAP messages?  



Please help me to resolve this issue

                                          

Reply via email to