Nagłówek autoryzacji OAuth 2.0

91

Chcę opracować zestaw SDK zawierający funkcje protokołu OAuth 2.0. Sprawdziłem różnice między OAuth 1.0 i 2.0 i mam pewne zamieszanie co do nagłówka autoryzacji ( 1.0 i 2.0 ), parametry protokołu OAuth 1.0 można przesyłać za pomocą nagłówka HTTP „Authorization”, ale nie mogę znaleźć tego opisanego w aktualnych Wersja robocza OAuth 2.0.

Czy OAuth 2.0 obsługuje nagłówki autoryzacji?

W OAuth 1.0 nagłówek wyglądałby tak:

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
źródło
Nie odpowiadając na Twoje pytanie, ale istnieje już wiele bibliotek OpenId i OAuth, czy na pewno chcesz ponownie wymyślić koło?
Kane
Cześć Kane, nie tworzę SDK dla OAuth, potrzebuję tylko funkcji OAuth w moim SDK, więc nie chcę wprowadzać biblioteki trzeciej części.
JKhuang,

Odpowiedzi:

205

Dla tych, którzy szukają przykładu, jak przekazać autoryzację OAuth2 (token dostępu) w nagłówku (w przeciwieństwie do używania żądania lub parametru treści), oto jak to zrobić:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
Jonathan
źródło
32
Dla każdego, kto natknął się na ten wątek, próbując użyć nagłówka autoryzacji z cURL, oto polecenie: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G
5
Szybkie pytanie, ponieważ ciągle widzę odpowiedzi takie jak ta, ale bez wyjaśnienia: jeśli robię to w kodzie (przez HTTPRequest API), dodaję nagłówki do mojego żądania z nazwą nagłówka i powiązanym polem danych. W tej odpowiedzi, która część jest nazwą nagłówka, a która danymi? To znaczy, czy nagłówek Authorization: Bearerzawiera 0b...42dane, czy też nagłówek Authorization:zawiera Bearer 0b...42dane, czy co? Dzięki! (Przy okazji, jestem Oauth2, jeśli to ma znaczenie.)
Olie
9
Authorizationto nazwa nagłówka, dwukropek oddziela nazwę od wartości we wszystkich nagłówkach, zgodnie z sekcją 4.2 dokumentu RFC2616 .
Rick Mac Gillis
35

Nadal możesz używać nagłówka Authorization z OAuth 2.0. W nagłówku Authorization określono typ okaziciela do użytku z tokenami okaziciela OAuth (co oznacza, że ​​aplikacja kliencka musi po prostu przedstawić („nosić”) token). Wartością nagłówka jest token dostępu, który klient otrzymał od serwera autoryzacji.

Jest to udokumentowane w tej specyfikacji: https://tools.ietf.org/html/rfc6750#section-2.1

Na przykład:

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

Gdzie mF_9.B5f-4.1JqM to Twój token dostępu OAuth.

Scott T.
źródło
OAuth 2.0 dokumentach dwa typy token dostępu jako przykłady: okaziciela i MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds
1
Niestety MAC nigdy nie został w pełni ustandaryzowany (patrz wygasła wersja robocza specyfikacji: tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) i nie jest używany w praktyce.
Scott T.