Autorizzazione ASP.NET

L'autorizzazione è un processo che consente di stabilire se è necessario concedere l'accesso a una specifica risorsa a un'identità. In ASP.NET è possibile autorizzare l'accesso a una data risorsa in due modi diversi:

  • Autorizzazione tramite file   L'autorizzazione tramite file viene eseguita mediante il modulo FileAuthorizationModule e consente di controllare l'elenco di controllo di accesso (ACL, Access Control List) del file di gestione aspx o asmx per determinare se un utente deve disporre dell'accesso al file. Viene inoltre verificata l'identità Windows dell'utente (se è attivata l'autenticazione Windows) o l'identità Windows del processo ASP.NET delle autorizzazioni ACL. Per ulteriori informazioni, vedere Rappresentazione ASP.NET.

  • Autorizzazione tramite URL   L'autorizzazione tramite URL viene eseguita mediante il modulo UrlAuthorizationModule, che effettua il mapping degli utenti e dei ruoli agli URL nelle applicazioni ASP.NET. Questo modulo può essere utilizzato per concedere o negare in modo selettivo l'accesso alle parti arbitrarie di un'applicazione, generalmente le directory, per determinati utenti o ruoli.

Utilizzo dell'autorizzazione tramite URL

Grazie all'autorizzazione tramite URL è possibile concedere o negare in modo esplicito l'accesso a una particolare directory in base al ruolo o al nome dell'utente. A tale scopo, viene creata una sezione authorization nel file di configurazione relativo alla directory in questione. Per attivare l'autorizzazione tramite URL, è necessario specificare un elenco di utenti o ruoli negli elementi allow o deny della sezione authorization di un file di configurazione. Le autorizzazioni impostate per una directory si applicano anche alle relative sottodirectory, a meno che queste non contengano file di configurazione che ne eseguono l'override.

Di seguito viene illustrata la sintassi relativa alla sezione authorization:

<authorization>
  <[allow|deny] users roles verbs />
</authorization>

L'elemento allow o deny è obbligatorio. È necessario specificare l'attributo users o roles. È possibile, benché non obbligatorio, includere entrambi. L'attributo verbs è facoltativo.

Gli elementi allow e deny concedono e revocano l'accesso rispettivamente. Ogni elemento supporta gli attributi riportati nella tabella seguente:

Attributo Descrizione

users

Identifica le identità cui fa riferimento l'elemento (account utente).

Un punto interrogativo (?) indica gli utenti anonimi. È possibile specificare tutti gli utenti autenticati con un asterisco (*).

roles

Identifica un ruolo, ovvero un oggetto RolePrincipal, per la richiesta corrente al quale è stato concesso o negato l'accesso alla risorsa. Per ulteriori informazioni, vedere Gestione delle autorizzazioni tramite ruoli.

verbs

Definisce i verbi HTTP cui applicare l'azione, come GET, HEAD e POST. L'impostazione predefinita "*" specifica tutti i verbi.

Nell'esempio che segue viene concesso l'accesso all'identità Kim e ai membri del ruolo Admins e viene negato l'accesso all'identità John, a meno che tale identità non sia inclusa nel ruolo Admins, e a tutti gli utenti anonimi:

<authorization>
  <allow users="Kim"/>
  <allow roles="Admins"/>
  <deny users="John"/>
  <deny users="?"/>
</authorization>

Nella sezione authorization che segue viene illustrato come concedere l'accesso all'identità John e negarlo a tutti gli altri utenti:

<authorization>
  <allow users="John"/>
  <deny users="*"/>
</authorization>

È possibile specificare più entità per entrambi gli attributi users e roles utilizzando un elenco separato da virgola, come illustrato nell'esempio seguente:

<allow users="John, Kim, contoso\Jane"/>

Se si specifica un nome di account di dominio, il nome deve includere sia il nome del dominio che quello dell'utente (contoso\Jane).

Nell'esempio che segue a tutti gli utenti viene consentito di eseguire un'operazione GET HTTP per una risorsa, ma solo all'identità Kim viene consentita l'esecuzione di un'operazione POST:

<authorization>
  <allow verbs="GET" users="*"/>
  <allow verbs="POST" users="Kim"/>
  <deny verbs="POST" users="*"/> 
</authorization>

Le regole vengono applicate nel modo seguente:

  • Le regole contenute nei file di configurazione a livello di applicazione hanno la precedenza su quelle ereditate. Per determinare la precedenza, viene generato un elenco in cui sono riunite tutte le regole relative a un URL a partire da quelle più recenti, ovvero quelle più vicine nella gerarchia.

  • Dato un insieme di regole riunite per un'applicazione, ASP.NET avvia un controllo dall'inizio dell'elenco finché non viene trovata la prima corrispondenza. La configurazione predefinita di ASP.NET contiene un elemento <allow users="*"> che determina l'autorizzazione di tutti gli utenti. Per impostazione predefinita, questa regola viene applicata per ultima. Se non vi sono altre corrispondenze tra le regole di autorizzazione, la richiesta verrà ammessa. Se viene trovata una corrispondenza nell'elemento deny, la richiesta verrà restituita con il codice di stato HTTP 401. Se viene rilevata una corrispondenza con un elemento allow, il modulo consentirà un'ulteriore elaborazione della richiesta.

In un file di configurazione è anche possibile creare un elemento location per specificare una directory o un file particolare al quale applicare le impostazioni dell'elemento location.

Vedere anche

Riferimenti

FileAuthorizationModule
UrlAuthorizationModule
IPrincipal

Concetti

Configurazione di sottodirectory e file specifici
Rappresentazione ASP.NET

Altre risorse

Protezione delle applicazioni Web ASP.NET