Web Service - Axis - Comment faire
	
	
		Bonjour,
  J'aimerais savoir si quelqu'un a déjà fait un appel a web service sécurisé par ws-security avec les classes générées par Axis (a partir du WSDL).
	 
	
	
	
		Web Service - Axis - Réponse
	
	
		Ca y est !! :mrgreen: après avoir bien galéré, j'ai trouvé la solution. Je la post ici, au cas où ça pourrait aider une autre personne :
En fait pour permettre de renseigner un login/mdp dans le header du messahe soap, et ce à partir des classes générées par Axis, on doit créer un fichier .wsdd, et appeler le code suivant : 
	Code:
	
| 12
 3
 4
 5
 
 |  
EngineConfiguration config = new FileProvider("client.wsdd");
ServiceXXX service = new ServiceXXXLocator( config );
 
--> puis appeler le web service a partir du STUB | 
 Le fichier .wsdd contient quant à lui (à placer dans le répertoire des "resources" du projet) :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | 
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
  <globalConfiguration >
   <requestFlow >
    <handler type="java:org.apache.ws.axis.security.WSDoAllSender" >
     <parameter name="action" value="UsernameToken"/>
     <parameter name="user" value="login"/>
     <parameter name="passwordCallbackClass" value="org.***.****.****.ClientPasswordCallback"/>
     <parameter name="passwordType" value="PasswordDigest"/>
    </handler>
   </requestFlow >
  </globalConfiguration >
</deployment> | 
 La classe ClientPasswordCallback contient :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 
 | 
public class ClientSurfiPasswordCallback implements CallbackHandler {
/**
 * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
 */
    public void handle(Callback[] callbacks) throws IOException,
                    UnsupportedCallbackException {
        for (int i = 0; i < callbacks.length; i++) {
            if (callbacks[i] instanceof WSPasswordCallback) {
                WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
                // set the password given a username
                if ("login".equals(pc.getIdentifer())) {
                    pc.setPassword("motDePasse");
                }
            } else {
                throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
            }
        }
    }
} |