Limitazione dell'accesso a siti Web ASP.NET
Aggiornamento: novembre 2007
La limitazione dell'accesso a un'applicazione generalmente prevede due fasi: l'autenticazione, che indica il modo in cui un'applicazione identifica un utente, e l'autorizzazione, che indica il modo in cui un'applicazione identifica le autorizzazioni di cui dispone un utente. In questo argomento viene fornita una panoramica dell'autenticazione e dell'autorizzazione nelle applicazioni Web ASP.NET. Per ulteriori informazioni dettagliate, vedere Protezione delle applicazioni Web ASP.NET.
Autenticazione degli utenti
Le applicazioni ASP.NET offrono diverse opzioni per l'autenticazione degli utenti. Per le applicazioni di sola lettura che possono essere visualizzate da chiunque, utilizzare l'autenticazione anonima. Per un accesso all'applicazione più limitato, è necessario utilizzare una modalità di autenticazione che permetta l'identificazione degli utenti. Durante l'operazione di autenticazione degli utenti per l'applicazione ASP.NET è necessario considerare due identità, ovvero l'identità dell'applicazione che viene utilizzata per accedere alle risorse Windows e l'identità dell'utente ASP.NET che viene utilizzata per l'identificazione di un utente in ASP.NET.
L'applicazione può essere eseguita senza un'identità dell'utente ASP.NET, ma non senza un'identità dell'applicazione Windows. Per una maggiore protezione dell'applicazione, limitare l'identità Windows per l'applicazione alle risorse necessarie, ad esempio all'accesso di file e database.
Identità dell'applicazione ASP.NET
Durante l'esecuzione di una pagina ASP.NET, il server deve disporre di un contesto di protezione, o identità, per il processo che esegue il codice ASP.NET. Tale identità viene utilizzata quando si proteggono le risorse tramite la protezione integrata di Windows, ad esempio file protetti tramite il file system NTFS o le risorse di rete.
Ad esempio, i file che contengono il codice dell'applicazione memorizzati nella sottodirectory App_Code di un'applicazione devono essere solo letti dall'identità dell'applicazione ASP.NET. Di conseguenza, le impostazioni di protezione per i file nella directory App_Code possono essere limitate in modo che l'identità dell'applicazione ASP.NET disponga solo dell'accesso in lettura. Un altro utilizzo comune dell'identità Windows dell'applicazione ASP.NET è come identità di una connessione a un SQL Server tramite la protezione integrata. Per ulteriori informazioni, vedere Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari e Procedura: accedere a SQL Server tramite la protezione integrata di Windows.
L'identità di un'applicazione ASP.NET è determinata da diversi fattori. Per impostazione predefinita, le pagine ASP.NET vengono eseguite con l'identità Windows del servizio che elabora le pagine ASP.NET sul server Web. Per i computer con Windows Server 2003 tale identità è costituita dall'identità del pool di applicazioni a cui l'applicazione ASP.NET appartiene, che per impostazione predefinita è l'account NETWORK SERVICE. Per i computer con Windows 2000 e Windows XP Professional l'identità è costituita dall'account ASPNET locale creato durante l'installazione .NET Framework. È anche possibile configurare un'identità differente. Per ulteriori informazioni, vedere Configurazione dell'identità dei processi ASP.NET.
È possibile modificare l'identità Windows eseguita dalla pagina ASP.NET utilizzando elemento identity della sezione di configurazione system.web. L'elemento identity può essere utilizzato per indicare ad ASP.NET di rappresentare un ID utente Windows. La rappresentazione di un'identità Windows consente alle pagine ASP.NET per l'applicazione di essere eseguite come tale identità Windows. È possibile specificare un nome utente e una password per la rappresentazione. In alternativa, è possibile attivare la rappresentazione in modo da eseguire ASP.NET in una delle due seguenti modalità: come identità anonima specificata da IIS o come identità browser autenticata come determinato da IIS, ad esempio autenticazione anonima, autenticazione intergrata di Windows (NTLM) e così via. Per ulteriori informazioni, vedere Rappresentazione ASP.NET.
Se si sta rappresentando un'identità Windows, è possibile eseguire il codice che ripristina l'identità originale del processo invece dell'ID utente rappresentato. Per tale ragione, negli ambienti in cui è necessario mantenere le applicazione distinte, è necessario isolare le applicazioni in pool di applicazioni separati sui computer con Windows Server 2003. Ogni pool di applicazioni deve essere configurato con un'identità Windows univoca.
È possibile determinare facilmente l'identità Windows del thread del sistema operativo eseguito dalla pagina ASP.NET utilizzando la proprietà Name dell'oggetto WindowsIdentity restituito dal metodo GetCurrent, come indicato nell'esempio di codice riportato di seguito.
<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>
Utente ASP.NET
L'identità dell'utente ASP.NET viene utilizzata per accedere alla risorse specifiche di ASP.NET. È ad esempio possibile identificare una parte dell'applicazione in modo che sia disponibile solo per determinati utenti, mentre le altre parti dell'applicazione risulteranno disponibili per tutti gli utenti.
L'utente ASP.NET è determinato dall'elemento authentication della sezione system.web del file Web.config per l'applicazione. Sono disponibili diverse opzioni per l'autenticazione dell'identità ASP.NET per l'applicazione. È possibile utilizzare il nome utente Windows determinato da IIS, l'autenticazione basata su form ASP.NET, l'autenticazione Passport o uno schema di autenticazione personalizzato. È possibile accedere all'identità ASP.NET utilizzando la proprietà User dell'oggetto HttpContext corrente. Per informazioni dettagliate, vedere Autenticazione ASP.NET.
Se per fornire l'identità ASP.NET si utilizza l'autenticazione basata su form ASP.NET o una soluzione di autenticazione personalizzata, è possibile utilizzare l'appartenenza ASP.NET per fornire la funzionalità di gestione degli utenti e archiviazione dei dati degli utenti. Per ulteriori informazioni, vedere la classe Gestione di utenti tramite l'appartenenza.
Autorizzazione degli utenti
L'autorizzazione implica la limitazione dell'accesso utente solo alle risorse necessarie, inclusa la limitazione dell'accesso esclusivamente ai file, database e porzioni dell'applicazione necessari. Include inoltre l'utilizzo della protezione dell'accesso di codice per limitare l'accesso al codice.
È possibile limitare l'accesso ai file utilizzando gli elenchi di controllo di accesso NTFS e il FileAuthorizationModule. Per ulteriori informazioni, vedere Autorizzazione ASP.NET e Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari.
È possibile limitare l'accesso a porzioni dell'applicazione utilizzando il UrlAuthorizationModule e la gestione dei ruoli ASP.NET. Per ulteriori informazioni, vedere°Autorizzazione ASP.NET e Gestione delle autorizzazioni tramite ruoli.