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. |
|
|
Authentication configuration (using JWT as an example) |
|
|
|
Authorization configuration |
Saat membuat konfigurasi, masukkan daftar Domain Name dan Path untuk blacklist atau whitelist.
|
|
Buat konsumen
-
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih Wilayah.
-
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.
-
Di halaman Gateways, klik nama gateway target.
-
Di panel navigasi kiri, klik Security Management > Consumer Authentication.
-
Klik tombol Create Consumer.
-
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
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.CatatanAlgoritma 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
PAYLOADdalam JWKS.
Generate a token using an asymmetric key
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 sepertip,q,d, dane, denganediatur keAQAB. Di bagian konfigurasi JWT Token, atur Type ke HEADER, Key keAuthorization, Prefix keBearer, 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
PAYLOADdalam JWKS.
Aktifkan autentikasi route
-
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih Wilayah.
-
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.
-
Di halaman Gateways, klik ID gateway.
-
Di panel navigasi kiri, klik Routes. Lalu, klik tab Routes.
-
Di kolom Actions untuk route target, klik Policies.
-
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
-
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih Wilayah.
-
Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways.
-
Di halaman Gateways, klik ID gateway.
-
Di panel navigasi kiri, klik Security Management > Consumer Authentication.
-
Di kolom Actions untuk konsumen target, klik Authorization.
-
Di tab Consumer Authorization, klik Associate Route, pilih route yang akan diberi otorisasi untuk konsumen ini, lalu klik OK.