Je développe une application de bureau Java et je souhaite y utiliser un service Web. Le service Web requiert une connexion SSL bidirectionnelle avec une sécurité au niveau du message à l'aide de binarysecuritytoken
. J'utilise NetBeans IDE 6.9.1 avec JDK 1.6.0.23 et JAX-WS comme ws wrapper. Comment puis-je communiquer avec les ws sans utiliser de serveur Web sur la machine cliente? La plupart des choses que je lis doivent avoir tomcat ou un autre serveur web sur la machine cliente (en configurant le keystore dans tomcat ou autre ...). Est-il possible de faire? Veuillez suggérer un article pour le client WS basé sur SSL pour l'application de bureau Java.Client de service Web avec application Java et SSL
Répondre
services web CONSOMMER JavaSE - voir NetBeans tutorial
Utilisez BindingProvider
pour définir vos propriétés avant appeler le service. Voir l'exemple de l'utilisation BindingProvider
here
Comment connecter le SOAPHeader en utilisant la BindingProvidor ?? Je veux ajouter un SOAPHeader signé à la demande/au port généré par JAX-WS. Il existe des extensions de BindingProvidor telles que WSBindingProvider dans jaxws-rt mais il utilise également le conteneur J2EE. –
Lorsque le service Web publiera le WSDL, il y aura des descripteurs de sécurité. Vous utiliserez ensuite wsimport pour générer l'artefact côté client à partir du document WSDL, puis le configurerez de manière appropriée. Il y a un tutoriel simple (un peu daté mais les concepts sont tous là) ici (http://netbeans.org/kb/docs/websvc/wsit.html) en utilisant Netbeans. –
Ce que je mentionne ci-dessus est la sécurité au niveau du message. Si vous voulez juste sécuriser point à point avec SSL, alors voyez ceci http://www.java-tips.org/java-ee-tips/java-api-for-xml-web-services/using-jax -ws-based-web-services-wit.html –
Voici deux façons de traiter avec WS sur SSL http://ws.apache.org/xmlrpc/ssl.html.
Le bon moyen est de configurer et d'utiliser votre keystore pour les solutions SE et EE.
solution rapide suivante fonctionne aussi pour moi:
package client;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.xml.namespace.QName;
import ws.MyService1;
import ws.MyService1ServiceLocator;
public class Client {
public static void main(String[] args) throws Exception {
test();
}
public static void test() throws Exception {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
// Trust always
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
// Trust always
}
} };
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
// Create empty HostnameVerifier
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
// use secured service
QName qname = new QName("http://ws", "MyService1Service");
String url = "https://127.0.0.1:7002/MyService/wsdl/MyService1.wsdl";
MyService1 service = new MyService1ServiceLocator(url, qname).getMyService1();
System.out.println(service.getMessage());
}
}
Cette réponse pourrait être améliorée en fournissant quelques détails concernant ce que ws.Myservice1 et ws.MyService1ServiceLocator implémentent car il n'est pas immédiatement apparent à partir de la solution fournie. –
très utile merci –
- 1. Client de service Web Java:
- 2. Web Service Client Java
- 3. Question SSL java web application
- 4. comment construire un client de service Web via ssl
- 5. Microsoft Client - Java Web Service
- 6. Application client de service Web sur weblogic pour appeler le service Web
- 7. Client de service Web Bing (Java)
- 8. Java Web Service Client qui accède au service Web .Net
- 9. Client WCF appelant un service Web Java
- 10. Le client Java ne peut pas accéder au service Web en utilisant SSL sur HTTPS
- 11. Silverlight et SSL Client Certificates
- 12. Même client de service Web pour Java et .Net
- 13. Service Web Java avec Axis2 et Netbeans
- 14. clés SSL et auth client en Java
- 15. client Web pour service Web
- 16. Communication avec le service Web sur SSL
- 17. Client SOAP PHP pour Java Web Service
- 18. Socket SSL entre .Net et Java avec l'authentification du client
- 19. Problème d'établissement de liaison SSL dans le service Web avec Java et Tomcat
- 20. Mirth: appel d'un service Web SSL SOAP avec un certificat client
- 21. NetBeans: Comment créer un client de service Web qui consomme un service Metro protégé par SSL?
- 22. Appel d'un service Web WS-Security Java avec C# Client
- 23. Authentification client Java Sockets SSL
- 24. Service d'appel client Java au service Web Windows Integated Authentication
- 25. Problème de certificat SSL dans un proxy de service Web
- 26. application Web java appelant un client de service Web (en cxf)
- 27. Déploiement d'un service Web et d'un client de service Web sur différents ports de l'hôte local
- 28. Plusieurs sites Web avec une application SSL
- 29. Application client/serveur basée sur une socket Java SSL
- 30. Erreur lors de l'accès à un service Web avec SSL
En mots simples, je besoin d'une solution de J2SE pour consommer un service Web sécurisé SSL sans utiliser conteneur J2EE –