Sistemi informativi e Telemedicina Anno Accademico 2008-2009 Prof. Mauro Giacomini
Concetti di base Tre funzioni fondamentali: Autenticazione: riceve le credenziali, le verifica presso un autorità, se le credenziali sono valide allora all utente è fornita un identità autenticata Autorizzazione: usa l identità trovata per capire se l utente possa o meno accedere a una risorsa Impersonazione: abilita l esecuzione di un applicazione ASP.NET nel contesto dei diritti dell utente autorizzato
Autenticazione Moduli con codice per la verifica delle credenziali: Authentication provider (modalità di autenticazione) Windows authentication: delega a IIS il compito di autenticare l utente in base alle impostazioni dell amministrazione della rete Passport authentication: servizio di autenticazione remota fornito da Microsoft (quello di messenger) Forms authentication: meccanismo integrato in ASP.NET configurabile dal programmatore. Da settare nel file web.config: <authentication mode = Modalità > </authentication> Modalità può essere: Windows, Passport, Forms, None
Windows authentication Basata su IIS Si applica alla risorsa da proteggere Si setta dalla console di IIS Tre metodi: Basic authentication Digest authentication Integrated Windows authentication
Basic authentication Metodo più diffuso in internet Nome e password in chiaro dal browser WEB a IIS Tutte le richeste che il browser farà al server conterranno anche username e password Supportato da qualsiasi browser Nessun problema con firewall e proxy Assenza di crittografia della password, facile all intrusione
NTLM Integrated Windows authentication Non prevede l invio esplicito di username e password Il client dimostra di possedere la password con lo scambio di informazioni crittografate Scambio automatico: alla richiesta di autenticazione del server, il client risponde con le credenziali di accesso fornite da Windows quando ha avuto accesso alla macchina Se queste non bastano allora è chiesto username, password e dominio presso cui autenticare queste informazioni Molto protetto Funziona solo in ambiente Windows e in rete locale
Digest authentication Introdotto con IIS 5.0 Compromesso tra Basic Authentication e Windows Integrated Authentication Scambio di informazioni che provano il possesso delle credenziali senza l invio esplicito di username e password Non interferisce con firewall e proxy server Non tutti i browser lo supportano La scelta del metodo di autenticazione (va fatta nella console di IIS)
Passport authentication (1) Servizio di autenticazione degli utenti a pagamento in esecuzione su un server dedicato gestito da Microsoft (www.passport.com) Passport login server, con profili unici ed indipendenti dall applicazione che li usa Kit specifico Passport SDK Analogo a un dominio Windows server: DB centralizzato di profili utente a cui fanno riferimento tutti i client del dominio Il server produce un elemento di riconoscimento (Passport ticket un cookie) che attesta l avvenuta autenticazione Garantisce che l applicazione non venga in contatto con la password
Passport authentication (2) 1. Il browser richiede a un server web Passport-enabled una risorsa protetta 2. La richiesta non contiene un Passport ticket valido, il browser viene reindirizzato dal Passport Manager al Passport login server (PLS) (con parametri codificati sulla richiesta originaria) 3. Il browser contatta il PLS con i parametri codificati al passo precedente 4. Il PLS richiede username e password, autentica l utente e redirige il browser alla risorsa originaria fornendogli il Passport ticket 5. Tutte le richieste successive avranno il Passport ticket
Forms authentication Gestione di autenticazione da ASP.NET, meccanismo analogo a quello della Passport 1. Il browser richiede una risorsa protetta da Forms authentication 2. Se nella richiesta non è presente un ticket di autenticazione il server redirige il browser alla pagina di login 3. L utente immette il proprio nome e password ed iniva i dati al server 4. Valutazione dei dati di convalida e se positiva è automaticamente rediretto alla richiesta originaria al browser è inviato un cookie (ticket di autenticazione) che sarà il lasciapassare per le successive richieste.
<authentication mode = Forms > <forms loginurl = login.aspx /> </authentication>
Esempio di pagina di login <form runat="server > Nome Utente: <input type= text id="nomeutente runat="server > <br> Password: <input type="password" id="password runat="server > <br> <input type="submit" value= Invia onserverclick="convalida runat="server > <p> <span id="messaggio runat="server ></span> </form> Il programmatore deve scrivere la funzione di convalida per valutare le credenziali presentate dall utente. La classe FormsAuthentication aiuta in questo compito
Metodi della classe FormsAuthentication Metodo Autenticate GetAuthCookie GetRedirectUrl RedirectFromLoginPage Descrizione date le credenziali fornite dall'utente le verifica con quelle memorizzate nel database degli utenti genera un cookie di autenticazione per un dato nome utente senza però inviarlo al browser restituisce l'url della risorsa che ha generato la richiesta di verifica delle autorizzazioni e quindi la redirezione alla pagina di logon rimanda un utente autenticato alla risorsa originariamente richiesta SetAuthCookie SignOut genera un cookie di autenticazione per un dato nome utente inserendolo nella risposta da inviare al browser elimina il cookie di autenticazione di un utente autenticato
Esempio di procedura di convalida <script runat="server"> Sub Convalida(src As Object, e As EventArgs) If Validazione(NomeUtente.Value, Password.Value) Then FormsAuthentication.RedirectFromLoginPage (NomeUtente.Value, False) Else Messaggio.InnerText = "Utente non autorizzato!" End If End Sub </script> La funzione booleana validazione è specifica del programma ed eventualmente accede a un DB per controllare le credenziali. Il metodo RedirectFromLoginPage vuole due parametri: il nome utente per i successivi accessi e un valore booleano sulla persistenza o meno del cookie generato
Convalida da web.config Un metodo di convalida poco flessibile, ma molto efficiente è quello basato su una direttiva nel file web.config <authentication mode=" Forms" > <forms loginurl="login.aspx" > <credentials passwordformat = "Clear"> <user name="rossi" password="pswrd" /> <user name="bianchi" password= "drwsp" /> </credentials> </forms> </authentication>
Funzione di convalida (2) Con questo testo nel web.config la funzione di convalida usa il metodo Autenticate e diventa: Sub Convalida(src As Object, e As EventArgs) If FormsAuthentication.Authenticate(NomeUtente.Value, Password.Value) Then FormsAuthentication.RedirectFromLoginPage (NomeUtente.Value, False) Else Messaggio.InnerText = "Utente non autorizzato!" End If End Sub </script>
Tag credentials Il tag <credentials> ha un attributo passwordformat che determina l algoritmo di passaggio della password, esso può assumere i valori: Clear: nessuna codifica MD5: algoritmo Message Digest 5, livello di sicurezza discreto e buone prestazioni di velocità SHAI: algoritmo omonimo con maggiore sicurezza e prestazioni inferiori in termini di velocità
Gestione delle autorizzazioni Verifica se una specifica identità ha diritto di accesso a una risorsa. Due tipi di autorizzazioni: File authorization: attiva se si usa la modalità Windows authentication e si basa sull uso di ACL (Access Control List) associate alle risorse (tutta a carico del sistema operativo) URL authorization: gestisce l autorizzazione all accesso delleurl che puntano alle varie sezioni dell applicazione web.
Esempio dei due metodi Caso 1: browser trasmette richiesta di accesso a una pagina ASP.NET, il server web controlla sull ACL di quel file per verificare se l utente che ha effettuato la richiesta ha diritto di lettura di quel file Caso 2: il controllo si basa sulle configurazioni dell applicazione web, file web.config. In questo modo si possono verificare i controlli di autenticazione e autorizzazione anche se gli utenti non hanno un account sul server
Uso di URL authorization Nel web.config: <authorization> <allow users ="Bianchi"> <deny users = "Rossi"> </authorization> Parametri di allow e deny user: identificativo degli utenti roles: ruolo o gruppo per cui si dà o nega l autorizzazione verbs: azioni specifiche di cui si concede o nega il diritto, possono essere: GET, HEAD, POST, DEBUG almeno uno fra user e role è obbligatorio
Uso di URL authorization (2) Caratteri speciali: *: tutti gli utenti?: utente anonimo la specificazione del singolo utente sovrascrive quella degli utenti generici Con il tag location possiamo controllare l autorizzazione per la singola pagina ASP.NET
Impersonazione Con l impersonazione l applicazione ASP.NET viene eseguita con l identità dell utente impersonato L impersonazione è disabilitata per default, abilitabile nella sezione <identity> del file web.config <identity impersonate= true /> <identity impersonate= true username= Rossi password= abcd /> Con la seconda l applicazione sarà eseguita per tutti gli utenti come se fossero Rossi.