Header Otorisasi OAuth 2.0

91

Saya ingin mengembangkan SDK yang merangkum fungsi OAuth 2.0. Saya telah memeriksa perbedaan antara OAuth 1.0 & 2.0, dan saya memiliki beberapa kebingungan pada Header Otorisasi ( 1.0 dan 2.0 ), parameter protokol OAuth 1.0 dapat dikirim menggunakan HTTP "Otorisasi" header, tetapi saya tidak dapat menemukan ini dijelaskan dalam arus Draf OAuth 2.0.

Apakah OAuth 2.0 mendukung header otorisasi?

Di OAuth 1.0 header Anda akan terlihat seperti:

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
sumber
Tidak menjawab pertanyaan Anda tetapi sudah ada sejumlah pustaka OpenId dan OAuth di luar sana, apakah Anda yakin ingin menciptakan kembali roda?
Kane
Hai Kane, saya tidak mengembangkan SDK untuk OAuth, saya hanya perlu beberapa fungsi OAuth di SDK saya, jadi saya tidak ingin memperkenalkan pustaka bagian ketiga.
JKhuang

Jawaban:

205

Bagi mereka yang mencari contoh cara meneruskan otorisasi OAuth2 (token akses) di header (sebagai lawan menggunakan parameter permintaan atau badan), berikut adalah cara melakukannya:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
Jonathan
sumber
32
Bagi siapa pun yang menemukan utas ini mencoba menggunakan Header Otorisasi dengan cURL, Berikut perintahnya: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G
5
Pertanyaan singkat, karena saya terus melihat jawaban seperti ini, tetapi tanpa klarifikasi: jika saya melakukan ini dalam kode (melalui HTTPRequest API), saya menambahkan header ke permintaan saya dengan nama header dan bidang data terkait. Dalam jawaban ini, bagian mana yang merupakan nama header, dan datanya? Artinya, apakah header Authorization: Bearerdengan 0b...42sebagai data, atau header Authorization:dengan Bearer 0b...42sebagai datanya, atau apa? Terima kasih! (Btw, saya Oauth2, jika itu penting.)
Olie
9
Authorizationadalah nama header, titik dua memisahkan nama dari nilai di semua header sesuai dengan bagian 4.2 dari RFC2616 .
Rick Mac Gillis
35

Anda masih dapat menggunakan header Otorisasi dengan OAuth 2.0. Ada jenis Bearer yang ditentukan di header Otorisasi untuk digunakan dengan token pembawa OAuth (artinya aplikasi klien hanya perlu menyajikan ("menanggung") token). Nilai header adalah token akses yang diterima klien dari Server Otorisasi.

Ini didokumentasikan dalam spesifikasi ini: https://tools.ietf.org/html/rfc6750#section-2.1

Misalnya:

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

Di mana mF_9.B5f-4.1JqM adalah token akses OAuth Anda.

Scott T.
sumber
OAuth 2.0 mendokumentasikan dua jenis token akses sebagai contoh: Bearer dan MAC ( tools.ietf.org/html/rfc6749#section-7.1 )
Clauds
1
Sayangnya MAC tidak pernah sepenuhnya terstandarisasi (lihat spesifikasi draf yang kedaluwarsa: tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 ) dan tidak digunakan dalam praktik.
Scott T.