2012-06-17 1 views
64

Desidero sviluppare un SDK che incapsuli le funzioni di OAuth 2.0. Ho verificato le differenze tra OAuth 1.0 & 2.0 e ho un po 'di confusione nell'intestazione di autorizzazione (1.0 e 2.0), i parametri del protocollo OAuth 1.0 possono essere trasmessi utilizzando l'intestazione HTTP "Autorizzazione", ma non riesco a trovare ciò descritto in corrente bozza OAuth 2.0.OAuth 2.0 Header di autorizzazione

OAuth 2.0 supporta le intestazioni di autorizzazione?

In OAuth 1.0 l'intestazione sarà simile:

Authorization: OAuth realm="Example", 
    oauth_consumer_key="0685bd9184jfhq22", 
    oauth_token="ad180jjd733klru7", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", 
    oauth_timestamp="137131200", 
    oauth_nonce="4572616e48616d6d65724c61686176", 
    oauth_version="1.0" 
+0

rispondere la tua domanda ma ci sono già un certo numero di librerie OpenId e OAuth, sei sicuro di voler reinventare la ruota? – Kane

+0

Ciao Kane, non sto sviluppando l'SDK per OAuth, ho solo bisogno di qualche funzione OAuth nel mio SDK, quindi non voglio introdurre la libreria di terze parti. – JKhuang

risposta

20

È comunque possibile utilizzare l'intestazione di autorizzazione con OAuth 2.0. Esiste un tipo di portatore specificato nell'intestazione Autorizzazione da utilizzare con token bearer OAuth (ovvero l'app client deve semplicemente presentare ("bear") il token). Il valore dell'intestazione è il token di accesso che il client ha ricevuto dal server di autorizzazione.

è documentato in questa spec: https://tools.ietf.org/html/rfc6750#section-2.1

Es .:

GET /resource HTTP/1.1 
    Host: server.example.com 
    Authorization: Bearer mF_9.B5f-4.1JqM 

Dove mF_9.B5f-4.1JqM è il tuo token di accesso OAuth.

138

Per chi cerca un esempio di come passare l'autorizzazione OAuth2 (token di accesso) nell'intestazione (anziché utilizzare una richiesta o un parametro del corpo), ecco come si fa:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 
Non
+26

Per chi si è imbattuto in questa discussione cercando di utilizzare l'intestazione di autorizzazione con cURL, ecco il comando: "curl -H" Autorizzazione: Bearer $ ACCESS_TOKEN "URI' – ChitownDev

+4

Domanda veloce, come continuo a vedere risposte come questa, ma senza il chiarimento: se sto facendo questo in codice (tramite HTTPRequest API), aggiungo le intestazioni alla mia richiesta con un nome-intestazione e un campo dati associato. In questa risposta, quale parte è il nome dell'intestazione e quali i dati? Cioè, l'intestazione 'Autorizzazione: Bearer' con' 0b ... 42' come dato, oppure l'intestazione 'Autorizzazione:' con 'Bearer 0b ... 42' come dati, o cosa? Grazie! (Btw, I'm Oauth2, se è importante.) – Olie

+5

'Autorizzazione' è il nome dell'intestazione, il colon separa il nome dal valore in tutte le intestazioni come da [sezione 4.2 di RFC2616] (http: //docs.huihoo. com/http/RFC2616-http-1.1/RFC2616-sec4.html). –