it-swarm-id.com

Header Otorisasi HTTP Khusus

Saya bertanya-tanya apakah dapat menerima data khusus di header otorisasi HTTP. Kami sedang merancang API RESTful dan kami mungkin perlu cara untuk menentukan metode otorisasi khusus. Sebagai contoh, mari kita sebut itu FIRE-TOKEN otentikasi.

Apakah sesuatu seperti ini valid dan diizinkan sesuai dengan spesifikasi: Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg=

Bagian pertama dari string kedua (sebelum ':') adalah kunci API, bagian kedua adalah hash dari string kueri.

122
NRaf

Format yang didefinisikan dalam RFC2617 adalah credentials = auth-scheme #auth-param. Jadi, dalam menyetujui fumanchu, saya pikir skema otorisasi yang diperbaiki akan terlihat seperti

Authorization: FIRE-TOKEN apikey="0PN5J17HBGZHT7JJ3X82", hash="frJIUN8DYpKDtOLCwo//yllqDzg="

Di mana FIRE-TOKEN adalah skema dan dua pasangan nilai kunci adalah parameter auth. Meskipun saya percaya tanda kutip adalah opsional (dari Apendix B dari p7-auth-19) ...

auth-param = token BWS "=" BWS ( token / quoted-string )

Saya percaya ini sesuai dengan standar terbaru, sudah digunakan (lihat di bawah), dan menyediakan format nilai kunci untuk ekstensi sederhana (jika Anda memerlukan parameter tambahan).

Beberapa contoh sintaks auth-param ini dapat dilihat di sini ...

http://tools.ietf.org/html/draft-ietf-httpbis-p7-auth-19#section-4.4

https://developers.google.com/youtube/2.0/developers_guide_protocol_clientlogin

https://developers.google.com/accounts/docs/AuthSub#WorkingAuthSub

129
StarTrekRedneck

Letakkan di tajuk khusus yang terpisah.

Kelebihan header HTTP standar mungkin akan menyebabkan lebih banyak kebingungan daripada nilainya, dan akan melanggar prinsip kejutan terkecil . Ini juga dapat menyebabkan masalah interoperabilitas untuk pemrogram klien API Anda yang ingin menggunakan kit alat yang tidak tersedia yang hanya dapat menangani bentuk standar dari header HTTP yang khas (seperti Authorization).

20
Brian Kelly

Tidak, itu bukan produksi yang valid sesuai dengan definisi "kredensial" di RFC 2617 . Anda memberikan skema auth-valid, tetapi nilai auth-param harus dalam bentuk token "=" ( token | quoted-string ) (lihat bagian 1.2), dan contoh Anda tidak menggunakan "=" seperti itu.

15
fumanchu

Pertanyaan lama yang saya tahu, tetapi untuk yang penasaran:

Percaya atau tidak, masalah ini telah dipecahkan ~ 2 dekade lalu dengan HTTP BASIC, yang meneruskan nilai sebagai base64 yang dikodekan nama pengguna: kata sandi. (Lihat http://en.wikipedia.org/wiki/Basic_access_authentication#Client_side )

Anda dapat melakukan hal yang sama, sehingga contoh di atas menjadi:

Authorization: FIRE-TOKEN MFBONUoxN0hCR1pIVDdKSjNYODI6ZnJKSVVOOERZcEtEdE9MQ3dvLy95bGxxRHpnPQ==
9
Mike Marcacci