All Products
Search
Document Center

Microservices Engine:Konfigurasikan autentikasi konsumen

Last Updated:Jun 21, 2026

Gateway cloud-native mendukung konfigurasi autentikasi untuk route dan otorisasi akses konsumen tertentu ke route tersebut. Topik ini menjelaskan cara mengonfigurasi autentikasi konsumen.

Informasi latar belakang

Autentikasi global cocok untuk skenario ToC seperti login terpadu. Autentikasi route dengan otorisasi konsumen lebih sesuai untuk skenario ToB seperti pemberian akses API kepada mitra.

Comparison item

Global authentication

Route authentication + consumer authorization

Scenarios

Skema ToC seperti autentikasi login terpadu.

Skema ToB seperti pemberian akses API kepada mitra.

Key difference

Otentikasi dan otorisasi diaktifkan secara bersamaan.

Setelah mengaktifkan otentikasi, Anda harus mengonfigurasi otorisasi secara terpisah.

Configuration entry

Security Management > Global Authentication.

  1. Routes > Policies > Authentication.

  2. Security Management > Consumer Authentication.

Authentication configuration (using JWT as an example)

  1. Saat membuat konfigurasi, masukkan pengaturan global JWKS.

  2. Masukkan bidang iss dan sub sebagai kriteria untuk memvalidasi token JWT.

  1. Saat membuat konfigurasi konsumen, masukkan pengaturan JWKS untuk konsumen tersebut.

  2. Masukkan ID konsumen untuk mengidentifikasi apakah suatu JWT milik konsumen ini. Secara default, hal ini menggunakan bidang payload uid, tetapi Anda dapat menyesuaikannya.

Authorization configuration

Saat membuat konfigurasi, masukkan daftar Domain Name dan Path untuk blacklist atau whitelist.

  • Blacklist: Domain Name dan Path dalam daftar memerlukan autentikasi, sedangkan yang lainnya dapat diakses langsung tanpa autentikasi.

  • Whitelist: Entri Domain Name dan Path dalam daftar tidak memerlukan autentikasi. Semua entri lainnya memerlukan autentikasi.

  1. Pada Policies route, aktifkan Authentication untuk route tersebut.

  2. Di Consumer Authentication, kaitkan route yang telah diaktifkan autentikasinya untuk menyelesaikan otorisasi.

Buat konsumen

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih Wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik nama gateway target.

  4. Di panel navigasi kiri, klik Security Management > Consumer Authentication.

  5. Klik tombol Create Consumer.

  6. Konfigurasikan parameter, lalu klik OK.

    Tabel berikut menjelaskan parameter tersebut.

    configuration item

    Description

    Consumer Name

    Masukkan nama kustom untuk konsumen.

    Consumer Description

    Jelaskan konsumen tersebut.

    Authentication Type

    Metode autentikasi yang saat ini didukung oleh konsumen.

    Key Type

    • Symmetric Key: Menghasilkan konfigurasi JWKS default (unik per konsumen) yang berisi kunci yang digunakan untuk mengenkripsi atau mendekripsi token.

    • Asymmetric Key: Mengharuskan Anda menyediakan konfigurasi JWKS lengkap. Gunakan kunci privat Anda untuk menandatangani token. Gateway menggunakan kunci publik dari JWKS Anda untuk memverifikasinya.

    JWKS

    Atur konfigurasi JWKS. Untuk detail spesifikasi JWKS, lihat JSON Web Key (JWK).

    JWT Token

    Konfigurasikan pengaturan token JWT.

    • Type: Jenis parameter token. Default adalah Header.

    • Key: Nama parameter token.

    • Prefix: Awalan untuk nama parameter token. Secara default, token divalidasi di Authorization Header dengan awalan Bearer, contohnya: Authorization: Bearer token.

    • Enable Passthrough: Jika dipilih, parameter token diteruskan ke layanan backend.

    Consumer Identity in JWT Payload

    Tentukan kunci dan nilai dalam payload JWT untuk mengidentifikasi konsumen ini. Secara default, kuncinya adalah uid dan nilainya adalah string acak. Anda dapat mengubah nilai-nilai ini.

    Payload token JWT seharusnya tampak seperti berikut:

    {
      "uid": "11215ac069234abcb8944232b79ae711"
    }

Token generation methods

Bagian ini memberikan contoh Java. Pengguna bahasa pemrograman lain dapat mencari alat setara untuk menghasilkan pasangan kunci.

Buat proyek Maven baru dan tambahkan dependensi berikut:

<dependency>
    <groupId>org.bitbucket.b_c</groupId>
    <artifactId>jose4j</artifactId>
    <version>0.7.0</version>
</dependency>

Generate a token using the default symmetric key

Expand to view code

package org.example;
import java.io.UnsupportedEncodingException;
import java.security.PrivateKey;
import org.jose4j.base64url.Base64;
import org.jose4j.json.JsonUtil;
import org.jose4j.jwk.OctJwkGenerator;
import org.jose4j.jwk.OctetSequenceJsonWebKey;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
import org.jose4j.keys.HmacKey;
import org.jose4j.lang.JoseException;
import sun.lwawt.macosx.CSystemTray;
public class Main {
    public static void main(String[] args) throws JoseException, UnsupportedEncodingException {
        // Use the example JWKS shown earlier
        String privateKeyJson = "{\n"
                + "    \"k\": \"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQOd_DO4GOkEY\",\n"
                + "    \"kty\": \"oct\",\n"
                + "    \"alg\": \"HS256\",\n"
                + "}";
        JwtClaims claims = new JwtClaims();
        claims.setGeneratedJwtId();
        claims.setIssuedAtToNow();
        // Set expiration time (must be less than 7 days)
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
        // Add custom claims; use String values only
        // Set consumer identifier
        claims.setClaim("uid", "11215ac069234abcb8944232b79ae711");
        JsonWebSignature jws = new JsonWebSignature();
        // Set encryption algorithm
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256);
        jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));
        jws.setPayload(claims.toJson());
        String jwtResult = jws.getCompactSerialization();
        System.out.println("Generate Json Web token , result is \n " + jwtResult);
    }
}

