2011-10-20 21 views
5

Qualcuno può spiegare come funziona l'autenticazione http://user:[email protected]? Il browser invia l'intestazione Authorization con user:pass codificata in base 64?Come funziona l'autenticazione http: // utente: [email protected]?

Ho aperto la console di rete negli strumenti di sviluppo di Chrome e quando faccio richiesta come http://user:[email protected] non vedo l'intestazione Authorization aggiunta.

Sono davvero curioso di sapere come il browser invia la password nel caso io usi user:[email protected] di fronte a un URL.

+3

Sono solo le intestazioni di autorizzazione. Non so come faccia Chrome, ma con Firefox controlla se il sito chiede l'autenticazione (nella richiesta) e se non lo è, ti avverte che "Stai per accedere al sito" StackOverflow. com "con il nome utente" utente ", ma il sito Web non richiede l'autenticazione. Questo potrebbe essere un tentativo di ingannarti. Is "stackoverflow.com" il sito che si desidera visitare? 'E poi è uno [Sì] taglia i dettagli auth o [No] interrompe la richiesta. Quindi, a meno che tu non abbia un sito con l'autorizzazione a portata di mano, tu * non vedrai le intestazioni. –

risposta

3

Per ispezionare le intestazioni, è necessario eseguire il test su un server che richiede l'autenticazione. Il client non invierà alcuna intestazione Authorization fino a quando il server non lo richiederà poiché il client non saprà quale metodo di autenticazione richiede il server (base o digest).


autenticazione HTTP è fatto in due richieste:

In primo luogo, un annuncio senza nessun Authorization intestazione viene inviato. Il server risponde quindi con un WWW-Authenticate che indica al client come autenticarsi. Questo include un nome di dominio e un metodo di autenticazione (anche questo è di base o digest)

Il client invia quindi una nuova richiesta con un'intestazione aggiuntiva Authorization. Nel caso di basic authentication, questa intestazione è a soli user:pass Base64 codificati, proprio come si sta dicendo:

Authorization: Basic dXNlcjpwYXNz 

Ora la password è visibile in transito, a meno che non si utilizza HTTPS. Un'opzione migliore è digest authentication, in cui i contenuti di entrambi gli aspetti WWW-Authenticate e Authorization vengono spiegati meglio con lo wikipedia article. :)

Problemi correlati