Rappresentazione ASP.NET
Aggiornamento: novembre 2007
Quando si utilizza la rappresentazione, è possibile eseguire le applicazioni ASP.NET con l'identità Windows (account utente) dell'utente che effettua la richiesta. La rappresentazione viene generalmente utilizzata nelle applicazioni che si basano su Microsoft Internet Information Services (IIS) per autenticare l'utente.
Per impostazione predefinita, la rappresentazione ASP.NET è disattivata. Se la rappresentazione è attivata per un'applicazione ASP.NET, quest'ultima viene eseguita nel contesto dell'identità il cui token di accesso viene passato da IIS ad ASP.NET. Il token può essere un token utente autenticato, come quello per un utente di Windows connesso, oppure un token fornito da IIS per gli utenti anonimi, in genere l'identità IUSR_MACHINENAME.
Quando la rappresentazione è attivata, solo il codice applicativo viene eseguito nel contesto dell'utente rappresentato. Le applicazioni vengono compilate e le informazioni relative alla configurazione vengono caricate utilizzando l'identità del processo ASP.NET. Per ulteriori informazioni, vedere Configurazione dell'identità dei processi ASP.NET. L'applicazione compilata viene inserita nella directory dei file ASP.NET temporanei. L'identità dell'applicazione rappresentata deve disporre dell'accesso in lettura/scrittura a tale directory e inoltre richiede almeno l'accesso in lettura ai file contenuti nella directory dell'applicazione e nelle relative sottodirectory. Per ulteriori informazioni, vedere Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari.
Nota: |
---|
Poiché in ASP.NET viene utilizzata l'identità Windows del processo ASP.NET durante la compilazione delle applicazioni e il caricamento delle informazioni relative alla configurazione, è necessario mantenere la riservatezza del codice dell'applicazione e delle informazioni relative alla configurazione tra le applicazioni di un server contenente più applicazioni. In Windows Server 2003 è possibile creare più pool di applicazioni e specificare un'identità univoca per ognuno di essi. È quindi possibile limitare l'accesso ai file dell'applicazione utilizzando gli elenchi di controllo di accesso (ACL), se il file system è formattato utilizzando NTFS, e queste identità. Si considerino, ad esempio, due applicazioni, App1 e App2, contenenti informazioni che devono essere mantenute private. È possibile inserire App1 nel pool di applicazioni ApplicationPool1 con l'identità ID_ApplicationPool1 e App2 nel pool di applicazioni ApplicationPool2 con l'identità ID_ApplicationPool2. All'account ID_ApplicationPool1 viene consentito l'accesso ai file contenuti in App1, ma viene negato l'accesso ai file contenuti in App2, mentre all'account ID_ApplicationPool2 viene consentito l'accesso ai file contenuti in App2, ma viene negato l'accesso ai file contenuti in App1. Tenere presente che non è possibile effettuare questa separazione in Windows 2000 o Windows XP Professional, in quanto in questi sistemi operativi l'identità di processo per tutte le applicazioni ASP.NET è un'unica identità. |
Per controllare la rappresentazione viene utilizzato l'elemento di configurazione identity. Analogamente ad altre direttive di configurazione, questa direttiva viene applicata in modo gerarchico. Un file di configurazione minimo che consenta di attivare la rappresentazione per un'applicazione può presentare il seguente aspetto:
<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
</configuration>
È anche possibile aggiungere il supporto di nomi specifici per l'esecuzione di un'applicazione come identità configurabile, come illustrato nel seguente esempio:
<identity impersonate="true"
userName="contoso\Jane"
password="********" />
Sostituire la password corretta per il valore elencato nell'esempio precedente.
Nota: |
---|
Nell'esempio precedente il nome utente e la password sono memorizzati in testo non crittografato all'interno del file di configurazione. Per migliorare la sicurezza dell'applicazione, si consiglia di limitare l'accesso al file Web.config utilizzando un elenco di controllo di accesso (ACL) e crittografare l'elemento della configurazione identity nel file Web.config utilizzando la configurazione protetta. Per ulteriori informazioni, vedere Crittografia delle informazioni di configurazione utilizzando la configurazione protetta. |
La configurazione illustrata nell'esempio consente di eseguire tutta l'applicazione utilizzando l'identità contoso\Jane, indipendentemente dall'identità della richiesta. Questo tipo di rappresentazione può essere delegato a un altro computer. In altre parole, se si specifica il nome utente e la password dell'utente rappresentato, è possibile connettersi a un altro computer in rete e richiedere risorse, ad esempio dei file o l'accesso a SQL Server, utilizzando la sicurezza integrata. Se si attiva la rappresentazione e non si specifica un account di dominio come identità, non sarà possibile connettersi a un altro computer in rete a meno che l'applicazione IIS non sia configurata per l'utilizzo dell'autenticazione di base.
Nota: |
---|
In Windows 2000 non è possibile eseguire la rappresentazione utilizzando specifiche credenziali utente per l'identità del processo di lavoro ASP.NET. È tuttavia possibile attivare la rappresentazione senza credenziali utente specifiche in modo che l'applicazione rappresenti l'identità determinata da IIS. Per ulteriori informazioni, vedere l'articolo 810204, "PRB: Per Request Impersonation Does Not Work on Windows 2000 with ASP.NET" disponibile nella Microsoft Knowledge Base all'indirizzo https://support.microsoft.com (informazioni in lingua inglese). |
Lettura dell'identità rappresentata
Nell'esempio di codice riportato di seguito viene illustrato come leggere a livello di codice l'identità dell'utente rappresentato.
Dim username As String = _
System.Security.Principal.WindowsIdentity.GetCurrent().Name
String username =
System.Security.Principal.WindowsIdentity.GetCurrent().Name;