Saya merancang REST API menggunakan otorisasi / otentikasi melalui Kunci API.
Saya mencoba mencari tahu apa tempat terbaik untuk itu dan menemukan bahwa banyak orang menyarankan menggunakan header HTTP khusus seperti ProjectName-Api-Key
, misalnya:
ProjectName-Api-Key: abcde
tetapi juga mungkin dan secara ideologis benar untuk menggunakan Authorization
header dengan skema khusus, misalnya:
Authorization: ApiKey abcde
Di sisi lain, saya menemukan pertimbangan bahwa skema Otorisasi khusus bisa tidak terduga dan tidak didukung oleh beberapa klien dan mengarah ke kode kustom, jadi lebih baik menggunakan header khusus karena klien tidak memiliki harapan tentang hal itu.
Cara mana yang Anda inginkan untuk mengirim Kunci API?
Bearer
skema digunakan secara eksklusif dengan oAuth2. Menerapkannya secara terpisah dari oAuth terdengar sebagai penyalahgunaan. Mengapa benar menggunakan skema ini jika tidak ada oAuth? Omong-omong, saya kesulitan memilih jenis otorisasi untuk API saya. API hanya akan tersedia untuk satu layanan tepercaya, jadi saya menyelidiki aliran kredensial klien dari oAuth2 dan belum menemukan manfaat apa pun dibandingkan dengan ApiKey dalam kasus saya.
ApiKey
diganti nama dan ditafsirkan sebagai Access Token
diberikan kepada klien tanpa waktu kedaluwarsa. Itu semacam aspek filosofis, saya memutuskan untuk tidak membawa definisi yang rumit jika kasus saya dapat dijelaskan dalam istilah sederhana dan memutuskan untuk menyebutnya "ApiKey". Jika protokol Anda menerapkan standar OAuth, saya bisa setuju untuk menggunakan Bearer
, tetapi tidak, saya kira skema ini tidak dapat diterapkan.
Authorization: Bearer <token>
tajuk dan tidak pernah ada masalah dengan itu. Tokennya adalah JWT .