All Products
Search
Document Center

API Gateway:key-auth

Last Updated:Jun 28, 2025

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 in_query dan in_header harus diatur ke true.

true

Jika bidang ini diatur ke true, gateway akan mencoba mengurai kunci API dari parameter URL.

in_header

bool

Setidaknya satu dari in_query dan in_header harus diatur ke true.

true

Jika bidang ini diatur ke true, gateway akan mencoba mengurai kunci API dari header permintaan HTTP.

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.

Penting
  • Konfigurasi otorisasi dan konfigurasi otentikasi tidak dapat berkoeksistensi dalam aturan.

  • Untuk permintaan yang terotentikasi, bidang X-Mse-Consumer ditambahkan 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-key

Terapkan konfigurasi plug-in berikut ke rute route-a dan route-b:

izin:
- konsumen1

Terapkan konfigurasi plug-in berikut ke nama domain *.example.com dan test.com:

izin:
- konsumen2
Catatan
  • Dalam contoh ini, rute route-a dan route-b adalah yang ditentukan saat pembuatan rute gateway. Jika permintaan klien cocok dengan salah satu rute, pemanggil dengan nama konsumen1 diizinkan mengakses gateway. Pemanggil lain tidak diizinkan mengakses gateway.

  • Dalam contoh ini, nama domain *.example.com dan test.com digunakan untuk mencocokkan nama domain dalam permintaan. Jika permintaan klien cocok dengan salah satu nama domain, pemanggil dengan nama konsumen2 diizinkan 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/test
  • Kunci 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-key

Kode 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.