Condividi tramite


Protezione dei servizi Web XML creati tramite ASP.NET

Per decidere quale implementazione di protezione sia migliore per un servizio Web bisogna innanzitutto considerare i due principi di protezione fonadamentali: autenticazione e autorizzazione. L'autenticazione è un processo di convalida dell'identità sulla base di credenziali, ad esempio un nome utente e una password, effettuato da un'autorità. Una volta che l'identità è stata autenticata, il processo di autorizzazione consentirà di stabilire se l'identità è autorizzata ad accedere a una data risorsa.

I servizi Web creati utilizzando ASP.NET possono utilizzare le opzioni di sicurezza di autenticazione e autorizzazione offerte da ASP.NET oppure una protezione SOAP personalizzata. ASP.NET interagisce con Internet Information Services (IIS) per rendere disponibili varie opzioni di autenticazione e autorizzazione. È anche possibile creare opzioni di autenticazione personalizzate, ad esempio utilizzando intestazioni SOAP. Inoltre ASP.NET offre la possibilità, nota come rappresentazione, di eseguire una richiesta utilizzando le credenziali del client. Per ulteriori informazioni sull'utilizzo della rappresentazione, vedere Rappresentazione ASP.NET.

In questo argomento vengono riepilogate le opzioni di autenticazione e autorizzazione disponibili per i servizi Web generati tramite ASP.NET. Per ulteriori informazioni sulle opzioni di protezione in applicazioni ASP.NET Web, vedere Protezione di applicazioni Web ASP.NET e Building Secure ASP.NET Applications: Authentication, Authorization, and Secure CommunicationBuilding Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication (informazioni in lingua inglese).

Per ulteriori informazioni sull'accesso a risorse remote da applicazioni basate su ASP.NET, vedere gli argomenti "Impersonation/Delegation Model" and "Trusted Subsystem Model" nel capitolo 3 di Building Secure ASP.NET ApplicationsBuilding Secure ASP.NET Applications.

Opzioni di autenticazione per servizi Web XML

I servizi Web creati utilizzando ASP.NET hanno molte opzioni per l'autenticazione dei client, pertanto l'interrogativo da porsi è: qual è l'opzione più corretta per uno specifico servizio Web? Nello scegliere l'opzione di sicurezza giusta, una delle scelte che lo sviluppatore è costretto fare è tra livello di protezione e prestazioni. Per alcuni servizi Web, è fondamentale che le credenziali client siano inviate in rete in modo crittografato, pertanto è essenziale un algoritmo che crittografi le credenziali client. Ad esempio, uno sviluppatore che scrive un servizio Web che elabora carte di credito probabilmente si preoccupa più della possibilità di rubare le credenziali client che dell'overhead aggiuntivo derivante dalle necessità di crittografare i dati delle carte di credito.

Nella tabella seguente vengono riepilogate le opzioni di autenticazione disponibili per i servizi Web generati tramite ASP.NET. Le opzioni precedute da Windows fanno parte delle opzioni di autenticazione Microsoft Windows disponibili per i servizi Web creati utilizzando ASP.NET.

Riepilogo delle opzioni di autenticazione

Opzione di autenticazione Descrizione

Basate su Windows

Utilizzate per l'identificazione non sicura di client, poiché nome utente e password vengono inviati in stringhe codificate base 64 in testo semplice. In questo tipo di autenticazione password e nomi utente sono codificati, ma non crittografati. Un utente malintenzionato e determinato, dotato di uno strumento per il monitoraggio della rete può intercettare nomi utente e password.

Windows - basic e SSL

Utilizzate per l'identificazione sicura di client in Internet. Il nome utente e la password vengono inviati sulla rete utilizzando la crittografia Secure Sockets Layer (SSL), invece del testo semplice. Si tratta di un'opzione relativamente facile da configurare e funziona in uno scenario Internet. Tuttavia, l'utilizzo di SSL fa diminuire le prestazioni.

Windows - digest

