2012-06-17 2 views
64

Je souhaite développer un SDK qui encapsule les fonctions OAuth 2.0. J'ai vérifié les différences entre OAuth 1.0 & 2.0, et j'ai une certaine confusion sur l'entête d'autorisation (1.0 et 2.0), les paramètres de protocole d'OAuth 1.0 peuvent être transmis en utilisant l'en-tête HTTP "d'autorisation", mais je ne peux pas trouver ceci décrit dans projet actuel OAuth 2.0.En-tête d'autorisation OAuth 2.0

OAuth 2.0 prend-il en charge les en-têtes d'autorisation?

Dans OAuth 1.0 votre tête ressemblerait à ceci:

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

Ne pas répondre à votre question, mais il existe déjà un certain nombre de bibliothèques OpenId et OAuth, êtes-vous sûr de vouloir réinventer la roue? – Kane

+0

Salut Kane, Je ne développe pas SDK pour OAuth, j'ai juste besoin de la fonction OAuth dans mon SDK, donc je ne veux pas introduire la bibliothèque de la troisième partie. – JKhuang

Répondre

20

Vous pouvez toujours utiliser l'en-tête d'autorisation avec OAuth 2.0. Il existe un type de support spécifié dans l'en-tête Authorization pour être utilisé avec les jetons de support OAuth (ce qui signifie que l'application cliente doit simplement présenter ("supporter") le jeton). La valeur de l'en-tête est le jeton d'accès que le client a reçu du serveur d'autorisation.

Il est documenté dans cette spécification: https://tools.ietf.org/html/rfc6750#section-2.1

.: par exemple

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

mF_9.B5f-4.1JqM est votre jeton d'accès OAuth.

138

Pour ceux qui recherchent un exemple de la façon de passer l'autorisation de OAuth2 (jeton d'accès) dans l'en-tête (par opposition à l'aide d'une demande ou d'un paramètre de corps), voici comment faire:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 
+26

Pour tous ceux qui sont tombés sur ce sujet en essayant d'utiliser l'en-tête Authorization avec cURL, voici la commande: curl -H Autorisation: Bearer $ ACCESS_TOKEN "URI' – ChitownDev

+4

Question rapide, car je continue à voir des réponses comme celle-ci, mais sans la clarification: si je le fais en code (via l'API HTTPRequest), j'ajoute des en-têtes à ma requête avec un nom d'en-tête et un champ de données associé. Dans cette réponse, quelle partie est le nom de l'en-tête, et quelles sont les données? Autrement dit, l'en-tête 'Authorization: Bearer' avec' 0b ... 42' comme données, ou l'en-tête 'Authorization:' avec 'Bearer 0b ... 42' comme données, ou quoi? Merci! (Btw, je suis Oauth2, si c'est important.) – Olie

+5

«Autorisation» est le nom d'en-tête, le signe deux-points sépare le nom de la valeur de tous les en-têtes conformément à [la section 4.2 de RFC2616] (http: //docs.huihoo. com/http/rfc2616-http-1.1/rfc2616-sec4.html). –