Basic access authentication
Nel contesto di una transazione HTTP, basic access authentication è un metodo per fornire credenziali di accesso tra client e server.
Caratteristiche
[modifica | modifica wikitesto]L'implementazione HTTP Basic authentication (BA) è la più semplice tecnica per consentire l'accesso a risorse web con controllo di accesso perché non richiede cookie, id di sessione e pagine di login. Basic authentication utilizza headers HTTP statici e standard che non richiedono handshake eseguito preventivamente.
La Basic authentication è spesso utilizzata dove è necessario avere url verso aree riservate in cui si possa accedere sistematicamente, specialmente negli shell script o nei file batch.
Sicurezza
[modifica | modifica wikitesto]L'autenticazione BA non prevede protezione per le credenziali trasmesse. Esse vengono banalmente codificate con base64 ma non criptate o crittografate con hash. È solitamente utilizzata in HTTPS.
Dato che l'header BA deve essere inviato in ogni richiesta HTTP, il browser deve inserire nella cache le credenziali per un periodo di tempo congruo per evitare di dover richiedere ogni volta all'utente la username e la password. La policy del caching varia da un browser all'altro. Ad esempio, Microsoft Internet Explorer ha un tempo di cache di 15 minuti.[1]
Anche se HTTP non fornisce un metodo al web server per indicare al browser di eseguire il logout, ci sono una serie di possibilità utilizzando specifiche caratteristiche nei differenti browser. Una di queste è reindirizzare l'utente verso un URL sullo stesso dominio contenente credenziali volutamente errate:
https://forget:[email protected]/path
Sfortunatamente, questo comportamento non è utilizzabile nei diversi browser né nelle differenti versioni.[2] Microsoft Internet Explorer offre un metodo JavaScript dedicato alla pulizia delle credenziali memorizzate nella cache:[3]
<script>document.execCommand('ClearAuthenticationCache', 'false');</script>
Protocollo
[modifica | modifica wikitesto]Lato server
[modifica | modifica wikitesto]Quando il server vuole richiedere un'autenticazione, può inviare una richiesta. Questa richiesta può essere espressa utilizzando il codice HTTP 401 come risposta[4] contenente un header HTTP chiamato WWW-Authenticate.[5]
L'header WWW-Authenticate per l'autenticazione basic è costruito in questo modo:[6]
WWW-Authenticate: Basic realm="''inserire realm''"
Lato client
[modifica | modifica wikitesto]Quando il client vuole inviare le proprie credenziali d'accesso può utilizzare l'header HTTP Authorization.[7]
L'header Authorization è costruito in questo modo:[7]
- Username e password sono uniti nella stringa "username:password"
- Il risultato è codificato con base64
- Il metodo di autorizzazione (basic) e uno spazio sono inseriti all'inizio della stringa codificata.
Ad esempio, se il client utilizza 'Aladdin' come username e 'open sesame' come password, l'header è formato nel seguente modo:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Note
[modifica | modifica wikitesto]- ^ Basic Authentication, su technet.microsoft.com, Microsoft, 2005. URL consultato il 15 marzo 2013.
- ^ Is there a browser equivalent to IE's ClearAuthenticationCache?, su stackoverflow.com, StackOverflow. URL consultato il 15 marzo 2013.
- ^ IDM_CLEARAUTHENTICATIONCACHE command identifier, su msdn.microsoft.com, Microsoft. URL consultato il 15 marzo 2013.
- ^ RFC 1945 - Hypertext Transfer Protocol - HTTP/1.0
- ^ RFC 1945 - Hypertext Transfer Protocol - HTTP/1.0
- ^ RFC 1945 - Hypertext Transfer Protocol - HTTP/1.0
- ^ a b RFC 1945 - Hypertext Transfer Protocol - HTTP/1.0