Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Interazione tra autenticazione di IIS6 e autenticazione di Windows

Le diverse restrizioni di accesso di IIS. Puntualizzare la differenza tra autenticazione e autorizzazione
Le diverse restrizioni di accesso di IIS. Puntualizzare la differenza tra autenticazione e autorizzazione
Link copiato negli appunti

Nell'ambito della sicurezza informatica, si definisce autenticazione il meccanismo tramite il quale un computer, un software o un utente, verifica l'identità di un altro computer, software o utente che richiede di comunicare attraverso una connessione. I sistemi operativi Microsoft Windows, così come il server Web IIS, implementano diversi sistemi di autenticazione differenti.

In funzione della tipologia e della configurazione dell'applicazione Web, i meccanismi di autenticazione di Windows e di IIS interagiscono tra loro nel processo di riconoscimento dell'utente, al fine di stabilirne l'identità e di consentirne (o impedirne) l'accesso.

In questo articolo utilizziamo un semplice esempio di applicazione Web per illustrare e sperimentare differenti opzioni di configurazione. L'applicazione è costituita dalla sola pagina ASP.NET che si trova in allegato.

All'interno del Sito Web Predefinito, creiamo una directory virtuale denominata AuthTest contenente la pagina Web di esempio. Dovremmo raggiungere la nostra pagina puntando all'indirizzo:

http://localhost/AuthTest/AuthTestPage.aspx

I metodi di autenticazione di IIS6

IIS6.0 presenta numerosi metodi di autenticazione, ma in questo articolo ci interessa esaminare solo i metodi che coinvolgono anche i processi di autenticazione di Windows, e cioè:

  • Autenticazione anonima: questo metodo non richiede all'utente di fornire credenziali specifiche e viene utilizzato normalmente per l'accesso a risorse che non necessitano di protezione
  • Autenticazione di base: questo metodo richiede all'utente di fornire credenziali di accesso, che vengono trasmesse al server Web non crittografate, semplicemente codificate in Base64, quindi con un basso livello di protezione
  • Autenticazione Digest: fornisce un livello di protezione medio in quanto le credenziali dell'utente sono trasmesse codificate sottoforma di hash MD5
  • Autenticazione Digest avanzata: questo metodo è analogo al precedente, con la differenza che le credenziali dell'utente sono archiviate nel controllore di dominio sottoforma di hash MD5
  • Autenticazione integrata di Windows: si avvale dei medesimi sistemi di autenticazione di Windows (NTLM oppure Kerberos) per l'invio delle credenziali ed il riconoscimento dell'utente

Le caratteristiche principali di questi 5 sistemi di autenticazione sono riassunti nella tabella seguente.

Metodo Livello di protezione Codifica delle password Utilizzabile con server proxy e firewall Requisiti dei client
Autenticazione anonima Nessuno   Qualsiasi browser
Autenticazione di base Basso Base64 La maggior parte dei browser
Autenticazione Digest Medio MD5 Hashing IE >= 5.0
Autenticazione Digest avanzata Medio MD5 Hashing IE >= 5.0
Autenticazione integrata di Windows Alto NTLM oppure Kerberos Solo nel caso di connessione PPTP IE >= 2.0 per NTLM;

Win >= 2000
con IE >= 5.0 per Kerberos

Il processo di autenticazione

La configurazione dei metodi di autenticazione di IIS può essere effettuata a livello di sito Web, a livello di directory virtuale o di singolo file. Si osserva innanzitutto che è possibile effettuare una multiselezione, cioè configurare più sistemi di autenticazione attivi contemporaneamente. Alla richiesta di connessione di un client, IIS prova a negoziare i diversi metodi seguendo un ordine di priorità:

  1. Autenticazione anonima
  2. Autenticazione integrata di Windows
  3. Autenticazione Digest e Digest avanzata
  4. Autenticazione di base

Dall'ordine di priorità si evince che, se si esclude l'autenticazione anonima che di fatto non effettua nessuna richiesta di credenziali al client, IIS cerca di negoziare dapprima il metodo più restrittivo (che garantisce cioè il maggior livello di protezione); se la negoziazione fallisce, IIS scorre la lista degli altri metodi disponibili, sempre in ordine dal più sicuro al meno sicuro, fino a trovare un metodo supportato sia dal server che dal client.

Proviamo a configurare la directory virtuale AuthTest selezionando tutti e cinque i metodi illustrati. La pagina di prova AuthTestPage.aspx, che scrive del testo all'interno di un file, sarà utilizzata per verificare l'esito dell'autenticazione al variare delle opzioni configurate sulla directory virtuale.

Autenticazione anonima

In questa prima configurazione, essendo attivo il metodo di autenticazione anonima, che è il primo in ordine di priorità, nessuna richiesta di credenziali sarà effettuata al client.

IIS assegnerà alla connessione l'account che è specificato per le connessioni anonime. Secondo la configurazione predefinita, il nome di questo account è IUSR_<nome del Web server> (per esempio, se il server IIS si chiama SRV01, l'account anonimo sarà IUSR_ SRV01). Questo account, per impostazione predefinita, è inserito all'interno del gruppo Guests del sistema Windows Server 2003 su cui è installato IIS.

