Basic access authentication
# Basic access authentication

Nel contesto di una transazione HTTP, basic access authentication è un metodo per fornire credenziali di accesso tra client e server.

## Caratteristiche

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

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.

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:

Sfortunatamente, questo comportamento non è utilizzabile nei diversi browser né nelle differenti versioni. Microsoft Internet Explorer offre un metodo JavaScript dedicato alla pulizia delle credenziali memorizzate nella cache:

## Protocollo

### Lato server

Quando il server vuole richiedere un'autenticazione, può inviare una richiesta. Questa richiesta può essere espressa utilizzando il codice HTTP 401 come risposta contenente un header HTTP chiamato WWW-Authenticate.

L'header WWW-Authenticate per l'autenticazione basic è costruito in questo modo:

### Lato client

Quando il client vuole inviare le proprie credenziali d'accesso può utilizzare l'header HTTP Authorization.

L'header Authorization è costruito in questo modo:

* 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:

