2011-11-25 10 views
23

L'OAuth draft 2.0 v2-22 Sezione 3.2 dice:I client devono ricevere i token di accesso OAuth 2 utilizzando GET o POST?

Il client deve utilizzare il metodo HTTP "POST" quando si effettua token di accesso richieste.

Tuttavia, se si guardano le implementazioni Facebook e Foursquare OAuth2, chiedono ai clienti di fare una semplice richiesta GET per richiedere un token di accesso. Chiedono ai clienti di inserire client_id e client_secret nell'URL.

Sto costruendo un server OAuth 2 e dopo aver visto le implementazioni di Facebook e Foursquare, sto seriamente considerando anche di rompere il protocollo per consentire ai client di richiedere il token di accesso tramite GET. La comunicazione del mio sito utilizza SSL, simile a Facebook e Foursquare.

Quindi la mia domanda è questa: ci sono dei buoni motivi per cui non dovrei consentire ai client di richiedere i token di accesso tramite il metodo GET su HTTPS?

risposta

9

L'argomento più comune è che non si devono inserire informazioni sensibili in una stringa di query (parametro GET) poiché i server Web in genere registrano l'URL di richiesta HTTP. I dati POST possono essere arbitrariamente lunghi, quindi di solito non vengono registrati. Quindi quando hai a che fare con qualcosa come client_secret o codice (anche se è un uso singolo), ha senso averlo passato nel payload POST.

IMHO, se si sta utilizzando un flusso OAuth 2.0 che non richiede client_secret (o lo si inserisce nell'intestazione dell'autorizzazione HTTP, come raccomandato) - Non vedo alcun problema nel consentire GET.

+0

Buon punto sui registri del server, ma per Oauth2, archiviamo client_id e client_key in testo normale sul nostro server comunque, quindi se questa informazione è nei nostri log del server questo è davvero molto peggio di quanto già esistente nel nostro database? – Spike

+0

concordato - è circa lo stesso allora. Se il server web e il tuo OAuth AS sono entrambi sotto i tuoi controlli, non è un grosso problema per GET IMHO. –

Problemi correlati