Intestazione autorizzazione OAuth 2.0


91

Voglio sviluppare un SDK che incapsuli le funzioni di OAuth 2.0. Ho verificato le differenze tra OAuth 1.0 e 2.0 e ho un po 'di confusione su Authorization Header ( 1.0 e 2.0 ), i parametri del protocollo OAuth 1.0 possono essere trasmessi utilizzando l'intestazione HTTP "Authorization", ma non riesco a trovarlo descritto nella corrente Bozza OAuth 2.0.

OAuth 2.0 supporta le intestazioni di autorizzazione?

In OAuth 1.0, la tua intestazione sarebbe simile a:

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"

Non rispondo alla tua domanda ma ci sono già un certo numero di librerie OpenId e OAuth là fuori, sei sicuro di voler reinventare la ruota?
Kane

Ciao Kane, non sto sviluppando SDK per OAuth, ho solo bisogno di alcune funzioni OAuth nel mio SDK, quindi non voglio introdurre una libreria di terze parti.
JKhuang

Risposte:


205

Per coloro che cercano un esempio di come passare l'autorizzazione OAuth2 (token di accesso) nell'intestazione (invece di utilizzare una richiesta o un parametro body), ecco come è fatto:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

32
Per chiunque si sia imbattuto in questo thread cercando di utilizzare l'intestazione di autorizzazione con cURL, ecco il comando: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G

5
Domanda veloce, poiché continuo a vedere risposte come questa, ma senza il chiarimento: se lo faccio in codice (tramite HTTPRequest API), aggiungo intestazioni alla mia richiesta con un nome di intestazione e un campo dati associato. In questa risposta, quale parte è il nome dell'intestazione e quali i dati? Cioè, è l'intestazione Authorization: Bearercon 0b...42i dati, o è l'intestazione Authorization:con Bearer 0b...42quanto i dati, o cosa? Grazie! (A proposito, sono Oauth2, se è importante.)
Olie

9
Authorizationè il nome dell'intestazione, i due punti separano il nome dal valore in tutte le intestazioni secondo la sezione 4.2 di RFC2616 .
Rick Mac Gillis

35

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

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

Per esempio:

   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.


OAuth 2.0 documenta due tipi di token di accesso come esempi: Bearer e MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds

1
Purtroppo il MAC non è mai stato completamente standardizzato (vedere la bozza delle specifiche scadute : tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) e non viene utilizzato nella pratica.
Scott T.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.