Saat ini saya sedang mengembangkan REST-API yang dilindungi HTTP-Basic untuk lingkungan pengembangan. Karena autentikasi sebenarnya dilakukan melalui token, saya masih mencoba mencari tahu, bagaimana cara mengirim dua header otorisasi.
Saya sudah mencoba yang ini:
curl -i http://dev.myapp.com/api/users \
-H "Authorization: Basic Ym9zY236Ym9zY28=" \
-H "Authorization: Bearer mytoken123"
Misalnya, saya dapat menonaktifkan Autentikasi HTTP untuk IP saya, tetapi karena saya biasanya bekerja di lingkungan yang berbeda dengan IP dinamis, ini bukan solusi yang baik. Jadi, apakah saya melewatkan sesuatu?
400 Bad request
. Bodoh.Jawaban:
Coba yang ini untuk mendorong otentikasi dasar di url:
Jika di atas tidak berhasil, maka Anda tidak ada hubungannya dengan itu. Jadi coba alternatif berikut.
Anda dapat memberikan token dengan nama lain. Karena Anda menangani otorisasi dari Aplikasi Anda. Jadi, Anda dapat dengan mudah menggunakan fleksibilitas ini untuk tujuan khusus ini.
Perhatikan bahwa saya telah mengubah header menjadi
Application-Authorization
. Jadi dari aplikasi Anda, tangkap token di bawah tajuk itu dan proses apa yang perlu Anda lakukan.Hal lain yang dapat Anda lakukan adalah, untuk lulus
token
melaluiPOST
parameter dan ambil nilai parameter dari sisi Server. Misalnya meneruskan token dengan parameter curl post:sumber
-v
param. Anda akan menemukan bahwa pengirimannyaAuthorization: Basic Ym9zY236Ym9zY28=, Authorization: Bearer mytoken123
pada header permintaan. Dari ujung server Anda, jika Anda memeriksa, Anda akan menemukan bahwa Anda memiliki header Otorisasi seperti iniAuthorization: Basic Ym9zY236Ym9zY28=, Bearer mytoken123
dipisahkan dengan koma. Jadi, saya pikir saya harus menyarankan Anda bergantian.Standar ( https://tools.ietf.org/html/rfc6750 ) mengatakan Anda dapat menggunakan:
Jadi dimungkinkan untuk meneruskan banyak Token Pembawa dengan URI, tetapi melakukan ini tidak disarankan (lihat bagian 5 dalam standar).
sumber
Jika Anda menggunakan proxy terbalik seperti nginx di antaranya, Anda dapat menentukan token khusus, seperti
X-API-Token
.Di nginx Anda akan menulis ulang untuk upstream proxy (rest api Anda) menjadi hanya auth:
... sementara nginx dapat menggunakan header Otorisasi asli untuk memeriksa HTTP AUth.
sumber
Saya mengalami masalah yang sama - mengautentikasi perangkat dan pengguna di perangkat. Saya menggunakan
Cookie
header di sampingAuthorization: Bearer...
header.sumber
Cookie
header sudah sering digunakan untuk otentikasi.sumber
Ada solusi lain untuk menguji API di server pengembangan.
HTTP Basic Authentication
hanya untuk rute webKonfigurasi server web untuk
nginx
danLaravel
akan seperti ini:Authorization: Bearer
akan melakukan tugas untuk melindungi server pengembangan dari perayap web dan pengunjung tak diinginkan lainnya.sumber
Dengan nginx Anda dapat mengirim kedua token seperti ini (meskipun itu bertentangan dengan standar):
Ini berfungsi selama token dasar adalah yang pertama - nginx berhasil meneruskannya ke server aplikasi.
Dan kemudian Anda perlu memastikan aplikasi Anda dapat mengekstrak Bearer dengan benar dari string di atas.
sumber