Utilizzata per l'identificazione sicura di client in Internet. Utilizza l'hashing per trasmettere le credenziali client in modo crittografato, in questo modo la password non viene trasmessa come testo non crittografato. Inoltre, l'autenticazione digest può funzionare con server proxy. Tuttavia non è supportata in modo esteso su altre piattaforme.

Windows – Windows integrata

Utilizza NTLM o Kerberos. Utilizza un scambio crittografico con il browser Web Microsoft Internet Explorer dell'utente.

Windows – Certificati client

Utilizzata per l'identificazione sicura di client in scenari Internet e intranet. Richiede a ogni client di ottenere un certificato da un autorità di certificazione mutuamente attendibile. Facoltativamente viene eseguito il mapping dei certificati ad account utente, utilizzati da IIS per l'autorizzazione dell'accesso al servizio Web.

Form

Non supportate dai servizi Web. Si tratta di un sistema col quale richieste non autenticate vengono reindirizzate a un form HTML utilizzando un reindirizzamento verso client HTTP. La maggior parte dei client di servizi Web non vorranno fornire credenziali utilizzando una Interfaccia utente; è necessario occuparsi di questa questione se si desidera utilizzare l'autenticazione basata su form.

Intestazioni SOAP personalizzate

Utili per scenari Internet sicuri e non. Le credenziali dell'utente vengono passate all'interno dell'intestazione SOAP del messaggio SOAP. Il server Web, indipendentemente dalla piattaforma che ospita il servizio Web, fornisce un'implementazione di autenticazione personalizzata.

Per tutte le opzioni sopra elencate, salvo l'utilizzo di intestazioni SOAP, le impostazioni di protezione sono specificate utilizzando una combinazione di file di configurazione e IIS. Poiché la soluzione comporta sia autenticazione che autorizzazione, l'opzione delle intestazioni SOAP personalizzate viene descritta successivamente nella sezione Autorizzazione.

Autenticazione Windows

IIS e ASP.NET, forniscono supporto per l'autenticazione di applicazioni Web, inclusi i servizi Web, utilizzando la protezione incorporata in Windows. Windows fornisce tre opzioni per l'autenticazione: basic, digest e integrata. Inoltre, ogni opzione può essere utilizzata con SSL. Poiché tutte le opzioni di autenticazione di Windows tranne la basic crittografano i dati in un form, il livello ulteriore di crittografia offerto da SSL viene utilizzato in genere solo insieme a basic o certificati client.

Indipendentemente da quale opzione di autenticazione di Windows sia utilizzata, le procedure per la configurazione del servizio Web e del client di servizio Web sono simili. Per ulteriori informazioni, vedere Procedura: Configurare un servizio Web XML per l'autenticazione di Windows. Nessun codice ha bisogno di essere aggiunto a un servizio Web per utilizzare l'autenticazione di Windows, poiché le opzioni di autenticazione sono impostate in un file di configurazione e IIS. Il codice per passare le credenziali client al servizio Web deve essere aggiunto a un client di servizio Web.

Se SSL viene scelto come parte del meccanismo di autenticazione utilizzato da un servizio Web, deve essere configurato per l'applicazione Web che ospita il servizio Web o per il servizio Web stesso utilizzando IIS. La descrizione del servizio e, di conseguenza, le classi proxy generate dalla descrizione del servizio rifletteranno che il servizio Web utilizza SSL (se l'accesso alla descrizione del servizio e alla pagina della Guida del servizio viene effettuato utilizzando SSL). L'URL del servizio Web all'interno della descrizione del servizio dovrà essere preceduta da http. Per ulteriori informazioni su come impostare SSL, vedere la documentazione IIS.

Autenticazione con certificati client

La guida certificati client fornisce un meccanismo sicuro per l'autenticazione poiché i client sono necessari per inviare un documento elettronico, chiamato certificato client, che identifica un client utilizzando una connessione SSL al server Web. La connessione SSL crittografa le credenziali client contenute all'interno del certificato client nonappena vengono inviate sulla rete. La comunicazione tra il client e il server Web viene crittografata utilizzando una combinazione di chiavi crittografiche inviata dal client e chiavi fornite dal server Web. Una volta stabilita la comunicazione, solo i client e computer server possono comunicare l'uno con l'altro utilizzando quella connessione SSL.

