Alla domanda, esiste un modo alternativo ma allo stesso tempo efficace per mettere in sicurezza un WebService che non sia la strada dei Certificati Lato Client?.
Si è possibile e la risposta è nella autentificazione di Windows. Uno dei più grandi errori che si commettono durante lo sviluppo di WS, è quella di pensare che si sta sviluppando qualcosa di "diverso", "particolare". Bene non è così.

Per proteggere un WebService è quindi possibile integrare la protezione di Windows.

Per fare questo è necessario impostare la modalità di autentificazione "Integrated Windows Security", questa voce si raggiunge dal menù proprietà di ogni singolo Virtual Server presente in Internet Information Services.

A questo punto sarà necessario scrivere pochissime righe di codice per permettere all'applicazione ad inviare intestazioni SOAP contenenti le credenziali di accesso al servizio.

Prima d'instanziare il proxy valoriziamo una serie di NetworkCredentials attraverso il namespace System.Net.Credential nel seguente modo

System.Net.NetworkCredential credenziali = new System.Net.NetworkCredential();
credenziali.UserName = "miausername";
credenziali.Password = "miapassword";
credenziali.Domain = "mioDominio";


Sarà ora necessario assegnare queste credenziali all'oggetto proxy.

localhost.Servizio webServ = new localhost.Servizio();
webServ.Credentials = credenziali;
// chiamare metodo

Cosa avviene dopo è semplice. Viene lanciato il comando SOAP aventi intestazioni comprensive di credenziali di autorizzazione.
Nel caso in cui le credenziali non siano valide o mancanti. L'applicazione riceverà una WebException così formattata

The request failed with HTTP status 401: Access Denied.