HowTo – Guida ASP.NET (Parte 15)


PARTE 5 – CAPITOLO 15 – WINDOWS AUTHENTICATION

La Windows Authentication, molto utilizzata nelle reti Intranet, ha lo scopo di mappare gli utenti di rete con quelli di sistema censiti in una macchina dedicata. Da questa sommaria definizione si capisce come questa strada sia percorribile solo quando il numero di utenti è limitato e comunque non ad iscrizione libera. A differenza della Forms Authentication, questo tipo di autenticazione non è gestita da ASP.NET ma direttamente da IIS che chiede al visitatore di inserire le credenziali di un utente di sistema. Il primo passo da parte del Web Server è verificare se la richiesta sia legittima (ad esempio si può limitare la richiesta alle sole postazioni di una Intranet) e in seguito verifica se le credenziali sono corrette. Solo a questo punto permette ad ASP.NET l’elaborazione della richiesta. Il passo successivo è verificare se l’utente sta utilizzando l’Impersonation (tecnica tramite la quale un utente cambia temporaneamente la sua identità per identificarsi con altre credenziali. In ASP.NET esistono due tipi di Impersonation: Configured – in web.config file, specifica che la richiesta va fatta con l’identità del richiedente – e Programmatic – cambia l’identità direttamente nel codice per svolgere un particolare task e torna all’identità originale terminato il task in questione). L’ultimo controllo riguarda i permessi NTFS per l’utente corrente. Se tutte le verifiche hanno esito positivo viene garantito l’accesso. Se ci si trova nella condizione di poterla utilizzare, la Windows Authentication è sicuramente una buona scelta in quanto permette di utilizzare l’infrastruttura già esistente ed evita di gestire la parte di codice dedicata. Naturalmente ci sono anche dei lati negativi come, ad esempio, l’inscindibilità di questa tecnica con il sistema operativo Microsoft Windows e la poca personalizzazione possibile riguardo alla gestione degli utenti. Le tre tipologie di accesso disponibili per la Windows Authentication sono la Basic (supportata da tutti i browser, invia i dati in chiaro), la Digest (trasmissione di un hash crittografato contenente i dati di accesso) e la Integrated (non vengono trasmessi i dati di accesso ma solo un Token legato all’utente correntemente loggato). Il processo di autenticazione può avvenire via NTLM o Kerberos (quando supportato). NTLM (NT Lan Manager) è l’autenticazione integrata in Windows. Un client fa una richiesta al Server, questo genera una Nonce (stringa casuale unica) che comunica al Client, il client fa loggare l’utente e crea l’hash per la password, con l’hash cripta il Nonce ricevuto e rispedisce tutto al Server che estrae le proprie informazioni sull’username e verifica che il Nonce criptato con la password dell’utente coincida con quello inviato dal client. Kerberos è il metodo di accesso più sicuro attualmente disponibile. Viene utilizzato di default da Windows se Client e Server usano Windows2000 (o successive edizioni) ed è disponibile un Active Directory Domain in rete. Il Browser invia una richiesta all’Authentication service con la Username dell’utente; il KDC legge la Master Key (hash della password relativa all’utente corrente); il KDC crea un TGT (Ticket Granting Ticket) che contiene una Session Key per l’utente e la relativa data di scadenza e lo stesso viene criptato con la Master Key e rimandato al client; solo inserendo la giusta password il client è in grado di decriptare correttamente il TGT e autenticarsi (a questo punto la TGT viene inserita in cache); per autorizzazioni successive si controlla se il TGT non è scaduto (e in ogni caso viene generata una nuova session criptata). Per utilizzare la Windows Authentication bisogna configurare il tipo di autenticazione da IIS, configurare ASP.NET in modo da utilizzare l’autenticazione di IIS (web.config) e negare l’accesso anonimo all’intera applicazione o ad una sua specifica area. In seguito basta abilitare i relativi moduli (sempre di IIS). Utilizzando la Windows Authentication è possibile forzare determinati overload sul metodo IsInRole che permettono di verificare se l’utente fa parte di un certo gruppo di dominio.

[Omnia / Luca Zaccaro]


Una risposta a “HowTo – Guida ASP.NET (Parte 15)”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *