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

Reply via email to