J'ai essayé de le faire fonctionner en utilisant le CXF User Guide, mais je n'ai pas eu de chance. J'essaye d'appeler le service Web en utilisant le code java.Comment consommer un service Web protégé avec l'authentification de base HTTP à l'aide du framework CXF?
Répondre
Ceci est couvert par la spécification JAX-WS. Fondamentalement, définissez le nom d'utilisateur/mot de passe en tant que propriétés sur le contexte de la demande:
((BindingProvider)proxy).getRequestContext().put(
BindingProvider.USERNAME_PROPERTY, "joe");
((BindingProvider)proxy).getRequestContext().put(
BindingProvider.PASSWORD_PROPERTY, "pswd");
Le temps d'exécution les met dans l'en-tête HTTP.
Peut être utile de mentionner que vous avez juste besoin de cast le port CXF: BindingProvider portBP = (BindingProvider) port; portBP.getRequestContext(). Put (BindingProvider.USERNAME_PROPERTY, "nom d'utilisateur"); portBP.getRequestContext(). Put (BindingProvider.PASSWORD_PROPERTY, "mot de passe"); – Francois
Il y a une bien meilleure façon:
lors de la génération Java à partir WSDL, ajouter l'option "-exsh true":
wsdl2java de vrai -p edu.sharif.ce http://wsdl.ir/WebServices/WebService.asmx?WSDL
et ajouter UserCredential lors de l'utilisation:
UserCredentials user = new UserCredentials();
user.setUserid("user");
user.setPassword("pass");
ResearchWebService_Service service = new ResearchWebService_Service();
ResearchWebService port = service.getResearchWebService();
port.addNewProject(newProject, user);
Etes-vous sûr que cela activera l'authentification de base dans les en-têtes de requête HTTP? Cela définira probablement les informations d'identification dans le message SOAP au lieu de définir un en-tête HTTP Authorization ... (comme les docs disent que cela fonctionne sur les 'en-têtes de soap implicites') – Geert
Vous pouvez fournir votre propre authentificateur. De cette façon, cela fonctionnera si le WDSL lui-même est protégé par l'authentification HTTP de base.
@WebServiceRef(wsdlLocation = "https://laka/sito?wsdl")
static XxxService service;
public static void main(String[] args) {
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user", "password".toCharArray());
}
});
service = new XxxService();
Xxx port = service.getXxxPort();
// invoke webservice and print response
XxxResponse resp = port.foo();
System.out.println(resp.toString());
}
Notez que la méthode 'Authenticator.setDefault (Authenticator)' est statique et s'applique donc à tous vos fils. Cependant, il est assez facile de contourner cela en utilisant une variable ThreadLocal pour enregistrer différentes informations d'authentification par thread. – Marco
Je vois 'Authenticator.setDefault' est statique mais c'est aussi une méthode synchronisée. Est-ce vraiment nécessaire d'utiliser ThreadLocal? –
- 1. Déploiement d'un service Web CXF dans Spring Framework
- 2. Comment consommer un service Web protégé avec WS-Security en mono en utilisant C#?
- 3. comment consommer un service Web reste de SQL Server
- 4. Apache CXF: Comment sécuriser le service Web JAX-RS avec l'authentification de base
- 5. .NET consommer le service Web php
- 6. Comment consommer un service Web en Objective-C?
- 7. Visual Studio 2008: comment consommer ou appeler un service Web?
- 8. Consommer un service Web pensé un Active Directory
- 9. Consommer un service REST de WCF
- 10. Consommer le service web .Net de PHP - comment déboguer
- 11. Problème de service Web .NET Framework
- 12. Authentification NTLM à l'aide de stops wsdl2java CXF
- 13. Comment consommer un iis service hébergé WCF de asp.net2.0
- 14. Définition du code d'état de réponse HTTP à partir du service Web ASMX
- 15. Consommation du service Web .NET avec la bibliothèque Javascript Dojo
- 16. Comment appeler un service Web à partir d'un service Web
- 17. JBoss: Comment générer un service Web à partir d'un WSDL?
- 18. Service Web appelant nécessitant une authentification HTTP de base à partir d'un processus bpel
- 19. Appel du service Web .Net avec Php
- 20. Déploiement du service Web de référencement du service Web asp.net
- 21. Comment consommer le formatage JSON avec ActiveResource de ruby?
- 22. Comment ajouter un en-tête HTTP à un appel de service Web?
- 23. Comment publier du XML vers un service Web RESTFUL en utilisant Net :: HTTP :: Post?
- 24. Comment faire l'authentification dans un service HTTP?
- 25. Comment renvoyer un DataTable à partir du service Web .Net?
- 26. SQL Server - Utilisation de l'intégration CLR pour consommer un service Web
- 27. Comment accéder à un service Web avec des méthodes surchargées
- 28. Consommer un service Web généré par l'axe d'une solution VS2008 en C#
- 29. Comment consommer un service web json ou xml dans Rails ou Ruby?
- 30. services web CONSOMMER asp classique
Ce lien m'a aidé à résoudre le même problème http://www.brimllc.com/2011/04/apache-cxf-client-setting-http-request-header-for-basic-authentication/comment -page-1/# comment-4313 –