OAuth 2.0-Autorisierungsheader

91

Ich möchte ein SDK entwickeln, das die OAuth 2.0-Funktionen kapselt. Ich habe die Unterschiede zwischen OAuth 1.0 und 2.0 überprüft und habe einige Verwirrung hinsichtlich des Autorisierungsheaders ( 1.0 und 2.0 ). Die OAuth 1.0-Protokollparameter können mithilfe des HTTP-Headers "Authorization" übertragen werden, aber ich kann dies derzeit nicht finden OAuth 2.0 Entwurf.

Unterstützt OAuth 2.0 Autorisierungsheader?

In OAuth 1.0 würde Ihr Header folgendermaßen aussehen:

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"
JKhuang
quelle
Sie beantworten Ihre Frage nicht, aber es gibt bereits eine Reihe von OpenId- und OAuth-Bibliotheken. Sind Sie sicher, dass Sie das Rad neu erfinden möchten?
Kane
Hallo Kane, ich entwickle kein SDK für OAuth. Ich benötige nur eine OAuth-Funktion in meinem SDK, daher möchte ich keine Bibliothek für den dritten Teil einführen.
JKhuang

Antworten:

205

Für diejenigen, die nach einem Beispiel suchen, wie die OAuth2-Autorisierung (Zugriffstoken) im Header übergeben wird (im Gegensatz zur Verwendung eines Anforderungs- oder Body-Parameters), gehen Sie wie folgt vor:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
Jonathan
quelle
32
Für alle, die auf diesen Thread gestoßen sind und versucht haben, den Autorisierungsheader mit cURL zu verwenden, ist hier der Befehl: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G
5
Kurze Frage, da ich immer wieder Antworten wie diese sehe, aber ohne die Klarstellung: Wenn ich dies im Code mache (über die HTTPRequest-API), füge ich meiner Anfrage Header mit einem Headernamen und einem zugehörigen Datenfeld hinzu. Welcher Teil ist in dieser Antwort der Name des Headers und welcher die Daten? Das heißt, ist der Header Authorization: Bearermit 0b...42als Daten, oder der Header Authorization:mit Bearer 0b...42als Daten, oder was? Vielen Dank! (Übrigens bin ich Oauth2, wenn es darauf ankommt.)
Olie
9
AuthorizationIst der Headername , trennt der Doppelpunkt den Namen vom Wert in allen Headern gemäß Abschnitt 4.2 von RFC2616 .
Rick Mac Gillis
35

Sie können den Authorization-Header weiterhin mit OAuth 2.0 verwenden. Im Authorization-Header ist ein Bearer-Typ für die Verwendung mit OAuth-Bearer-Token angegeben (dh die Client-App muss das Token lediglich präsentieren ("bear")). Der Wert des Headers ist das Zugriffstoken, das der Client vom Autorisierungsserver erhalten hat.

Es ist in dieser Spezifikation dokumentiert: https://tools.ietf.org/html/rfc6750#section-2.1

Z.B:

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

Wobei mF_9.B5f-4.1JqM Ihr OAuth-Zugriffstoken ist.

Scott T.
quelle
OAuth 2.0 dokumentiert zwei Zugriffstoken-Typen als Beispiele: Bearer und MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds
1
Leider war MAC nie vollständig standardisiert (siehe abgelaufene Entwurfsspezifikation: tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) und wird in der Praxis nicht verwendet.
Scott T.