Exception : org.apache.axis2.AxisFault: <faultstring>Missing wsse:Security header in request</faultstring>

Tania Marinova <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <[email protected]>
Hello I keep on getting the following exception: 
 
 
 
org.apache.axis2.AxisFault: <faultstring>Missing wsse:Security header in request</faultstring>
 
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:536)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at axis2wstest.TestfnStub.testws(TestfnStub.java:198)
at axis2wstest.testwscl.main(testwscl.java:60)
 
 
 
Here is what I do:
  
  1. I created Dynamic Web Project- with name testfn
 
    2. I added two files:
         
     PWCBHANdler.java    (code is bellow)
          
        package axis2wstest;    
 
        import java.io.IOException;

        import javax.security.auth.callback.Callback;
        import javax.security.auth.callback.CallbackHandler;
        import javax.security.auth.callback.UnsupportedCallbackException;
        
import org.apache.ws.security.WSPasswordCallback;

 
         public class PWCBHandler implements CallbackHandler{
 
 
           public void handle(Callback[] callbacks)  throws  IOException, UnsupportedCallbackException 
           {
 for(int i = 0; i < callbacks.length;i++)
  
                 { 
WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
       
                   if (pwcb.getIdentifier().equals("test") && pwcb.getPassword().equals("pass")) 
  
                   {
   
                       return;
        
                   }
  
                 
                   else
  
                   {
    
                      throw new UnsupportedCallbackException(callbacks[i],"Incorrect login/password");
  
                   }
  
                 }
  
                }
              
}
 
   
 
      AND   testfn.java      (code is bellow) 
       
       public class testfn {
 
 public  int testws(int x)
 { 
  return 2*x;
 }
 
      }

       
    3. I click on my source file (testfn.java)-> New - Web Sercie;

    4. I downloaded rampart and copied all the jar files from lib directory of rampart distribution to testfn/WebContent/WEB- INF/lib directory.
    5. I changed the testfn/WEB_INF/services/testfn/META_INF/ services.xml (engaged rampart module:
and added policy:
 
<wsp:Policy wsu:Id="UsernameToken" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
      xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
       <wsp:Policy>
        <sp:TransportToken>
         <wsp:Policy>
           <sp:HttpToken RequireClientCertificate="false"/>
        </wsp:Policy>
     </sp:TransportToken>
    <sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</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%22/>
</wsp:Policy>
</sp:SupportingTokens>
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:passwordCallbackClass>axis2wstest.PWCBHandler</ramp:passwordCallbackClass>
</ramp:RampartConfig>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
 
 
   6. I ran my web service on my localhost
 
   7. Created web - service client
     and here is my testclint.java
 
public static void main(String[] args) throws RemoteException {
        ConfigurationContext ctx;
        ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("C:/Users/gismo2/workspace/testfnclient/WebContent/WEB-INF", null);
        TestfnStub stub = new TestfnStub(ctx);
        Testws cl = new Testws();
        cl.setX(5);
        ServiceClient client = stub._getServiceClient();
        client.engageModule("rampart");     
        Options o = client.getOptions();
        o.setPassword("pass");
        o.setUserName("test");
        System.setProperty("javax.net.ssl.trustStore", "/path/to/server.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", "password");
        TestwsResponse resp = stub.testws(cl);
        System.out.println("Response" + resp.get_return());
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.