API Gateway menyediakan berbagai kemampuan inti melalui plugin yang mendukung pembaruan panas. Saat ini, 12 plugin telah tersedia, dan jumlahnya terus bertambah. Plugin-plugin ini memperkaya fitur API Gateway serta meningkatkan fleksibilitas manajemen metadata di API Gateway. Namun, dalam skenario bisnis berskala besar, konfigurasi teks pada plugin dapat membatasi kinerja pengguna. Untuk mengatasi masalah ini, data konfigurasi plugin diekstraksi menjadi objek dataset yang dikelola secara terpisah, sehingga meningkatkan pengalaman pengguna dan skalabilitas plugin.
1. Keterbatasan konfigurasi teks
Plugin API Gateway memiliki karakteristik berikut:
Konfigurasi berbasis teks
Batas ukuran
Akibatnya, pengguna sering mengalami kesulitan menggunakan beberapa plugin atau bahkan tidak dapat menggunakan plugin tertentu. Contoh berikut menunjukkan konfigurasi tipikal dari plugin kontrol akses berbasis alamat IP, yang populer di kalangan pengguna.
---
type: ALLOW
items:
- blocks:
- 61.3.XX.XX/24
- 192.168.34.XX/32
- 192.168.158.XX/32
appId: 219810
- blocks:
- 79.11.XX.XX
- 85.13.XX.XX
- 72.152.XX.XXKonfigurasi ini cocok untuk aplikasi skala kecil dengan hanya beberapa blok CIDR. Namun, pada aplikasi berskala besar yang melibatkan puluhan atau lebih dari seratus blok CIDR, konfigurasi ini menimbulkan masalah signifikan. Berikut adalah dua masalah utama yang sering muncul:
Pengelolaan rentan kesalahan: Perubahan kecil pada blok CIDR memerlukan pembaruan menyeluruh pada seluruh plugin.
Ukuran besar: Terlalu banyak blok CIDR menyebabkan plugin melebihi batas ukuran.
Kedua masalah ini sulit diatasi dengan konfigurasi teks, namun fitur dataset plugin dapat menyelesaikannya secara efektif.
2. Ekstraksi data konfigurasi sebagai objek dataset
Bagian ini menjelaskan fungsi dataset plugin. Secara singkat, konfigurasi diekstraksi sebagai objek dataset yang dapat dirujuk oleh plugin saat diperlukan. Setiap perubahan pada objek dataset langsung diterapkan ke semua plugin yang merujuknya.

Dengan menggunakan objek dataset, konfigurasi pada contoh sebelumnya dapat disederhanakan menjadi:
---
type: ALLOW
items:
- blocksDatasetId: 87b65008e92541938537b1a4a236eda5
appId: 219810
- blocksDatasetId: 87b65008e92541938537b1a4a236eda3Jika Anda ingin memodifikasi kebijakan kontrol akses, cukup ubah entri data yang dirujuk dalam dataset plugin.
Dataset plugin secara efektif menyelesaikan masalah manajemen dan ukuran konfigurasi teks pada plugin.
Dataset tidak tunduk pada batas ukuran plugin, sehingga dapat merujuk sebanyak mungkin objek yang diperlukan.
Anda dapat memodifikasi kebijakan dengan mengubah entri data dalam dataset, tanpa perlu memperbarui seluruh plugin. Misalnya, jika Anda ingin menambahkan alamat IP ke daftar putih, cukup tambahkan entri data ke dataset.
Saat ini, fitur dataset plugin didukung oleh plugin autentikasi JSON Web Token (JWT). Segera akan didukung oleh lebih banyak jenis plugin, seperti kontrol akses berbasis alamat IP, kontrol akses berbasis parameter, dan plugin routing backend.
3. Karakteristik dataset plugin
Dataset plugin memungkinkan Anda memodifikasi konfigurasi plugin secara dinamis. Berikut adalah karakteristik utama dataset plugin:
Perubahan pada entri data dalam dataset berlaku di semua instance khusus Anda dalam sepuluh detik.
Anda dapat mendefinisikan maksimal 100 dataset dan menambahkan hingga 200 entri data ke setiap dataset. Jika kuota tidak mencukupi, Anda dapat mengirimkan tiket untuk penambahan.
Dataset dapat dirujuk oleh beberapa plugin, dan perubahan pada dataset disinkronkan ke semua plugin yang merujuknya.
Data duplikat tidak diizinkan dalam dataset.
Anda dapat menetapkan waktu kedaluwarsa untuk setiap entri data, yang secara otomatis menjadi tidak valid ketika waktunya tiba. Anda juga dapat menetapkan entri data untuk valid secara permanen.
Pengaturan dataset hanya berlaku untuk grup dalam instance khusus. Jika grup dipindahkan ke instance bersama, pengaturan menjadi tidak valid.
4. Konfigurasikan dataset plugin untuk plugin autentikasi JWT
4.1 Konfigurasikan dataset plugin
Buat Dataset
Pada langkah ini, Anda harus menetapkan nama dan memilih tipe untuk dataset. Nama dataset dapat diubah kapan saja, tetapi tipe dataset tidak dapat diubah. Untuk plugin autentikasi JWT, atur tipe dataset ke JWT_BLOCKING.
Buat Entri Data dalam Dataset
Klik dataset yang telah dibuat untuk menambahkan entri data. Nilai entri data harus unik dalam dataset. Anda dapat menetapkan waktu kedaluwarsa untuk setiap entri data, yang secara otomatis menjadi tidak valid ketika waktunya tiba.

