Passa al contenuto principale

RFC 2617 - Autenticazione HTTP: Autenticazione di accesso di base e digest

Data di pubblicazione: Giugno 1999
Stato: Standard Internet
Autori: J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart
Rende obsoleto: RFC 2069
Reso obsoleto da: RFC 7235, RFC 7615, RFC 7616, RFC 7617


Sommario (Abstract)

"HTTP/1.0" include la specifica per uno schema di autenticazione di accesso di base (Basic Access Authentication Scheme). Questo schema non è considerato un metodo sicuro di autenticazione degli utenti (a meno che non venga utilizzato in combinazione con qualche sistema sicuro esterno come SSL), poiché il nome utente e la password vengono trasmessi sulla rete in chiaro.

Questo documento fornisce anche la specifica per il framework di autenticazione (Authentication Framework) HTTP, lo schema di autenticazione di base originale e uno schema basato su hash crittografici, denominato "Autenticazione di accesso digest" (Digest Access Authentication). Pertanto, è anche destinato a servire come sostituto per RFC 2069. Alcuni elementi opzionali specificati da RFC 2069 sono stati rimossi da questa specifica a causa di problemi riscontrati dopo la sua pubblicazione; altri nuovi elementi sono stati aggiunti per compatibilità, questi nuovi elementi sono stati resi opzionali, ma sono fortemente raccomandati.

Come l'autenticazione di base (Basic), l'autenticazione di accesso digest (Digest Access Authentication) verifica che entrambe le parti di una comunicazione conoscano un segreto condiviso (una password); a differenza dell'autenticazione di base, questa verifica può essere effettuata senza inviare la password in chiaro, che è la più grande debolezza dell'autenticazione di base. Come per la maggior parte degli altri protocolli di autenticazione, le maggiori fonti di rischio si trovano solitamente non nel protocollo principale stesso, ma nelle politiche e procedure che ne circondano l'uso.


Stato di questo documento (Status of this Memo)

Questo documento specifica un protocollo standard Internet per la comunità Internet e richiede discussioni e suggerimenti per miglioramenti. Si prega di fare riferimento all'edizione corrente degli "Internet Official Protocol Standards" (STD 1) per lo stato di standardizzazione e lo status di questo protocollo. La distribuzione di questo documento è illimitata.


Indice (Table of Contents)


Concetti fondamentali

Due schemi di autenticazione

1. Autenticazione di base (Basic Authentication)

  • Principio: Nome utente e password inviati codificati in Base64
  • Formato: Authorization: Basic base64(username:password)
  • Sicurezza: ⚠️ Trasmissione in chiaro, non sicura (a meno di usare HTTPS)
  • Casi d'uso: Applicazioni semplici, sistemi interni, combinato con HTTPS

2. Autenticazione digest (Digest Authentication)

  • Principio: Utilizza hash MD5, la password non viene trasmessa in chiaro
  • Formato: Include nonce, realm, qop e altri parametri
  • Sicurezza: ✅ Più sicuro dell'autenticazione di base, ma HTTPS comunque raccomandato
  • Casi d'uso: Autenticazione HTTP che richiede maggiore sicurezza

Flusso di autenticazione

Client                                  Server
| |
|------- 1. Richiesta risorsa -------->|
| protetta |
| |
|<------ 2. 401 + WWW-Authenticate ----|
| (sfida) |
| |
|------- 3. Header Authorization ----->|
| (credenziali) |
| |
|<------ 4. 200 OK + risorsa ----------|
| |

Codici di stato HTTP

  • 401 Unauthorized: Autenticazione richiesta
  • 407 Proxy Authentication Required: Autenticazione proxy richiesta

Header HTTP principali

  • WWW-Authenticate: Sfida inviata dal server
  • Authorization: Credenziali inviate dal client
  • Authentication-Info: Informazioni di autenticazione opzionali
  • Proxy-Authenticate: Sfida dal server proxy
  • Proxy-Authorization: Credenziali inviate al proxy

Esempi

Esempio di autenticazione di base

Risposta del server:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"

Richiesta del client:

GET /private/index.html HTTP/1.1
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Esempio di autenticazione digest

Risposta del server:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="[email protected]",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"

Richiesta del client:

GET /dir/index.html HTTP/1.1
Authorization: Digest username="Mufasa",
realm="[email protected]",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
uri="/dir/index.html",
qop=auth,
nc=00000001,
cnonce="0a4f113b",
response="6629fae49393a05397450978507c4ef1",
opaque="5ccc069c403ebaf9f0171e9517f40e41"

Risorse correlate

  • Testo ufficiale: RFC 2617 (TXT)
  • Pagina ufficiale: RFC 2617 DataTracker
  • Rende obsoleto: RFC 2069
  • Reso obsoleto da:
    • RFC 7235 (HTTP/1.1 Authentication)
    • RFC 7615 (HTTP Authentication-Info)
    • RFC 7616 (HTTP Digest Access Authentication)
    • RFC 7617 (HTTP Basic Authentication)

Avviso di sicurezza ⚠️

  1. L'autenticazione di base non è sicura: deve essere utilizzata con HTTPS
  2. L'autenticazione digest ha limitazioni: sebbene migliore dell'autenticazione di base, HTTPS è comunque raccomandato
  3. Alternative moderne: considerare l'uso di OAuth 2.0, JWT o altri meccanismi di autenticazione moderni
  4. Memorizzazione delle password: i server dovrebbero memorizzare le password utilizzando hash salati

Avviso importante: RFC 2617 è stato reso obsoleto da RFC 7235, 7616, 7617 e altri. Le applicazioni moderne dovrebbero fare riferimento a questi standard aggiornati, o utilizzare framework di autenticazione moderni come OAuth 2.0.