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());

Reply via email to