All Products
Search
Document Center

Alibaba Cloud Service Mesh:Konfigurasikan otentikasi berbasis JWT pada gateway ingress

Last Updated:Jul 02, 2025

Anda dapat mengaktifkan otentikasi berbasis JWT pada gateway untuk menerapkan otentikasi dan otorisasi terpusat. Dengan cara ini, hanya permintaan yang telah diautentikasi yang dapat mengakses layanan backend. JWT adalah singkatan dari JSON Web Token.

Informasi Latar Belakang

JWT umumnya digunakan untuk mengotentikasi pengguna. JWT membawa informasi pengguna dan bidang yang menyimpan informasi pengguna terenkripsi. Saat Anda menerapkan otentikasi berbasis JWT, informasi pengguna terenkripsi didekripsi dan dibandingkan dengan informasi pengguna masukan untuk memverifikasi identitas pengguna. Untuk informasi lebih lanjut, lihat JWT.

Prasyarat

Prosedur

  1. Masuk ke Konsol ASM. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sisi kiri, pilih ASM Gateways > Ingress Gateway.

  3. Di halaman Ingress Gateway, klik nama gateway ingress yang ingin Anda gunakan.

  4. Di panel navigasi ikhtisar Gateway, pilih Gateway Security > JWT certification.

  5. Di langkah JWT Config dari wizard konfigurasi, aktifkan Enable gateway JWT authentication, konfigurasikan parameter terkait, lalu klik Next.

    Parameter

    Deskripsi

    Issuer

    Penerbit JWT. Dalam contoh ini, parameter diatur ke testing@secure.istio.io.

    JWKS Source

    JSON Web Key Set (JWKS) yang digunakan untuk memverifikasi JWT. Dalam contoh ini, jwks dipilih.

    Key

    Contoh nilai:

    { "keys":[ {"e":"AQAB","kid":"DHFbpoIUqrY8t2zpA2qXfCmr5VO5ZEr4RzHU_-envvQ","kty":"RSA","n":"xAE7eB6qugXyCAG3yhh7pkDkT65pHymX-P7KfIupjf59vsdo91bSP9C8H07pSAGQO1MV_xFj9VswgsCg4R6otmg5PV2He95lZdHtOcU5DXIg_pbhLdKXbi66GlVeK6ABZOUW3WYtnNHD-91gVuoeJT_DwtGGcp4ignkgXfkiEm4sw-4sfb4qdt5oLbyVpmW6x9cfa7vs2WTfURiCrBoUqgBo_-4WTiULmmHSGZHOjzwa8WtrtOQGsAFjIbno85jp6MnGGGZPYZbDAa_b3y5u-YpW7ypZrvD8BgtKVjgtQgZhLAGezMt0ua3DRrWnKqTZ0BJ_EyxOGuHJrLsn00fnMQ"}]}

    AdvancedConfig

    Klik AdvancedConfig. Di kotak dialog JWT Rules Advanced Options, atur Posisi JWTToken, JWT Passthrough, dan Transmisikan Payload melalui Header sesuai kebutuhan Anda. Klik OK.

  6. Di langkah Matching Rules dari wizard konfigurasi, konfigurasikan parameter dan klik Submit.

    Parameter

    Deskripsi

    Match Mode

    Dalam contoh ini, Auth If Matched dipilih. Nilai valid:

    • Auth If Matched: Otentikasi berbasis JWT dilakukan pada permintaan yang ditentukan.

    • Bypass Auth If Matched: Otentikasi berbasis JWT tidak diperlukan untuk permintaan yang ditentukan.

    Matching Rules

    Pilih Custom Matching Rules, aktifkan Path, lalu atur parameter ini ke /productpage. Konfigurasi ini menunjukkan bahwa permintaan ke path /productpage harus melewati otentikasi berbasis JWT. Permintaan ke path lain tidak diharuskan melewati otentikasi berbasis JWT.

    Catatan

    Dalam kasus ini, permintaan untuk mengakses path lain diizinkan jika mereka tidak membawa JWT atau ditolak jika mereka membawa JWT yang tidak valid.

    Kemudian, pesan yang menunjukkan JWT-based authentication is successfully configured muncul, dan sumber daya keamanan Istio asli ditampilkan. Anda dapat mengklik YAML untuk melihat konfigurasi sumber daya.

  7. Verifikasi apakah konfigurasi otentikasi berbasis JWT berlaku.

    1. Jalankan perintah berikut untuk mengonfigurasi variabel lingkungan:

      TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IkRIRmJwb0lVcXJZOHQyenBBMnFYZkNtcjVWTzVaRXI0UnpIVV8tZW52dlEiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ2ODU5ODk3MDAsImZvbyI6ImJhciIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoidGVzdGluZ0BzZWN1cmUuaXN0aW8uaW8iLCJzdWIiOiJ0ZXN0aW5nQHNlY3VyZS5pc3Rpby5pbyJ9.CfNnxWP2tcnR9q0vxyxweaF3ovQYHYZl82hAUsn21bwQd9zP7c-LS9qd_vpdLG4Tn1A15NxfCjp5f7QNBUo-KC9PJqYpgGbaXhaGx7bEdFWjcwv3nZzvc7M__ZpaCERdwU7igUmJqYGBYQ51vr2njU9ZimyKkfDe3axcyiBZde7G6dabliUosJvvKOPcKIWPccCgefSj_GNfwIip3-SsFdlR7BtbVUcqR-yv-XOxJ3Uc1MI0tz3uMiiZcyPV7sNCU4KRnemRIMHVOfuvHsU60_GhGbiSFzgPTAa9WTltbnarTbxudb_YEOx12JiwYToeX0DCPb43W1tzIBxgm8NxUg
    2. Jalankan perintah berikut untuk melakukan tes akses:

      • Tes 1: Kirim permintaan yang membawa JWT valid untuk mengakses path /productpage.

        curl -I http://${Alamat IP gateway ASM}/productpage -H "Authorization: Bearer $TOKEN"

        Contoh keluaran:

        HTTP/1.1 200 OK
        content-type: text/html; charset=utf-8
        content-length: 4294
        server: istio-envoy
        date: Tue, 17 Jan 2023 08:47:34 GMT
        x-envoy-upstream-service-time: 17
      • Tes 2: Kirim permintaan yang tidak membawa JWT untuk mengakses path /productpage.

        curl -I http://${Alamat IP gateway ASM}/productpage

        Contoh keluaran:

        HTTP/1.1 403 Forbidden
        content-length: 19
        content-type: text/plain
        date: Tue, 17 Jan 2023 08:50:31 GMT
        server: istio-envoy
      • Tes 3: Kirim permintaan yang membawa JWT tidak valid untuk mengakses path /productpage.

        curl -I http://${Alamat IP gateway ASM}/productpage -H "Authorization: Bearer invalid token"

        Contoh keluaran:

        HTTP/1.1 401 Unauthorized
        www-authenticate: Bearer realm="http://114.55.XXX.XXX/productpage", error="invalid_token"
        content-length: 79
        content-type: text/plain
        date: Tue, 17 Jan 2023 08:51:47 GMT
        server: istio-envoy
      • Tes 4: Kirim permintaan yang tidak membawa JWT untuk mengakses path lain.

        curl -I http://${Alamat IP gateway ASM}/api/v1/products/1  
        HTTP/1.1 200 OK
        content-type: application/json
        content-length: 195
        server: istio-envoy
        date: Tue, 17 Jan 2023 08:55:10 GMT
        x-envoy-upstream-service-time: 16

      Tabel berikut menjelaskan hasil tes. Hasil tes sesuai harapan, yang menunjukkan bahwa otentikasi berbasis JWT berlaku.

      Tes Akses

      Akses diizinkan?

      Kirim permintaan yang membawa JWT valid untuk mengakses path /productpage.

      Ya

      Kirim permintaan yang tidak membawa JWT untuk mengakses path /productpage.

      Tidak

      Kirim permintaan yang membawa JWT tidak valid untuk mengakses path /productpage.

      Tidak

      Kirim permintaan yang tidak membawa JWT untuk mengakses path lain.

      Ya

Referensi