Web Service Client with Java Application and SSL

I am developing a Java desktop application and I want to use a web service in it. The web service requires a two-way SSL connection with message-level security using a binarysecuritytoken . I am using NetBeans IDE 6.9.1 with JDK 1.6.0.23 and JAX-WS as a ws shell. How can I communicate with ws without using any web server on the client machine. Most of the material I read should have tomcat or some other web server on the client machine (setting up key storage in tomcat or so ...). Can this be done? Please suggest an article for the ws SSL client for the Java desktop application.

+4
source share
2 answers

Here are two ways to work with WS over SSL http://ws.apache.org/xmlrpc/ssl.html .
The right way is to configure and use a keystore for SE and EE solutions.
The following quick fix also works for me:

 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()); } } 
+4
source

Using Web Services in JavaSE - see NetBeans Tutorial

Use BindingProvider to set its properties before calling the service. See BindingProvider here

+3
source

Source: https://habr.com/ru/post/1232974/


All Articles