Un certificato client può essere ottenuto da un autorità di certificazione che può essere il server Web stesso o un intermediario attendibile per client e server. Una volta che un certificato è stato ottenuto e il server Web è stato configurato per accettare certificati client, un client può inviare il certificato client al server Web su una connessione SSL, quando viene chiamato un servizio Web. Per ulteriori informazioni sui certificati client, vedere la documentazione IIS. Per ulteriori informazioni su come impostare l'autenticazione di certificati client per un servizio Web, vedere Procedura: Configurare un servizio Web XML per l'autenticazione di Windows.

Opzioni di autorizzazione per servizi Web XML

Lo scopo dell'autorizzazione è determinare se a un'identità deve essere concesso il tipo di accesso richiesto per una risorsa specificata. Ci sono due modi fondamentali per autorizzare l'accesso a una risorsa specificata: i file di autorizzazione e le autorizzazioni URL. I file di autorizzazione possono essere utilizzati ogni qualvolta viene utilizzata l'autenticazione di Windows, poiché le autorizzazioni sono impostate in IIS su una base file per file. L'autorizzazione URL può essere utilizzata con alcuni dei meccanismi di autenticazione incorporati supportati da ASP.NET. Nel caso dell'autorizzazione URL, la configurazione viene effettuata tramite un file di configurazione, in cui agli utenti può essere concesso o negato l'accesso in modo selettivo a qualsiasi file associato a ASP.NET, inclusi i file con estensione ASMX.

Per ulteriori informazioni sulla configurazione dell'autorizzazione file per file, vedere la documentazione IIS.

Per ulteriori informazioni sulla configurazione delle autorizzazione utilizzando un file di configurazione, vedere Autorizzazione ASP.NET.

Autenticazione personalizzata mediante intestazioni SOAP

I meccanismi di autenticazione di Windows, inclusi i certificati client, si basano sul trasporto HTTP, mentre SOAP è indipendente da trasporto. I servizi Web creati utilizzando ASP.NET utilizzano SOAP su HTTP, così come implementazioni HTTP-POST e HTTP-GET che restituiscono documenti XML non SOAP. Quindi, una ragione per creare un meccanismo di autenticazione personalizzato è di separare l'autenticazione dal trasporto. Ciò può essere fatto passando le credenziali di autenticazione nell'intestazione SOAP.

Le intestazioni SOAP sono un ottimo modo per passare fuori banda o passare informazioni non correlate alla semantica di un servizio Web. A differenza dell'elemento Body di un messaggio SOAP che include i parametri in e out per l'operazione del servizio Web elaborata dal metodo del ervizio Web, l'elemento Header è facoltativo e quindi può essere elaborato dall'infrastruttura. Ovvero, elaborato dall'infrastruttura sviluppata per fornire un meccanismo di autenticazione personalizzato.

Per una descrizione di uno metodo che utilizza intestazioni SOAP per l'autenticazione, vedere Procedura: Eseguire l'autenticazione personalizzata tramite le intestazioni SOAP.

Per utilizzare intestazioni SOAP per l'autenticazione un client di servizio Web invia le credenziali al servizio Web aggiungendo l'intestazione SOAP prevista alla richiesta SOAP e popolandola con le credenziali client. Per utilizzare l'autenticazione con intestazione SOAP un servizio Web deve fare due cose: specificare che preveda l'intestazione SOAP che contiene le credenziali di autenticazione e autorizzare l'accesso client al servizio Web.

Vedere anche

Attività

Procedura: Configurare un servizio Web XML per l'autenticazione di Windows
Procedura: Eseguire l'autenticazione personalizzata tramite le intestazioni SOAP

Riferimenti

NetworkCredential
CredentialCache
X509Certificate

Altre risorse

Protezione di applicazioni Web ASP.NET
Generazione di servizi Web XML mediante ASP.NET

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.