Architettura della protezione ASP.NET
Aggiornamento: novembre 2007
In questa sezione vengono forniti i cenni preliminari sull'infrastruttura di protezione ASP.NET. 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, Se necessario, la richiesta viene autenticata e viene quindi trovata la risorsa richiesta, ad esempio un'applicazione ASP.NET. Se il client è autorizzato, la risorsa diventa disponibile.
Quando è in esecuzione, un'applicazione ASP.NET può utilizzare le funzionalità di protezione incorporate oltre a quelle di .NET Framework. Per ulteriori informazioni, vedere Concetti principali sulla protezione.
Integrazione dell'autenticazione ASP.NET in IIS
Oltre ad utilizzare le funzionalità di autenticazione di IIS, l'autenticazione può essere eseguita anche in ASP.NET. In tal caso, è importante comprendere l'interazione con i servizi di autenticazione IIS.
In IIS un insieme di credenziali viene sempre considerato associato a un account di Microsoft Windows NT e dovrebbe essere utilizzato per l'autenticazione di un utente. Sono disponibili tre tipi diversi di autenticazione in IIS 5.0 e IIS 6.0: autenticazione di base, digest e protezione 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 gli utenti richiedono un URL mappato a un'applicazione ASP.NET, la richiesta e le informazioni di autenticazione verranno passate all'applicazione. ASP.NET fornisce l'autenticazione basata su form, ovvero un sistema basato sul reindirizzamento delle richieste non autenticate a una pagina Web ASP.NET appositamente creata. L'utente fornisce le credenziali e invia la pagina. Se la richiesta viene autenticata dall'applicazione, 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 includono un ticket di autenticazione abbinato.
Nota: |
---|
Le appartenenze e i controlli di accesso di ASP.NET si basano implicitamente sull'autenticazione basata su form. |
Impostazioni della protezione dei file di configurazione ASP.NET
Le impostazioni di protezione ASP.NET sono configurate nei file Machine.config e Web.config. Così come le altre informazioni sulla configurazione, le impostazioni di base e quelle predefinite sono definite nel file Machine.config nella sottodirectory Config dell'installazione di .NET Framework corrente. È possibile definire impostazioni specifiche del sito e dell'applicazione nei file Web.config nelle directory principali del sito Web e dell'applicazione, incluso l'override delle impostazioni dal file Machine.config. 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. Per un esempio del funzionamento del sistema di configurazione gerarchica nel campo della protezione, vedere Elemento configSections (schema delle impostazioni generali).
In un file Web.config sono presenti tre sottosezioni principali: autenticazione, autorizzazione e identità. I valori relativi a ciascun elemento della protezione vengono generalmente impostati nel file Machine.config e sottoposti a override in base alle esigenze nel file Web.config a livello di applicazione. Queste impostazioni vengono automaticamente ereditate da tutte le sottodirectory. Le sottodirectory, tuttavia, possono disporre di file di configurazione propri che eseguono l'override delle impostazioni ereditate.
Nota: |
---|
La configurazione ASP.NET si applica solo alle risorse ASP.NET, ovvero quelle registrate per essere gestite da IIS utilizzando l'estensione Aspnet_isapi.dll. Tale configurazione inoltre non può fornire l'autorizzazione per le risorse non elaborate da ASP.NET. Pertanto tutti gli utenti possono accedere a file con estensione txt, htm, html, gif, jpg, jpeg, asp e di altro tipo (soggetti ad 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. È possibile includere questi tipi di file nella protezione ASP.NET eseguendo un mapping esplicito di tali estensioni all'estensione Aspnet_isapi.dll mediante lo strumento di amministrazione IIS. Tuttavia, l'elaborazione di tali file attraverso ASP.NET può influire sulle prestazioni del sito Web. |
È possibile utilizzare l'elemento di configurazione location per specificare un file o una directory in particolare a cui applicare le impostazioni. Per ulteriori informazioni, vedere°Elemento configSections (schema delle impostazioni generali) e Configurazione di sottodirectory e file specifici. Per ulteriori informazioni sulla configurazione di ASP.NET in generale, vedere Cenni preliminari sulla configurazione di ASP.NET.
Nell'esempio riportato di seguito viene illustrata la sintassi delle sezioni della protezione di un file di configurazione.
<authentication mode="[Windows|Forms| 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="********"
password="********"/>
</credentials>
</forms>
</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\username"
password="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="" /> |
Stringa vuota che indica che tutti i ruoli sono consentiti per impostazione predefinita. |
<allow users="*" /> |
Stringa vuota che indica che l'accesso è consentito a tutti gli utenti e non è necessaria alcuna autenticazione. |
<authentication mode="Windows" /> |
Tipo di autenticazione che determina l'origine del valore User corrente. Il valore predefinito è Windows. |
<credentials passwordFormat="SHA1" /> |
Algoritmo hash utilizzato sulle password. Il valore predefinito è SHA1. |
<deny roles="" /> |
Stringa vuota che indica che non viene negato alcun ruolo per impostazione predefinita. |
<deny users="" /> |
Stringa vuota che indica che non viene negato alcun utente per impostazione predefinita. |
<forms loginUrl="logon.aspx" /> |
URL a cui viene diretta la richiesta se l'autenticazione mode viene impostata su Forms e se la richiesta non dispone di un ticket di autenticazione valido. |
<forms name=".ASPXAUTH" /> |
Nome con cui il cookie dell'autenticazione basata su form viene memorizzato nel computer dell'utente. |
<forms path="/" /> |
Percorso a cui viene applicata l'autenticazione basata su form. L'impostazione predefinita è rappresentata da tutti i percorsi a partire dalla radice dell'applicazione verso il basso. |
<forms protection="All" /> |
Protezione applicata al ticket dell'autenticazione basata su form. I valori includono: All, None, Encryption e Validation. |
<forms timeout="30" /> |
Timeout in minuti prima della scadenza del ticket dell'autenticazione basata su form e della ripetizione dell'autenticazione da parte degli utenti. |
<forms requireSSL="false" /> |
Valore booleano che indica se è necessaria una connessione SSL per trasmettere il cookie di autenticazione. |
<forms slidingExpiration="true" /> |
Valore booleano che indica se è attivata la scadenza variabile. Per ulteriori informazioni, vedere la proprietà SlidingExpiration. |
<identity impersonate="false" /> |
Valore booleano che indica se la rappresentazione è disattivata. Per ulteriori informazioni, vedere Rappresentazione ASP.NET. |
<identity userName="" /> |
Stringa vuota che indica che non viene specificata alcuna identità dell'utente per impostazione predefinita. |
<identity password="" /> |
Stringa vuota che indica che non viene specificata alcuna password per l'identità dell'utente per impostazione predefinita. |
<trust level="Full" originUrl="" /> |
Criteri di protezione che verranno applicati all'applicazione. |
<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. |
Vedere anche
Concetti
Cenni preliminari sulla configurazione di ASP.NET
Altre risorse
Sicurezza dei siti Web ASP.NET