Catatan konfigurasi kode:

  • privateKeyJson: Ini adalah JWKS yang digunakan saat membuat konsumen. Catat saat pembuatan atau ambil kembali nanti dari bagian Authentication Configuration di tab Basic Settings pada halaman detail konsumen.

  • Tetapkan identitas konsumen dengan claims.setClaim("uid", "11215ac069234abcb8944232b79ae711"). Ini sesuai dengan ID konsumen default yang dihasilkan di konsol tetapi dapat disesuaikan. Lihat nilai saat ini di bidang Consumer Identifier di bawah Authentication Configuration pada tab Basic Settings halaman detail konsumen.

  • Tetapkan algoritma enkripsi dengan jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256). Ini harus sesuai dengan algoritma yang ditentukan dalam JWKS Anda.

    Catatan

    Algoritma yang didukung meliputi ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512, HS256, HS384, HS512, dan EdDSA.

    Saat memilih Symmetric key untuk Key Type, masukkan JWKS dengan properti kunci berikut: "kty":"oct", "k":"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQ0d_D04G0kEY", dan "alg":"HS256".

    Untuk enkripsi simetris, dekode nilai "k":

    jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));

    Anda juga dapat mengambil identitas konsumen dari bidang Consumer Identifier di bawah Authentication Configuration pada tab Basic Settings halaman detail konsumen.

  • Tetapkan waktu kedaluwarsa. Waktu tersebut harus kurang dari 7 hari. Hasilkan token baru setelah kedaluwarsa untuk menjaga keamanan.

    ...
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
    ...
  • Berdasarkan kebutuhan bisnis Anda, Anda dapat menambahkan parameter kustom ke PAYLOAD dalam JWKS.

Generate a token using an asymmetric key

Expand to view code

package org.example;
import java.io.UnsupportedEncodingException;
import java.security.PrivateKey;
import org.jose4j.base64url.Base64;
import org.jose4j.json.JsonUtil;
import org.jose4j.jwk.OctJwkGenerator;
import org.jose4j.jwk.OctetSequenceJsonWebKey;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
import org.jose4j.keys.HmacKey;
import org.jose4j.lang.JoseException;
import sun.lwawt.macosx.CSystemTray;
public class Main {
    public static void main(String[] args) throws JoseException, UnsupportedEncodingException {
        // Use the example JWKS shown earlier
        String privateKeyJson = "{\n"
                + "    \"k\": \"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQOd_DO4GOkEY\",\n"
                + "    \"kty\": \"oct\",\n"
                + "    \"alg\": \"HS256\",\n"
                + "}";
        JwtClaims claims = new JwtClaims();
        claims.setGeneratedJwtId();
        claims.setIssuedAtToNow();
        // Set expiration time (must be less than 7 days)
        NumericDate date = NumericDate.now();
        date.addSeconds(120*60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
        // Add custom claims; use String values only
        // Set consumer identifier
        claims.setClaim("uid", "11215ac069234abcb8944232b79ae711");
        JsonWebSignature jws = new JsonWebSignature();
        // Set encryption algorithm
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256);
        jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));
        jws.setPayload(claims.toJson());
        String jwtResult = jws.getCompactSerialization();
        System.out.println("Generate Json Web token , result is \n " + jwtResult);
    }
}

Catatan konfigurasi kode:

  • Konfigurasikan privateKeyJson, identitas konsumen, dan waktu kedaluwarsa seperti yang dijelaskan untuk enkripsi simetris.

  • Tetapkan algoritma enkripsi dengan jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256). Ini harus sesuai dengan algoritma dalam JWKS Anda.

    Di bidang konfigurasi JWKS konsol, masukkan kunci asimetris dalam format JSON dengan tipe kunci (kty) RSA. Sertakan parameter RSA standar seperti p, q, d, dan e, dengan e diatur ke AQAB. Di bagian konfigurasi JWT Token, atur Type ke HEADER, Key ke Authorization, Prefix ke Bearer, dan centang Pass-through.

    Untuk enkripsi asimetris, tandatangani token dengan kunci privat Anda:

    ...
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
        PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey();
        jws.setKey(privateKey);
    ...
  • Berdasarkan kebutuhan bisnis Anda, Anda dapat menambahkan parameter kustom ke PAYLOAD dalam JWKS.

Aktifkan autentikasi route

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih Wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Routes. Lalu, klik tab Routes.

  5. Di kolom Actions untuk route target, klik Policies.

  6. Di tab Policies, klik Authentication. Setelah dikonfigurasi, klik Save.

    Parameter

    Description

    Authentication Method

    Metode autentikasi yang digunakan untuk route ini.

    Enabling Status

    Saat diaktifkan, autentikasi dan otorisasi berlaku.

Berikan akses kepada konsumen

  1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih Wilayah.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.

  3. Di halaman Gateways, klik ID gateway.

  4. Di panel navigasi kiri, klik Security Management > Consumer Authentication.

  5. Di kolom Actions untuk konsumen target, klik Authorization.

  6. Di tab Consumer Authorization, klik Associate Route, pilih route yang akan diberi otorisasi untuk konsumen ini, lalu klik OK.