martedì 2 agosto 2011

Web Services & SSL

C# 2.0 & IIS 7.5

Si vuole richiamare da un’applicazione client un metodo di un servizio web in modalità SSL (Secure Socket Layer) ed inoltre si vogliono nascondere i parametri del suddetto web method.
Si dà per assunto l’installazione del certificato nel server.

1.       Richiamare un metodo web in modalità SSL da un’applicazione client :

// Viene istanziato l’oggetto che si riferisce al web service
            DocumentHistory d = new DocumentHistory();
 
NetworkCredential networkCredential = new NetworkCredential("ciccio", "pasticcio");
       d.Credentials = networkCredential;

       ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

       // Viene invocato il metodo richiesto
            object[] r = d.DepartmentReport("??", "??”, “!!”);

Da tenere presente quindi che se viene omessa la riga di codice evidenziata in giallo si verifica la seguente web exception:
 
“Connessione sottostante chiusa: Impossibile stabilire una relazione di trust per il canale sicuro SSL/TLS..”


2.  Per nascondere i parametri del metodo web si deve aggiungere il seguente elemento nel web.config del servizio web, all’interno dell’elemento <system.web>:

<system.web>
               <webServices>
              <protocols>
                <remove name="HttpPostLocalhost"/>
              </protocols>
            </webServices>
            </system.web>