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