Con l'autenticazione anonima quindi l'applicazione Web "impersonifica" (cioè "acquisisce le credenziali di") l'account anonimo e l'accesso alle risorse verrà effettuato con i provilegi associati a questo account.

Tornando all'applicazione di esempio, la pagina AuthTestPage.aspx scrive all'interno di un file, pertanto sarà eseguita correttamente solo se l'account anonimo ha i privilegi di scrittura sul file. Qualora il diritto di scrittura non sia stato assegnato, la pagina visualizzerà un messaggio di errore simile al seguente:

Access to the path 'c:tempout.txt' is denied.

A questo punto ci si potrebbe chiedere perchè IIS, in seguito all'errore verificatosi, non cerchi di negoziare un altro sistema di autenticazione. Per rispondere a questa domanda occorre ricordare la distinzione tra "autenticazione" ed "autorizzazione". L'autenticazione si occupa del riconoscimento dell'utente, l'autorizzazione si occupa di verificare che l'utente (una volta autenticato) abbia i privilegi necessari per l'accesso alla risorsa richiesta.

Quello visualizzato dalla pagina non è un errore di autenticazione! L'autenticazione è avvenuta correttamente (tramite il processo di impersonificazione); il messaggio di errore è relativo ad un problema di autorizzazione, che è un processo a valle dell'autenticazione.

Prima di procedere alla lettura del paragrafo successivo, modifichiamo la configurazione della directory virtuale AuthTest disattivando l'autenticazione anonima.

Autenticazione integrata di Windows

Disattivata l'autenticazione anonima, IIS tenta di negoziare con il client il processo di autenticazione integrata di Windows. Questo metodo utilizza il protocollo Kerberos 5, che è uno standard industriale, oppure il protocollo proprietatio NTLM. In presenza di un dominio Active Directory di livello non inferiore a Windows 2000 sarà utilizzato il protocollo Kerberos 5 (se supportato anche dal client); in caso contrario, verrà negoziato NTLM.

Con l'autenticazione integrata di Windows, IIS richiede al client di fornire le credenziali (in termini di: dominio, nome utente e password) relativi ad un account definito all'interno dell'Active Directory.

A seconda della configurazione del browser relativa alla zona del sito Web, il passaggio delle credenziali può avvenire o meno in modo trasparente: nel primo caso le credenziali utilizzate dall'utente per accedere al client Windows sono automaticamente trasmesse dal browser al server IIS per l'autenticazione. Nel secondo caso, modificando l'impostazione della zona, è possibile forzare la richiesta delle credenziali all'utente, che avviene mediante apposita finestra di dialogo. Le opzioni disponibili sono:

  • Accesso anonimo: il browser non trasmette mai le credenziali dell'utente
  • Accesso automatico con nome utente e password correnti: il browser trasmette sempre le credenziali correnti dell'utente (quelle utilizzate per l'accesso al sistema operativo)
  • Accesso automatico solo nell'area Intranet: la trasmissione delle credenziali correnti da parte del browser avviene solo se il server IIS si trova nella medesima rete locale
  • Richiedi nome utente e password: il browser visualizza sempre la finestra di dialogo con la richiesta delle credenziali
Figura 1. Impostazioni protezione (IE6.0)
Impostazioni protezione (IE6.0)

L'autenticazione integrata di Windows è in grado di autenticare sia utenti di dominio sia utenti definiti localmente al server Web. Per account locali, l'utente dovrà fornire il nome utente e la password, senza indicare il dominio. Il protocollo di autenticazione in questo caso è sempre NTLM.

Eseguendo la pagina AuthTestPage.aspx, dopo aver assegnato all'utente i privilegi necessari alla scrittura del file, vengono visualizzate le credenziali dell'utente autenticato.

Modifichiamo configurazione della directory virtuale AuthTest disattivando l'autenticazione integrata di Windows e andiamo avanti.

Autenticazione Digest e Digest avanzata

L'attuale configurazione della directory virtuale AuthTest richiede ad IIS di negoziare il metodo di autenticazione Digest. Con questo metodo, le credenziali dell'utente sono trasmesse al server Web sottoforma di Message Digest 5 (MD5) hash.

Una volta negoziato il protocollo di autenticazione Digest, il browser richiede all'utente le credenziali che IIS trasmetterà al domain controller per la validazione, analogamente a quanto descritto per l'autenticazione integrata di Windows.

L'autenticazione Digest necessita che all'interno dell'Active Directory sia memorizzata la password dell'utente con un algoritmo di crittografia reversibile. Questa impostazione può essere configurata a livello di proprietà del singolo account di dominio, oppure tramite i Criteri di Gruppo; dopo l'impostazione occorre ridefinire la password per l'account.

Prima di procedere alla lettura del paragrafo successivo, disattiviamo l'autenticazione Digest per AuthTest.

Autenticazione di base

Sulla directory virtuale AuthTest rimane attivo solo il metodo di autenticazione di base. Con questo metodo, il browser visualizza all'utente una finestra di dialogo che richiede le credenziali di un account analogamente a quanto descritto per l'autenticazione Digest.

Questo metodo ha il vantaggio di essere supportato dalla maggior parte dei browser, ma è caratterizzato da un livello di sicurezza è molto basso.

Eseguendo infine la pagina AuthTestPage.aspx, è possibile visualizzare le credenziali dell'utente autenticato tramite il metodo base.

Ti consigliamo anche