Plug-in key-auth digunakan untuk otentikasi berbasis kunci API. Anda dapat menggunakan plug-in ini untuk mengurai kunci API dari parameter URL atau header permintaan HTTP dan memeriksa validitasnya untuk mengakses layanan. Topik ini menjelaskan cara mengonfigurasi plug-in key-auth.
Tipe Plug-in
Plug-in untuk otentikasi dan otorisasi.
Bidang
Konfigurasi Otentikasi
Item konfigurasi | Tipe data | Diperlukan | Nilai default | Deskripsi |
konsumen | array of object | Ya | - | Pemanggil layanan. Bidang ini digunakan untuk mengotentikasi permintaan. |
kunci | array of string | Ya | - | Bidang sumber dari kunci API. Bidang sumber bisa berupa parameter URL atau header permintaan HTTP. |
in_query | bool | Setidaknya satu dari | true | Jika bidang ini diatur ke |
in_header | bool | Setidaknya satu dari | true | Jika bidang ini diatur ke |
global_auth | array of string | Tidak (Diperlukan hanya untuk konfigurasi tingkat instance) | - | Bidang ini hanya dapat dikonfigurasi pada tingkat instance. Jika bidang ini diatur ke true, mekanisme otentikasi berlaku secara global. Jika bidang ini diatur ke false, mekanisme otentikasi hanya berlaku untuk nama domain dan rute yang telah dikonfigurasi. Jika bidang ini tidak dikonfigurasi, mekanisme otentikasi berlaku secara global hanya ketika tidak ada nama domain dan rute yang dikonfigurasi. Ini mempertimbangkan kebiasaan pengguna lama. |
Tabel berikut menjelaskan item konfigurasi di bidang consumers.
Item konfigurasi | Tipe data | Diperlukan | Nilai default | Deskripsi |
kredensial | string | Ya | - | Kredensial akses konsumen. |
nama | string | Ya | - | Nama konsumen. |
(Opsional) Konfigurasi Otorisasi
Item konfigurasi | Tipe data | Diperlukan | Nilai default | Deskripsi |
izin | array of string | Tidak (Diperlukan untuk konfigurasi non-tingkat instance) | - | Anda hanya dapat mengonfigurasi bidang ini pada granularitas halus seperti rute atau nama domain. Untuk permintaan yang memenuhi kondisi pencocokan, Anda dapat mengonfigurasi konsumen yang diizinkan untuk mengakses. Ini mengimplementasikan kontrol izin dengan granularitas halus. |
Konfigurasi otorisasi dan konfigurasi otentikasi tidak dapat berkoeksistensi dalam aturan.
Untuk permintaan yang terotentikasi, bidang
X-Mse-Consumerditambahkan ke header permintaan untuk mengidentifikasi nama pemanggil.
Contoh
Konfigurasi Otorisasi Global dan Konfigurasi Otentikasi Tingkat Rute
Berikut adalah contoh tentang cara mengaktifkan otentikasi dan otorisasi berdasarkan plug-in key-auth untuk rute atau domain tertentu dari gateway. Bidang kredensial harus unik.
Terapkan konfigurasi plug-in berikut pada tingkat instance:
global_auth: false
konsumen:
- kredensial: 2bda943c-ba2b-11ec-ba07-00163e125***
nama: konsumen1
- kredensial: c8c8e9ca-558e-4a2d-bb62-e700dcc40***
nama: konsumen2
kunci:
- apikey
- x-api-keyTerapkan konfigurasi plug-in berikut ke rute route-a dan route-b:
izin:
- konsumen1Terapkan konfigurasi plug-in berikut ke nama domain *.example.com dan test.com:
izin:
- konsumen2Dalam contoh ini, rute
route-adanroute-badalah yang ditentukan saat pembuatan rute gateway. Jika permintaan klien cocok dengan salah satu rute, pemanggil dengannamakonsumen1diizinkan mengakses gateway. Pemanggil lain tidak diizinkan mengakses gateway.Dalam contoh ini, nama domain
*.example.comdantest.comdigunakan untuk mencocokkan nama domain dalam permintaan. Jika permintaan klien cocok dengan salah satu nama domain, pemanggil dengannamakonsumen2diizinkan mengakses gateway. Pemanggil lain tidak diizinkan mengakses gateway.
Konfigurasi sebelumnya mengizinkan akses dari permintaan berikut. Dalam contoh ini, nama rute dalam permintaan cocok dengan rute route-a.
Tentukan kunci API dalam parameter URL.
curl http://xxx.hello.com/test?apikey=2bda943c-ba2b-11ec-ba07-00163e1***Tentukan kunci API dalam header permintaan HTTP.
curl http://xxx.hello.com/test -H 'x-api-key: 2bda943c-ba2b-11ec-ba07-00163e1***'
Setelah otentikasi dan otorisasi berhasil, bidang X-Mse-Consumer ditambahkan ke header permintaan untuk mengidentifikasi pemanggil. Dalam contoh ini, nilai bidang ini adalah konsumen1.
Permintaan berikut ditolak:
Tidak ada kunci API yang ditentukan dalam permintaan, dan kode status HTTP 401 dikembalikan.
curl http://xxx.hello.com/testKunci API yang ditentukan dalam permintaan tidak valid, dan kode status HTTP 401 dikembalikan.
curl http://xxx.hello.com/test?apikey=926d90ac-ba2e-11ec-ab68-00163e1***Pemanggil yang dicocokkan menggunakan kunci API tidak memiliki izin akses, dan kode status HTTP 403 dikembalikan.
# Pemanggil konsumen2 tidak ada dalam daftar putih route-a. curl http://xxx.hello.com/test?apikey=c8c8e9ca-558e-4a2d-bb62-e700dcc***
Aktifkan otentikasi untuk gateway
Setelah Anda menerapkan konfigurasi berikut ke gateway, otentikasi dasar diaktifkan pada tingkat instance dan semua permintaan harus terotentikasi untuk mengakses gateway.
global_auth: true
konsumen:
- kredensial: 2bda943c-ba2b-11ec-ba07-00163e1***
nama: konsumen1
- kredensial: c8c8e9ca-558e-4a2d-bb62-e700dcc***
nama: konsumen2
kunci:
- apikey
- x-api-keyKode kesalahan
Kode status HTTP | Pesan kesalahan | Alasan |
401 | No API key found in request. | Tidak ada kunci API yang ditentukan dalam permintaan. |
401 | Request denied by Key Auth check. Invalid API key. | Kunci API tidak valid. |
403 | Request denied by Basic Auth check. Unauthorized consumer. | Pemanggil permintaan tidak memiliki izin akses. |