Penggunaan khusus tajuk Otorisasi dalam API REST

10

Saya sedang membangun api REST di mana klien diautentikasi menggunakan sertifikat klien. Klien dalam hal ini bukan pengguna individu, tetapi semacam lapisan presentasi. Pengguna diautentikasi menggunakan pendekatan kustom dan itu adalah tanggung jawab lapisan presentasi untuk melihat bahwa ini dilakukan dengan benar (catatan: Saya tahu ini bukan pendekatan yang tepat, tetapi api bukan publik).

Saya ingin memberikan nama pengguna untuk setiap permintaan (bukan kata sandi), tetapi saya tidak yakin di mana harus melakukan ini. Apakah ide yang baik untuk menggunakan tajuk Otorisasi?

Matsen75
sumber

Jawaban:

21

Menggunakan header Otorisasi sepertinya adalah hal yang benar untuk dilakukan. Ini adalah seluruh tujuan tajuk Otorisasi.

Dari http://tools.ietf.org/html/rfc7235#section-4.2 :

Kolom header "Otorisasi" memungkinkan agen pengguna untuk mengotentikasi dirinya dengan server asal - biasanya, tetapi tidak harus, setelah menerima respons 401 (Tidak Diotorisasi). Nilainya terdiri dari kredensial yang berisi informasi otentikasi agen pengguna untuk ranah sumber daya yang diminta.

Jika Anda memiliki dokumen auth skema Anda sendiri, tetapi tidak perlu menemukan kembali roda.

Zach Dennis
sumber
3
Itu tidak hanya tampak seperti hal yang benar, itu adalah hal yang benar. (Saya sudah meneliti ini sepanjang hari) Bagian 4.1 dalam RFC 7235 secara jelas menunjukkan penggunaan skema khusus "Newauth" dalam "Misalnya", bersama dengan skema standar "Dasar" yang memungkinkan klien untuk menggunakan pilihan mereka dari salah satu skema . Yang mengatakan, jika Anda menggunakan skema "standar" Anda harus menggunakannya dengan benar. Jawaban Zach benar dan Filip salah .
Stephen P
3

Saya tidak akan merekomendasikan agar Anda menggunakan header HTTP standar yang tidak standar. Terutama karena dapat menyesatkan pengembang lain yang mengetahui bagaimana Authoriziationtajuk dimaksudkan untuk digunakan dalam otentikasi HTTP, tetapi juga untuk menghindari kemungkinan masalah dengan bagian lain dari tumpukan Anda yang memiliki kesadaran yang bertentangan dengan tajuk permintaan yang sama.

Apa pun masalahnya, tidak ada yang mencegah Anda untuk menggunakan X-Authorization-Usertajuk khusus yang tidak standar , khusus untuk keperluan Anda.

Filip Dupanović
sumber
100% setuju. Jika Anda ingin melakukan sesuatu yang khusus, itulah tujuan dari X-awalan header. Jika Anda akan menggunakan tajuk standar, jangan gunakan itu untuk sesuatu yang tidak biasa atau tidak terduga.
Carson63000
2
Hanya berpikir saya harus menyebutkan bahwa "X-" telah ditinggalkan: stackoverflow.com/questions/3561381/…
Matsen75
Per jawaban ini, apakah itu berarti bahwa Amazon S3 melakukan kesalahan? docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
Tom Lianza
4
-1. Seperti yang disebutkan oleh Zach Dennis, tidak seperti kebanyakan header HTTP lainnya, header Otorisasi dirancang untuk diperpanjang dan ada cara yang ditentukan dengan jelas tentang cara mendefinisikan skema otorisasi Anda sendiri. Dalam shell kacang, pastikan Anda menggunakan nama skema otorisasi khusus.
Lie Ryan