Bonjour,
Je viens à vous car j'ai quelques difficultés à comprendre de quelle manière mettre en place un client Java qui consomme un web service avec authentification username / password.
Pour ce qui est de créer un client Java qui consomme mon WS, pas de soucis. Le problème survient lorsque coté serveur j'implémente une authentification username / password.
Voici ce que j'ai ajouté coté serveur dans le fichier de configuration 'erver-config.wsdd' :
1 2 3 4 5 6 7
|
<!-- Security Handler-->
<ns1:handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
<ns1:parameter name="passwordCallbackClass" value="org.xxx.xxx.xxx.security.ServicePasswordCallback" />
<ns1:parameter name="action" value="UsernameToken"/>
</ns1:handler>
</ns1:requestFlow> |
'org.xxx.xxx.xxx.security.ServicePasswordCallback' étant ma classe de vérification du username / password qui fait appel à un autre service pour l'authentification.
Coté client, voilà la manière dont je fais appel à mon service (sans username/password pour le moment) :
1 2 3 4 5
|
BocaServiceService service = new BocaServiceServiceLocator();
BocaServiceSoapBindingStub myPort = (BocaServiceSoapBindingStub)service.getBocaService();
Publication myPub = new Publication(140355);
ActionInfo myResponse = myPort.updatePublication(myPub); |
J'ai essayé plusieurs choses la semaine dernière comme fournir un user/mdp dont :
1 2 3
|
myPort.setUsername("xxxx");
myPort.setPassword("xxxx"); |
Mais ça ne fonctionne pas.
Mon question est donc : que faire pour envoyer un profil 'user/mdp' lors de l'envoi d'une requête ?
Je vous remercie d'avance pour votre aide.
ps: l'erreur obtenu est la même à chaque fois (erreur logique) :
WSDoAllReceiver: Request does not contain required Security header
Partager