Plug-in basic-auth digunakan untuk otentikasi berdasarkan spesifikasi otentikasi dasar HTTP. Topik ini menjelaskan cara mengonfigurasi plug-in basic-auth.
Tipe Plug-in
Plug-in untuk otentikasi dan otorisasi.
Bidang
Konfigurasi Otentikasi
Bidang | Tipe data | Diperlukan | Nilai default | Deskripsi |
konsumen | array of object | Ya | - | Pemanggil layanan. Bidang ini digunakan untuk mengotentikasi permintaan. |
global_auth | array of string | Tidak (Diperlukan hanya untuk konfigurasi tingkat instance) | - | Bidang ini hanya dapat dikonfigurasi pada tingkat instance. Jika bidang ini disetel ke true, mekanisme otentikasi secara global berlaku. Jika bidang ini disetel ke false, mekanisme otentikasi hanya berlaku untuk nama domain dan rute yang telah dikonfigurasi. Jika bidang ini tidak dikonfigurasi, mekanisme otentikasi secara global hanya berlaku ketika tidak ada nama domain dan rute yang dikonfigurasi. Ini mempertimbangkan kebiasaan pengguna lama. |
Tabel berikut menjelaskan bidang dalam konsumen.
Bidang | Tipe data | Diperlukan | Nilai default | Deskripsi |
kredensial | string | Ya | - | Kredensial akses konsumen. |
nama | string | Ya | - | Nama konsumen. |
(Opsional) Konfigurasi Otorisasi
Bidang | Tipe data | Diperlukan | Nilai default | Deskripsi |
allow | 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 akses. Ini mengimplementasikan kontrol izin granularitas halus. |
Konfigurasi otorisasi dan konfigurasi otentikasi tidak dapat berkoeksistensi dalam aturan.
Untuk permintaan yang telah diautentikasi, bidang
X-Mse-Consumerditambahkan ke header permintaan untuk mengidentifikasi nama pemanggil.
Contoh
Konfigurasikan otentikasi secara global dan konfigurasikan otorisasi untuk rute
Berikut adalah contoh tentang cara mengaktifkan otentikasi dasar dan otorisasi untuk rute atau domain tertentu dari gateway.
Nama pengguna dan kata sandi dalam informasi kredensial dipisahkan oleh titik dua (:).
Konfigurasi item
kredensialharus unik.
Terapkan konfigurasi plug-in berikut pada tingkat instance:
global_auth: false
konsumen:
- kredensial: 'admin:123456'
nama: consumer1
- kredensial: 'guest:abc'
nama: consumer2Terapkan konfigurasi plug-in berikut ke rute route-a dan route-b:
allow:
- consumer1Terapkan konfigurasi plug-in berikut ke nama domain *.example.com dan test.com:
allow:
- consumer2Dalam contoh ini, rute
route-adanroute-badalah rute yang ditentukan saat pembuatan rute gateway. Jika permintaan klien cocok dengan salah satu rute, pemanggil yang memilikinamasebagaiconsumer1diizinkan untuk mengakses gateway. Pemanggil lainnya tidak diizinkan untuk 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 yang memilikinamasebagaiconsumer2diizinkan untuk mengakses gateway. Pemanggil lainnya tidak diizinkan untuk mengakses gateway.
Konfigurasi sebelumnya mengizinkan akses untuk permintaan berikut:
Nama pengguna dan kata sandi ditentukan dalam permintaan.
# Dalam contoh ini, route-a dalam permintaan cocok.
# Gunakan parameter -u dalam perintah curl untuk menentukan nama pengguna dan kata sandi.
curl -u admin:123456 http://xxx.hello.com/test
# Anda juga dapat langsung menentukan header permintaan Authorization di mana nama pengguna dan kata sandi dienkripsi base64.
curl -H 'Authorization: Basic YWRtaW46MTIzNDU2' http://xxx.hello.com/testSetelah otentikasi berhasil, bidang X-Mse-Consumer ditambahkan ke header permintaan untuk mengidentifikasi pemanggil. Dalam contoh ini, nilai bidang ini adalah consumer1.
Konfigurasi sebelumnya menolak akses untuk permintaan berikut:
Nama pengguna dan kata sandi tidak ditentukan dalam permintaan, dan kode status HTTP 401 dikembalikan.
curl http://xxx.hello.com/testNama pengguna atau kata sandi tidak valid dalam permintaan, dan kode status HTTP 401 dikembalikan.
curl -u admin:abc http://xxx.hello.com/testPemanggil yang cocok dengan nama pengguna dan kata sandi dalam permintaan tidak memiliki izin akses, dan kode status HTTP 403 dikembalikan.
# Konsumen bernama consumer2 tidak ada dalam daftar izin route-a. curl -u guest:abc http://xxx.hello.com/test
Aktifkan otentikasi untuk gateway
Setelah Anda menerapkan konfigurasi berikut ke gateway, otentikasi dasar diaktifkan pada tingkat instance dan semua permintaan harus diautentikasi untuk mengakses gateway.
global_auth: true
konsumen:
- kredensial: 'admin:123456'
nama: consumer1
- kredensial: 'guest:abc'
nama: consumer2Kode kesalahan
Kode status HTTP | Pesan kesalahan | Alasan |
401 | Permintaan ditolak oleh pemeriksaan Basic Auth. Tidak ditemukan informasi Otentikasi Dasar. | Kredensial tidak ditentukan dalam permintaan. |
401 | Permintaan ditolak oleh pemeriksaan Basic Auth. Nama pengguna dan/atau kata sandi tidak valid. | Kredensial permintaan tidak valid. |
403 | Permintaan ditolak oleh pemeriksaan Basic Auth. Konsumen tidak sah. | Pemanggil permintaan tidak memiliki izin akses. |