Architettura ASP.NET

In questa sezione viene fornita una panoramica sull'infrastruttura ASP.NET e sulle relazioni tra i sottosistemi, in connessione ai problemi relativi alla protezione. Nella seguente illustrazione vengono mostrate le relazioni tra i sistemi di protezione in ASP.NET.

Architettura ASP.NET

Come mostrato nell'illustrazione, tutti i client Web comunicano con le applicazioni ASP.NET tramite Microsoft Internet Information Services, che decripta ed eventualmente autentica la richiesta. Se l'opzione Consenti connessioni anonime è impostata su true non si verifica alcuna autenticazione. IIS reperisce inoltre la risorsa richiesta, quale ad esempio un'applicazione ASP.NET, e, se il client è autorizzato, la restituisce.

Oltre alle funzionalità di protezione incorporate in ASP.NET, un'applicazione ASP.NET può utilizzare le funzionalità di protezione a basso livello di .NET Framework. Per ulteriori informazioni, vedere Concetti principali sulla protezione.

Integrazione con IIS

Quando si prende in considerazione l'autenticazione ASP.NET, è necessario comprendere l'interazione con i servizi di autenticazione IIS.

In Internet Information Services un insieme di credenziali viene sempre considerato associato a un account di Microsoft Windows NT e utilizzato per l'autenticazione di un utente. Sono disponibili tre tipi diversi di autenticazione in Internet Information Services dalla versione 5.0 alla versione 6.0: autenticazione di base, classificata e integrata di Windows ** (NTLM o Kerberos). È possibile selezionare il tipo di autenticazione da utilizzare nei servizi amministrativi di Internet Information Services. Per ulteriori informazioni sull'autenticazione IIS, vedere la documentazione relativa a IIS.

Se si richiede un URL contenente un'applicazione ASP.NET, la richiesta e le informazioni di autenticazione verranno passate all'applicazione. In ASP.NET sono disponibili i due tipi aggiuntivi di autenticazione illustrati nella seguente tabella.

Provider di autenticazione ASP.NET Descrizione
Autenticazione basata su form Un sistema che reindirizza le richieste non autenticate a un form HTML mediante il reindirizzamento HTTP sul lato client. L'utente fornisce le credenziali e invia il form. Se la richiesta viene autenticata, verrà rilasciato un ticket di autenticazione all'interno di un cookie che contiene le credenziali o una chiave per riacquisire l'identità. Le richieste successive verranno rilasciate con il cookie nelle intestazioni di richiesta e verranno autenticate e autorizzate da un gestore ASP.NET mediante il metodo di convalida specificato dallo sviluppatore dell'applicazione.
Autenticazione Passport Servizio di autenticazione centralizzato fornito da Microsoft che offre servizi di accesso singolo e profilo di base per i siti membri.

Utilizzo dei file di configurazione ASP.NET

La configurazione di ASP.NET, di cui la protezione è un aspetto particolare, è caratterizzata da un'architettura gerarchica. Tutte le informazioni di configurazione relative ad ASP.NET sono contenute nei file Web.config e Machine.config. Web.config può essere inserito nelle stesse directory dei file dell'applicazione. Il file Machine.config si trova nella directory Config della directory principale di installazione. Le sottodirectory ereditano le impostazioni di una directory, a meno che un file Web.config presente in una di esse non ne esegua l'override. In un file Web.config sono presenti sezioni relative a ciascuna delle funzionalità principali di ASP.NET. Per un esempio del funzionamento del sistema di configurazione gerarchica nel campo della protezione, vedere Architettura di configurazione gerarchica.

La sezione relativa alla protezione di un file Web.config è organizzata nel seguente modo:

<authentication mode="[Windows|Forms|Passport|None]">
    <forms name="[name]" 
           loginUrl="[url]" 
           protection="[All|None|Encryption|Validation]"
           path="[path]" timeout="[minutes]"
           requireSSL="[true|false]" 
           slidingExpiration="[true|false]">
        <credentials passwordFormat="[Clear|MD5|SHA1]">
            <user name="[UserName]" 
                  password="[password]"/>
        </credentials>
    </forms>
    <passport redirectUrl="internal"/>
</authentication>

<authorization>
    <allow users="[comma separated list of users]"
           roles="[comma separated list of roles]"/>
    <deny  users="[comma separated list of users]"
           roles="[comma separated list of roles]"/>
</authorization>

<identity impersonate ="[true|false]"
          userName="[domain\user_name]"
          password="[user_password]"/>

<trust level="[Full|High|Medium|Low|Minimal]" 
       originUrl=""/>
  
