Hi to all i tryed some examples to bring SOAP over HTTPS....
i had used Apache+ Mod_SSL + tomcat + apacheSOAP for the server side there are no problem bur a custo client (in java don't work) someone can help me ??
package https; import javax.security.cert.*; import javax.security.cert.X509Certificate; import com.sun.net.ssl.*; class MyX509TrustManager implements X509TrustManager { public boolean isClientTrusted (java.security.cert.X509Certificate[] chain){ return true;} public boolean isServerTrusted (java.security.cert.X509Certificate[] chain){ return true; } public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } }
package https; import java.net.URL; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; import java.security.KeyStore; import javax.security.cert.X509Certificate; import com.sun.net.ssl.*; import javax.net.ssl.*; import com.sun.net.ssl.*; import org.apache.soap.Constants; import org.apache.soap.Fault; import org.apache.soap.SOAPException; import org.apache.soap.rpc.Call; import org.apache.soap.rpc.Parameter; import org.apache.soap.rpc.Response; import javax.security.cert.X509Certificate; public class Test_SOAP_SSL { public void list(URL url,String user) throws SOAPException { System.out.println("Interrogazione Server SOAP at: "+url+" per "+user); // Costruisce la chiamata SOAP Call call = new Call( ); call.setTargetObjectURI("urn:IntesaBCI-Utenti"); //call.setMethodName("version"); //call.setMethodName("getInfo"); //call.setMethodName("getInfoMacro"); //call.setMethodName("marco"); call.setMethodName("getInfoExt"); //call.setMethodName("getGroups"); //call.setMethodName("getGroupsApache"); //call.setMethodName("getMacrStrDesc"); //metodo da richiamare //call.setMethodName("getUOG"); //metodo da richiamare //call.setMethodName("version"); //metodo da richiamare //call.setMethodName("getMacrStrDescExt"); //metodo da richiamare //call.setMethodName("getMacrStrDescExt"); //metodo da richiamare // inserisce i parametri Vector params = new Vector(); // inserisce il parametro userid //params.addElement(new Parameter("appID",String.class,"cn=Web Services, ou=Apps, dc=intesabci, dc=it",null)); //params.addElement(new Parameter("appPW",String.class,"webs",null)); params.addElement(new Parameter("appID",String.class,"cn=F6, ou=apps ,dc=intesabci, dc=it",null)); params.addElement(new Parameter("appPW",String.class,"password7",null)); //params.addElement(new Parameter("userID",String.class,"CR31443",null)); //params.addElement(new Parameter("userID",String.class,"CR32258",null)); //params.addElement(new Parameter("userID",String.class,"CR32763",null)); // params.addElement(new Parameter("userID",String.class,"BH00021",null)); //params.addElement(new Parameter("userID",String.class,"CR33218",null)); params.addElement(new Parameter("userID",String.class,"CR33343",null)); //params.addElement(new Parameter("macrID",String.class,"IS03110000",null)); //params.addElement(new Parameter("socID",String.class,"ISS",null)); //params.addElement(new Parameter("macrID",String.class,"BIC0696000",null)); //params.addElement(new Parameter("socID",String.class,"LBI",null)); call.setParams(params); call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); try{ System.out.println("-->"+url); // Effettua la chiamata Response response; System.out.println("Erasmo"); response = call.invoke(url, ""); System.out.println("Orgasmo"); if (!response.generatedFault( )) { Parameter returnValue = response.getReturnValue( ); System.out.println("-->"+returnValue); Hashtable catalog = (Hashtable)returnValue.getValue( ); Enumeration e = catalog.keys( ); while (e.hasMoreElements( )) { String key = (String)e.nextElement( ); String value = (String)catalog.get(key); System.out.println("Chiave: " + key + " valore: " + value); } } else { Fault fault = response.getFault( ); System.out.println("C'e' stato un errore: " + fault.getFaultString( )); } } catch (Exception e){ e.printStackTrace(); } } public static void main(String[] args) { if (args.length != 2) { System.out.println("Usage: java IntesaSOAP.Test_SOAP [SOAP server URL] [userid]"); return; } /* Gestisce la parte SSL */ try { java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.ssl.trustStore","cacert"); X509TrustManager tm = new MyX509TrustManager(); KeyManager []km = null; TrustManager []tma = {tm}; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(km,tma,new java.security.SecureRandom()); SSLSocketFactory sf1 = sc.getSocketFactory(); HttpsURLConnection.setDefaultSSLSocketFactory(sf1); // URL per connettersi al SOAP server URL url = new URL(args[0]); String user = args[1]; System.out.println("tira fuori..."); // Elenco delle chiavi e dei valori Test_SOAP_SSL lister = new Test_SOAP_SSL( ); lister.list(url,user); }catch (Exception e) { // e.printStackTrace( ); } } }