Peroleh ID Dataset
Setelah dataset plugin dibuat, sistem menghasilkan ID untuk dataset tersebut. ID ini dapat dilihat dalam daftar dataset dan digunakan untuk mengaitkan plugin dengan dataset. ID ini tidak berubah.

4.2. Konfigurasikan plugin autentikasi JWT
Dataset plugin didukung oleh plugin autentikasi JWT.
Plugin autentikasi JWT biasanya digunakan untuk memblokir permintaan dari pengguna yang telah ditambahkan ke daftar hitam tetapi masih memiliki token resmi. Dataset plugin memungkinkan plugin autentikasi JWT menolak permintaan berdasarkan parameter klaim yang didekripsi dari token. API Gateway juga memungkinkan Anda menetapkan respons kustom untuk permintaan yang ditolak. Kode berikut memberikan contoh konfigurasi plugin autentikasi JWT. Perhatikan definisi parameter yang dimulai dengan block:
---
parameter: Authorization # Parameter tempat token diperoleh.
parameterLocation: header # Lokasi tempat token diperoleh.
claimParameters: # Klaim yang akan dikonversi menjadi parameter. API Gateway memetakan klaim JWT ke parameter backend.
- claimName: aud # Nama klaim JWT, yang bisa publik atau pribadi.
parameterName: X-Aud # Nama parameter backend, ke mana klaim JWT dipetakan.
location: header # Lokasi parameter backend, ke mana klaim JWT dipetakan. Nilai valid: query, header, path, dan formData.
- claimName: userId # Nama klaim JWT, yang bisa publik atau pribadi.
parameterName: userId # Nama parameter backend, ke mana klaim JWT dipetakan.
location: query # Lokasi parameter backend, ke mana klaim JWT dipetakan. Nilai valid: query, header, path, dan formData.
blockClaimParameterName: userId # Lokasi parameter backend, ke mana klaim JWT dipetakan. Nilai valid: query, header, path, dan formData.
blockByDataSet: 87 b65008e92541938537b1a4a236eda5 # Lokasi parameter backend, ke mana klaim JWT dipetakan. Nilai valid: query, header, path, dan formData.
blockStatusCode: 403 # Kode status dari respons yang dikembalikan ke permintaan yang ditolak.
blockResponseHeaders: # Header dari respons yang dikembalikan ke permintaan yang ditolak.
Content-Type: application/xml
blockResponseBody: # Body dari respons yang dikembalikan ke permintaan yang ditolak.
<Reason>be blocked</Reason>
jwks:
- kid: O9fpdhrViq2zaaaBEWZITz # kid harus diatur ke nilai berbeda untuk JWK yang berbeda.
kty: RSA
e: AQAB
use: sig
alg: RS256
n: qSVxcknOm0uCq5v....5. Kesimpulan
Fitur dataset plugin membawa konfigurasi plugin dari era teks ke era data terstruktur. Pembaruan panas sebagian data didukung, dan plugin dapat berisi lebih banyak pengaturan daripada sebelumnya. API Gateway mendukung lebih dari satu juta dataset plugin untuk skenario beban berat. Selain itu, karena plugin tidak lagi dibatasi oleh ukuran kecil, pengguna dapat melakukan lebih banyak hal dengan plugin API Gateway.
Saat ini, fitur baru ini hanya tersedia untuk plugin autentikasi JWT. Segera akan mendukung lebih banyak jenis plugin seperti kontrol akses berbasis alamat IP, kontrol akses berbasis parameter, dan plugin routing backend.