Title: [WSS4J 1.5] WSDoAllReceiver: Request does not contain required Security header
I'm not quite sure - but to me it seems that you don't have the WSDoAllSender
in your Axis handler chain. In fact you create a SimpleTargtedChain for HTTPSender,
but I don't see any code that includes the WsDoAllSender into a handler chain.
 
Setting up handler chains is usually an Axis topic. Did you ever build the whole stuff
without dynamic handler setup first and using deployment files? Using dynamic handler
chains together with security is a somewhat complex topic.
 
Regards,
Werner
 


Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Gesendet: Dienstag, 27. Juni 2006 10:21
An: [email protected]
Betreff: [WSS4J 1.5] WSDoAllReceiver: Request does not contain required Security header

Hi all,

I've tried to send sign message to my server
With your help I've resolved a lot of problem but now I don't understand why It doesn't work

My server deploy.wsdd of the server is this:
<!-- Use this file to deploy some handlers/chains and services      -->
<!-- Two ways to do this:                                           -->
<!--   java org.apache.axis.client.AdminClient deploy.wsdd          -->
<!--      after the axis server is running                          -->
<!-- or                                                             -->
<!--   java org.apache.axis.utils.Admin client|server deploy.wsdd   -->
<!--      from the same directory that the Axis engine runs         -->

<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <!-- Services from PerformWSService WSDL service -->

  <service name="PerformWService" provider="java:RPC" style="rpc" use="encoded">
<requestFlow>
   <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
     <parameter name="action" value="Signature"/>
     <parameter name="signaturePropFile" value="cryptoReceiver.properties"/>
   </handler>
</requestFlow>
      <parameter name="wsdlTargetNamespace" value="urn:PerformWService"/>
      <parameter name="wsdlServiceElement" value="PerformWSService"/>
      <parameter name="wsdlServicePort" value="PerformWService"/>
      <parameter name="className" value="PerformWS.PerformWServiceSoapBindingSkeleton"/>
      <parameter name="wsdlPortType" value="PerformWS"/>
      <parameter name="typeMappingVersion" value="1.2"/>
      <parameter name="allowedMethods" value="*"/>
      <parameter name="scope" value="Session"/>
  </service>
</deployment>

my cryptoReceiver.properties is:
org.apache.ws.security.crypto.merlin.file=cacerts.jks
org.apache.ws.security.crypto.merlin.keystore.type=JKS
org.apache.ws.security.crypto.merlin.keystore.password=1234567890

Now the client have tha class that invoke the method:
ritorno="Nel try ";
                       
                        PerformWSSecServiceLocator l=new PerformWSSecServiceLocator(new MyEngineConfiguration());
                         ritorno=ritorno+"creato il locator ";
                         PerformWSSecuritySoapBindingStub stub =(PerformWSSecuritySoapBindingStub) l.getPerformWSSecurity();
                         ritorno=ritorno+"creato lo stub ";
                         ritorno=stub.outputStr(host,usr,pass,com);

MyEngineConfiguration is this:

public class MyEngineConfiguration extends SimpleProvider {
       
    public MyEngineConfiguration() {
        super();
 this.deployTransport("http", new SimpleTargetedChain(new org.apache.axis.transport.http.HTTPSender()));
       //parameters
        Hashtable<String, Object> opts = new Hashtable<String, Object>();
        opts.put(AxisEngine.PROP_DISABLE_PRETTY_XML, Boolean.TRUE);
        this.setGlobalOptions(opts);
       //requestFlow
       org.apache.ws.axis.security.WSDoAllSender w = new WSDoAllSender();
       w.setOption(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);
       w.setOption(WSHandlerConstants.USER, "167deb1fb811921fce0fe7890db0b9da93225867");
       w.setOption(WSHandlerConstants.PW_CALLBACK_CLASS,"PWCallback");
       w.setOption(WSHandlerConstants.SIG_PROP_FILE, "cryptoSender.properties");
       w.setOption(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
       w.setOption(WSHandlerConstants.MUST_UNDERSTAND, "false");
      
      
       this.setGlobalResponse(w);

    }

    @Override
    public void configureEngine(AxisEngine engine) throws
ConfigurationException {
        engine.refreshGlobalOptions();
    }
}

but when Run the main it return always this error:
WSDoAllReceiver: Request does not contain required Security header

I don't understan why!!!

Please help me

Thanks all
Hermann

Reply via email to