Заголовок авторизации 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"
JKhuang
источник
Не отвечаете на ваш вопрос, но уже существует ряд библиотек 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 ) и на практике не используется.
Скотт Т.