2011-11-14 11 views
10

Ho un endpoint API https://www.example.com/api/authentication che accetta nome utente e password come input e restituisce un token di autenticazione.Perché dovrei usare l'autenticazione di base HTTP invece dei parametri di username e password post?

In termini di passaggio username e password, ho due opzioni (almeno), vale a dire:

  1. autenticazione HTTP di base (che passa le credenziali come parte di intestazioni HTTP)
  2. parametri POST HTTP

Capisco che nessuno dei due metodi fornisce crittografia (da qui l'uso di HTTPS/SSL). Capisco anche perché l'utilizzo di HTTP GET sia una cattiva idea.

C'è qualche differenza reale (a parte il fatto che l'autenticazione di base si sente più idiomatica) tra i due metodi?

+0

Non credo che ci sia alcuna (vera) differenza, buona domanda anche se – inspite

risposta

5

La differenza è che l'autenticazione di base è uno schema di richiesta/risposta ben specificato che tutti i browser comprendono ed è il server che lo avvia dicendo a un client che richiede un'autenticazione (di base) per un dominio. Questo fa sì che il browser mostri all'utente un popup per inserire un nome/password che poi passa nelle intestazioni come descritto.

Nel tuo secondo esempio devi fare tutto ciò nel modo personalizzato e creare il tuo modulo di login per l'utente (ecc.).

Se si sottrae questo processo al passaggio singolo del nome utente/password dal client al server, devo convenire che non c'è molta differenza, ma l'autenticazione di base implica un po 'più di quello.

+0

Non l'avevo considerato poiché ho a che fare con client non-browser. Ottima risposta – Frank

+2

Attenzione: il problema molto significativo è che è molto difficile far disconnettere il browser una volta che l'utente ha autenticato correttamente. Su alcuni browser è necessario chiudere ogni singola istanza del browser. IE ha i mezzi adeguati per disconnettersi vedi: http://stackoverflow.com/questions/31326/is-there-a-browser-equivalent-to-ies-clearauthenticationcache/8497804#8497804 ma altri browser no. – AnthonyVO

1

HTTP L'implementazione dell'autenticazione di base è la tecnica più semplice per applicare i controlli di accesso alle risorse Web perché non richiede cookie, identificativi di sessione o pagine di accesso; piuttosto, l'autenticazione HTTP Basic utilizza campi standard nell'intestazione HTTP, ovviando alla necessità di stringere la mano.

Problemi correlati