<securityPolicy>
    <trustLevel name="Full" policyFile="internal"/>
    <trustLevel name="High" policyFile="web_hightrust.config"/>
    <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
    <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
    <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

Nella tabella riportata di seguito vengono illustrate le impostazioni predefinite degli elementi utilizzati nell'esempio.

Valore predefinito Descrizione
<allow roles= > Nessun valore predefinito.
<allow users="*"> Tutti
<authentication mode="Windows"> Non è consentito impostare la modalità di autenticazione a un livello inferiore a quello della directory principale dell'applicazione.
<credentials passwordFormat="SHA1"> L'algoritmo hash che è necessario utilizzare sulle password.
<deny roles=""> Vuoto.
<deny users=""> Vuoto.
<forms loginUrl="logon.aspx"> Se si imposta questa modalità su Forms e se la richiesta non dispone di un ticket valido (cookie), questo è l'URL cui è indirizzata la richiesta per un accesso basato su form.
<forms name=".ASPXAUTH"> Nome predefinito del cookie.
<forms path="/"> Path
<forms protection="All"> Type=[All|None|Encryption|Validation].
<forms timeout="30"> Timeout espresso in minuti. Il valore predefinito è 30 minuti.
<forms requireSSL="false"> Indica che non è necessaria una connessione protetta per trasmettere il cookie di autenticazione.
<forms slidingExpiration="true"> Indica che è attivata la scadenza variabile.
<identity impersonate="true" > La rappresentazione è attivata per impostazione predefinita.
<identity userName=""> Vuoto.
<identity password=""> Vuoto.
<passport redirectUrl="internal"> Se si imposta la modalità su Passport e per la pagina richiesta è necessaria l'autenticazione (accesso negato agli utenti anonimi) ma l'accesso non è stato eseguito tramite Passport, l'utente sarà reindirizzato a tale URL.
<trust level="Full" originUrl="" /> Il livello predefinito è Full.
<trustLevel name="Full" policyFile="internal"/> File di criteri predefinito per il livello di attendibilità Full.
<trustLevel name="High" policyFile="web_hightrust.config"/> File di criteri predefinito per il livello di attendibilità High.
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/> File di criteri predefinito per il livello di attendibilità Medium.
<trustLevel name="Low" policyFile="web_lowtrust.config"/> File di criteri predefinito per il livello di attendibilità Low.
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/> File di criteri predefinito per il livello di attendibilità Minimal.
<user name=""> Vuoto.
<user password=""> Vuoto.

In un file Web.config sono presenti tre sottosezioni principali: autenticazione, autorizzazione e identità. I valori relativi a ciascun elemento di protezione vengono impostati di solito eseguendo l'override di una sezione del file di configurazione a livello di computer con una sezione analoga di un file di configurazione di un'applicazione presente nella directory principale dell'applicazione. Queste impostazioni vengono automaticamente ereditate da tutte le sottodirectory. Le sottodirectory, tuttavia, possono disporre di propri file di configurazione che eseguono l'override di altre impostazioni.

Nota   La configurazione di ASP.NET si applica solo alle risorse ASP.NET, ossia alle risorse registrate per essere gestite dal file Aspnet_isapi.dll. Poiché quindi la configurazione di ASP.NET non può fornire autorizzazione per le risorse non gestite da Aspnet_isapi.dll, i file TXT, HTML, GIF, JPEG, ASP e altri tipi di file continuano a essere accessibili agli utenti, a condizione che sussistano le relative autorizzazioni IIS. Anche nel caso in cui ad esempio l'accesso alle risorse ASP.NET presenti in una directory sia limitato mediante un file Web.config, tutti gli utenti potranno continuare a visualizzare i file situati nella directory se l'esplorazione di tale directory non è disattivata e se non sono state impostate altre restrizioni.

Questa situazione può essere evitata associando in modo esplicito ad Aspnet_isapi.dll tali file, non le directory, mediante lo strumento di amministrazione di IIS. Questa operazione potrebbe tuttavia influire sul livello delle prestazioni.

Per specificare un file o una directory determinata a cui applicare le impostazioni è possibile utilizzare i tag <location> </location>. Per ulteriori informazioni sull'utilizzo del tag <location>, vedere Architettura di configurazione gerarchica e Impostazioni <location> per la configurazione.

Per ulteriori informazioni sulla configurazione di ASP.NET in generale, vedere Configurazione di ASP.NET.

Vedere anche

Protezione delle applicazioni Web ASP.NET | Concetti principali sulla protezione | Eventi FormsAuthentication | Provider di autenticazione Passport | Architettura di configurazione gerarchica | Impostazioni <location> per la configurazione | Configurazione di ASP.NET