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).
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).
Ca y est !! 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 :
Le fichier .wsdd contient quant à lui (à placer dans le répertoire des "resources" du projet) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 EngineConfiguration config = new FileProvider("client.wsdd"); ServiceXXX service = new ServiceXXXLocator( config ); --> puis appeler le web service a partir du STUB
La classe ClientPasswordCallback contient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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"); } } } }
Salut spaw3003,
D'où vient ta classe WSPasswordCallback et comment est-elle implémentée ?
Merci de ta réponse,
boxsters
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager