Autenticazione di accesso di base - Basic access authentication

Nel contesto di una transazione HTTP , l'autenticazione dell'accesso di base è un metodo per un agente utente HTTP (ad esempio un browser Web ) per fornire un nome utente e una password quando effettua una richiesta. Nell'autenticazione HTTP di base, una richiesta contiene un campo di intestazione nella forma di Authorization: Basic <credentials>, dove le credenziali sono la codifica Base64 di ID e password uniti da un singolo colon :.

È specificato nella RFC  7617 del 2015, che rende obsoleta la RFC  2617 del 1999.

Caratteristiche

L'implementazione dell'autenticazione HTTP di base (BA) è la tecnica più semplice per imporre controlli di accesso alle risorse Web perché non richiede cookie , identificatori di sessione o pagine di accesso; piuttosto, l'autenticazione HTTP Basic utilizza campi standard nell'intestazione HTTP .

Sicurezza

Il meccanismo BA non fornisce protezione della riservatezza per le credenziali trasmesse. Sono semplicemente codificati con Base64 in transito e non crittografati o con hash in alcun modo. Pertanto, l'autenticazione di base viene in genere utilizzata insieme a HTTPS per garantire la riservatezza.

Poiché il campo BA deve essere inviato nell'intestazione di ogni richiesta HTTP, il browser Web deve memorizzare nella cache le credenziali per un periodo di tempo ragionevole per evitare di richiedere costantemente all'utente il nome utente e la password. La politica di memorizzazione nella cache differisce tra i browser.

HTTP non fornisce un metodo per un server Web per indicare al client di "disconnettersi" dall'utente. Tuttavia, esistono diversi metodi per cancellare le credenziali memorizzate nella cache in alcuni browser Web. Uno di questi è reindirizzare l'utente a un URL sullo stesso dominio, utilizzando credenziali intenzionalmente errate. Tuttavia, questo comportamento è incoerente tra i vari browser e le versioni del browser. Microsoft Internet Explorer offre un metodo JavaScript dedicato per cancellare le credenziali memorizzate nella cache:

<script>document.execCommand('ClearAuthenticationCache');</script>

Nei browser moderni, le credenziali memorizzate nella cache per l'autenticazione di base vengono in genere cancellate quando si cancella la cronologia di navigazione. La maggior parte dei browser consente agli utenti di cancellare in modo specifico solo le credenziali, anche se l'opzione potrebbe essere difficile da trovare e in genere cancella le credenziali per tutti i siti visitati.

Protocollo

Lato server

Quando il server vuole che l'agente utente si autentichi verso il server dopo aver ricevuto una richiesta non autenticata, deve inviare una risposta con una riga di stato HTTP 401 Non autorizzato e un campo di intestazione WWW-Authenticate .

Il campo di intestazione WWW-Authenticate per l'autenticazione di base è costruito come segue:

WWW-Authenticate: Basic realm="User Visible Realm"

Il server può scegliere di includere il parametro charset da RFC  7617 :

WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"

Questo parametro indica che il server si aspetta che il client utilizzi UTF-8 per codificare nome utente e password (vedi sotto).

Dalla parte del cliente

Quando l'agente utente desidera inviare le credenziali di autenticazione al server, può utilizzare il campo di intestazione Autorizzazione .

Il campo di intestazione Autorizzazione è costruito come segue:

  1. Il nome utente e la password sono combinati con i due punti (:). Ciò significa che il nome utente stesso non può contenere i due punti.
  2. La stringa risultante viene codificata in una sequenza di ottetti. Il set di caratteri da utilizzare per questa codifica non è specificato per impostazione predefinita, purché sia ​​compatibile con US-ASCII, ma il server potrebbe suggerire l'uso di UTF-8 inviando il parametro charset .
  3. La stringa risultante viene codificata utilizzando una variante di Base64 (+/ e con padding).
  4. Alla stringa codificata viene quindi anteposto il metodo di autorizzazione e uno spazio (ad es. "Basic").

Ad esempio, se il browser utilizza Aladdin come nome utente e open sesame come password, il valore del campo è la codifica Base64 di Aladdin:open sesame o QWxhZGRpbjpvcGVuIHNlc2FtZQ== . Quindi il campo di intestazione Autorizzazione apparirà come:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Guarda anche

Riferimenti e note

link esterno