Plug-in basic-auth melakukan autentikasi dan otorisasi permintaan berdasarkan standar HTTP Basic Authentication.
Jenis plug-in
Autentikasi dan otorisasi.
Bidang
Konfigurasi autentikasi
|
Bidang |
Jenis data |
Wajib |
Nilai default |
Deskripsi |
|
consumers |
array of object |
Ya |
- |
Pemanggil layanan, digunakan untuk mengautentikasi permintaan. |
|
global_auth |
array of string |
Tidak (Wajib hanya untuk konfigurasi tingkat instans) |
- |
Hanya dapat dikonfigurasi pada tingkat instans. Jika diatur ke true, autentikasi berlaku secara global. Jika diatur ke false, autentikasi hanya berlaku untuk nama domain dan rute yang telah dikonfigurasi. Jika tidak dikonfigurasi, autentikasi berlaku secara global hanya jika tidak ada nama domain atau rute yang dikonfigurasi, demi kompatibilitas mundur. |
Bidang dalam consumers:
|
Bidang |
Jenis data |
Wajib |
Nilai default |
Deskripsi |
|
credential |
string |
Ya |
- |
Kredensial akses konsumen. |
|
name |
string |
Ya |
- |
Nama konsumen. |
(Opsional) Konfigurasi otorisasi
|
Bidang |
Jenis data |
Wajib |
Nilai default |
Deskripsi |
|
allow |
array of string |
Tidak (Wajib untuk konfigurasi non-tingkat-instans) |
- |
Hanya dapat dikonfigurasi pada tingkat rute atau nama domain. Menentukan konsumen mana yang dapat mengakses permintaan yang sesuai dengan kondisi yang dikonfigurasi. |
-
Konfigurasi otorisasi dan autentikasi tidak dapat diterapkan dalam aturan yang sama.
-
Untuk permintaan yang telah diautentikasi, bidang
X-Mse-Consumerditambahkan ke header permintaan untuk mengidentifikasi pemanggil.
Contoh
Konfigurasi autentikasi secara global dan konfigurasi otorisasi untuk rute
Contoh ini mengaktifkan autentikasi dan otorisasi dasar untuk rute atau domain tertentu dari sebuah gateway.
-
Username dan password dalam kredensial dipisahkan oleh tanda titik dua (:).
-
Nilai
credentialharus unik.
Terapkan konfigurasi plug-in berikut pada tingkat instans:
global_auth: false
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2
Terapkan konfigurasi plug-in berikut ke rute route-a dan route-b:
allow:
- consumer1
Terapkan konfigurasi plug-in berikut ke nama domain *.example.com dan test.com:
allow:
- consumer2
-
Dalam contoh ini, rute
route-adanroute-badalah rute yang ditentukan saat pembuatan rute gateway. Jika permintaan klien sesuai dengan salah satu rute tersebut, pemanggil yangnamanyaadalahconsumer1diizinkan 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 sesuai dengan salah satu nama domain tersebut, pemanggil yangnamanyaadalahconsumer2diizinkan mengakses gateway. Pemanggil lain tidak diizinkan mengakses gateway.
Konfigurasi ini mengizinkan permintaan berikut:
Username dan password ditentukan dalam permintaan.
# Dalam contoh ini, route-a dalam permintaan dicocokkan.
# Gunakan parameter -u dalam perintah curl untuk menentukan username dan password.
curl -u admin:123456 http://xxx.hello.com/test
# Anda juga dapat langsung menentukan header permintaan Authorization yang berisi username dan password dalam bentuk base64-encoded.
curl -H 'Authorization: Basic YWRtaW46MTIzNDU2' http://xxx.hello.com/test
Setelah autentikasi berhasil, bidang X-Mse-Consumer ditambahkan ke header permintaan untuk mengidentifikasi pemanggil. Dalam contoh ini, nilainya adalah consumer1.
Konfigurasi ini menolak permintaan berikut:
-
Tidak ada kredensial yang disediakan dalam permintaan, dan kode status HTTP 401 dikembalikan.
curl http://xxx.hello.com/test -
Username atau password tidak valid, dan kode status HTTP 401 dikembalikan.
curl -u admin:abc http://xxx.hello.com/test -
Pemanggil yang dicocokkan oleh kredensial tidak memiliki izin akses, dan kode status HTTP 403 dikembalikan.
# Konsumen bernama consumer2 tidak ada dalam daftar allow route-a. curl -u guest:abc http://xxx.hello.com/test
Aktifkan autentikasi untuk gateway
Terapkan konfigurasi berikut untuk mengaktifkan autentikasi dasar tingkat instans. Semua permintaan kemudian harus diautentikasi.
global_auth: true
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2
Kode error
|
Kode status HTTP |
Pesan error |
Alasan |
|
401 |
Request denied by Basic Auth check. No Basic Authentication information found. |
Tidak ada kredensial yang disediakan dalam permintaan. |
|
401 |
Request denied by Basic Auth check. Invalid username and/or password. |
Kredensial dalam permintaan tidak valid. |
|
403 |
Request denied by Basic Auth check. Unauthorized consumer. |
Pemanggil tidak memiliki izin akses. |