Заголовок авторизации OAuth 2.0


91

Я хочу разработать SDK, включающий функции OAuth 2.0. Я проверил различия между OAuth 1.0 и 2.0, и у меня есть некоторая путаница с заголовком авторизации ( 1.0 и 2.0 ), параметры протокола OAuth 1.0 могут быть переданы с использованием заголовка HTTP «Авторизация», но я не могу найти это описано в текущем Проект OAuth 2.0.

Поддерживает ли OAuth 2.0 заголовки авторизации?

В OAuth 1.0 ваш заголовок будет выглядеть так:

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"

Не отвечаете на ваш вопрос, но уже существует ряд библиотек OpenId и OAuth. Вы уверены, что хотите заново изобрести колесо?
Kane

Привет, Кейн, я не разрабатываю SDK для OAuth, мне просто нужна какая-то функция OAuth в моем SDK, поэтому я не хочу вводить третью библиотеку.
JKhuang

Ответы:


205

Для тех, кто ищет пример того, как передать авторизацию OAuth2 (токен доступа) в заголовке (в отличие от использования параметра запроса или тела), вот как это делается:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

32
Для всех, кто сталкивался с этой веткой, пытающейся использовать заголовок авторизации с cURL, вот команда: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G

5
Быстрый вопрос, поскольку я продолжаю видеть ответы, подобные этому, но без пояснений: если я делаю это в коде (через HTTPRequest API), я добавляю заголовки в свой запрос с именем заголовка и связанным полем данных. В этом ответе какая часть является названием заголовка, а какая - данными? То есть заголовок Authorization: Bearerс 0b...42данными или заголовок Authorization:с Bearer 0b...42данными или что? Благодарность! (Кстати, я Oauth2, если это имеет значение.)
Оли

9
Authorization- это имя заголовка, двоеточие отделяет имя от значения во всех заголовках согласно разделу 4.2 RFC2616 .
Рик Мак Гиллис,

35

Вы по-прежнему можете использовать заголовок авторизации с OAuth 2.0. В заголовке авторизации указан тип носителя для использования с токенами носителя OAuth (что означает, что клиентское приложение просто должно представить («перенести») маркер). Значение заголовка - это токен доступа, полученный клиентом от сервера авторизации.

Это задокументировано в этой спецификации: https://tools.ietf.org/html/rfc6750#section-2.1

Например:

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

Где mF_9.B5f-4.1JqM - ваш токен доступа OAuth.


OAuth 2.0 документирует два типа токенов доступа в качестве примеров: носитель и MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds

1
К сожалению, MAC никогда не был полностью стандартизован (см. Просроченный черновик спецификации: tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) и на практике не используется.
Скотт Т.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.