Metodi di base per la protezione - medinfo

Transcript

Metodi di base per la protezione - medinfo
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)
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
1.
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
Descrizione
Autenticate
date le credenziali fornite dall'utente le verifica con quelle
memorizzate nel database degli utenti
GetAuthCookie
genera un cookie di autenticazione per un dato nome utente senza
però inviarlo al browser
GetRedirectUrl
restituisce l'URL della risorsa che ha generato la richiesta di
verifica delle autorizzazioni e quindi la redirezione alla pagina di
logon
RedirectFromLoginPage
rimanda un utente autenticato alla risorsa originariamente richiesta
SetAuthCookie
genera un cookie di autenticazione per un dato nome utente
inserendolo nella risposta da inviare al browser
SignOut
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
La funzione booleana validazione è specifica del
End Sub
programma ed eventualmente accede a un DB per
</script>
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.