Заголовок авторизації 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, ви впевнені, що хочете заново винайти колесо?
Кейн,

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

Відповіді:


205

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

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

32
Для тих, хто стикався з цією ланцюжком, намагаючись використовувати заголовок авторизації з cURL, ось команда: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G

5
Швидке запитання, оскільки я постійно бачу відповіді, подібні до цього, але без роз’яснень: якщо я роблю це в коді (через API HTTPRequest), я додаю заголовки до мого запиту із заголовком імені та пов’язаного поля даних. У цій відповіді, яка частина є назвою заголовка, а які дані? Тобто, заголовок Authorization: Bearerз 0b...42як дані, чи заголовок Authorization:з Bearer 0b...42як дані, чи що? Дякую! (До речі, я Oauth2, якщо це важливо.)
Олі

9
Authorization- це назва заголовка, двокрапка відокремлює назву від значення у всіх заголовках відповідно до розділу 4.2 RFC2616 .
Рік Мак Гілліс,

35

Ви все ще можете використовувати заголовок авторизації з OAuth 2.0. У заголовку «Авторизація» вказано тип «Bearer» для використання з маркерами-носіями 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.