All Products
Search
Document Center

API Gateway:Plugin kontrol akses berbasis parameter

Last Updated:Jun 22, 2026

1. Ikhtisar

Plugin kontrol akses berbasis parameter menyaring permintaan ke backend dengan mengevaluasi ekspresi kondisional berdasarkan parameter permintaan atau konteks. Untuk informasi selengkapnya, lihat Gunakan parameter dan ekspresi kondisional.

2. Konfigurasi

Contoh ini mengasumsikan path permintaan API adalah /{userId}/... dan API menggunakan otentikasi JSON Web Token (JWT). JWT berisi klaim userId dan userType. Kondisi validasi plugin adalah sebagai berikut:

  • Jika userType bernilai admin, semua permintaan diizinkan.

  • Jika userType bernilai user, plugin hanya mengizinkan permintaan di mana userId pada path sesuai dengan userId dalam token.

---
#
# Contoh ini mengasumsikan path permintaan API adalah `/{userId}/...`
# API menggunakan otentikasi JWT, dan token berisi klaim `userId` dan `userType`.
# Plugin memvalidasi permintaan berdasarkan kondisi berikut:
# - Jika userType adalah 'admin', semua path diizinkan.
# - Jika userType adalah 'user', hanya permintaan di mana `userId` pada path sesuai dengan `userId` dalam token yang diizinkan.
parameters:
  userId: "Token:userId"
  userType: "Token:userType"
  pathUserId: "path:userId"
#
# Plugin memproses aturan secara berurutan. Untuk setiap aturan, plugin mengevaluasi kondisi.
# Jika kondisi mengembalikan `true`, plugin menjalankan aksi `ifTrue`. Jika `false`, plugin menjalankan aksi `ifFalse`.
# `ALLOW` segera mengizinkan permintaan. `DENY` segera menolak permintaan dan mengembalikan error ke client.
# Jika baik `ALLOW` maupun `DENY` tidak dipicu, plugin melanjutkan ke aturan berikutnya.
rules:
  - name: admin
    condition: "$userType = 'admin'"
    ifTrue: "ALLOW"
  - name: user
    condition: "$userId = $pathUserId"
    ifFalse: "DENY"
    statusCode: 403
    errorMessage: "Path not match ${userId} vs /${pathUserId}"
    responseHeaders:
      Content-Type: application/xml
    responseBody: 
      <Reason>Path not match ${userId} vs /${pathUserId}</Reason>

3. Set data plugin

Untuk deskripsi lengkap dan petunjuk konfigurasi, lihat plugin kontrol akses berbasis parameter.

3.1. Membuat set data plugin

Masuk ke Konsol API Gateway. Di panel navigasi kiri, pilih Manage APIs > Plug-ins. Buka tab Plug-in Datasets, klik Create Dataset, lalu pilih PARAMETER_ACCESS sebagai tipe set data.

Anda kemudian dapat mengklik ID set data untuk melihat entri datanya. Klik Create Data Entry untuk menambahkan entri data baru. Data Value bersesuaian dengan nilai parameter yang digunakan untuk kontrol akses. Anda juga dapat mengatur waktu kedaluwarsa untuk setiap entri data. Entri data menjadi tidak valid setelah melewati waktu kedaluwarsanya.

Pada kotak dialog Create Data Entry, untuk Expiration Time, Anda dapat memilih Short-term (pilih tanggal tertentu) atau Long-term (tidak ada kedaluwarsa). Anda juga dapat memasukkan Description.

Penting

Set data plugin hanya berlaku untuk API yang berjalan pada dedicated instance. Jika plugin yang menggunakan set data plugin diikat ke API yang tidak berada pada dedicated instance, set data tersebut akan diabaikan.

3.2. Mengonfigurasi set data plugin

Untuk menggunakan set data plugin, tambahkan bidang assertParameterName dan assertInDataset ke suatu aturan dalam bagian rules konfigurasi plugin kontrol akses berbasis parameter.

  • assertParameterName: Nama parameter yang akan divalidasi terhadap set data. Parameter ini harus didefinisikan dalam bagian parameters.

  • assertInDataset: ID set data plugin. Plugin memeriksa apakah nilai parameter yang ditentukan oleh assertParameterName ada dalam set data ini.

Bidang assertParameterName dan assertInDataset harus digunakan bersamaan. Jika tidak, pembuatan plugin akan gagal.

Bidang-bidang ini kompatibel dengan bidang condition. Dalam setiap rule, Anda dapat mengonfigurasi pasangan (assertParameterName, assertInDataset) dan condition secara bersamaan, atau hanya salah satunya. Jika keduanya dikonfigurasi, plugin akan memicu aksi aturan jika pemeriksaan set data berhasil **atau** ekspresi kondisional bernilai true.

---
#
# Contoh ini mengasumsikan path permintaan API adalah `/{userId}/...`
# API menggunakan otentikasi JWT, dan token berisi klaim `userId` dan `userType`.
# Plugin memvalidasi permintaan berdasarkan kondisi berikut:
# - Jika userType adalah 'admin', semua path diizinkan.
# - Jika userType adalah 'user', hanya permintaan di mana `userId` pada path sesuai dengan `userId` dalam token yang diizinkan.
parameters:
  userId: "Token:userId"
  userType: "Token:userType"
  pathUserId: "path:userId"
#
# Plugin memproses aturan secara berurutan. Untuk setiap aturan, plugin mengevaluasi kondisi.
# Jika kondisi mengembalikan `true`, plugin menjalankan aksi `ifTrue`. Jika `false`, plugin menjalankan aksi `ifFalse`.
# `ALLOW` segera mengizinkan permintaan. `DENY` segera menolak permintaan dan mengembalikan error ke client.
# Jika baik `ALLOW` maupun `DENY` tidak dipicu, plugin melanjutkan ke aturan berikutnya.
rules:
  - name: byDataset
    assertParameterName: userId
    assertInDataset: 87b65008e92541938537b1a4a236eda5
    ifTrue: "ALLOW"
  - name: admin
    condition: "$userType = 'admin'"
    ifTrue: "ALLOW"
  - name: user
    condition: "$userId = $pathUserId"
    ifFalse: "DENY"
    statusCode: 403
    errorMessage: "Path not match ${userId} vs /${pathUserId}"
    responseHeaders:
      Content-Type: application/xml
    responseBody: 
      <Reason>Path not match ${userId} vs /${pathUserId}</Reason>

4. Kode error

Kode error

Kode status HTTP

Pesan

Deskripsi

A403AC

403

Access Control Forbidden by ${RuleName}

Plugin kontrol akses berbasis parameter memblokir permintaan.

5. Batasan

  • Anda dapat mendefinisikan hingga 160 parameter.

  • Satu ekspresi dapat berisi hingga 1.024 karakter.

  • Ukuran konfigurasi plugin dibatasi hingga 50 KB.

  • Anda dapat mengonfigurasi hingga 160 rules.

Catatan

Saat plugin ini saat diikat ke API pada dedicated instance, semua parameter dan aturan yang didefinisikan berlaku.