All Products
Search
Document Center

Function Compute:Konfigurasi Autentikasi JWT untuk Pemicu HTTP

Last Updated:Mar 20, 2026

Konfigurasikan autentikasi JWT untuk Pemicu HTTP di Function Compute. Hal ini memastikan hanya klien yang memiliki Token Web JSON (JWT) valid yang dapat mengakses layanan HTTP Anda, sehingga meningkatkan keamanan serta mencegah akses tidak sah dan serangan berbahaya.

Informasi latar belakang

Pendahuluan

Function Compute mendukung autentikasi JWT untuk Pemicu HTTP. Token Web JSON (JWT), yang didefinisikan dalam RFC 7519, merupakan skema autentikasi berbasis token. Informasi status pengguna disimpan dalam Token dan disediakan oleh klien. Fungsi tidak menyimpan informasi ini, menjadikan JWT sebagai metode autentikasi yang sesuai dengan arsitektur tanpa server. Function Compute melakukan autentikasi terhadap permintaan pemanggilan HTTP menggunakan kumpulan Kunci Web JSON Publik (JWKS) yang dikaitkan dengan Pemicu HTTP tersebut. Berdasarkan konfigurasi Pemicu HTTP, Function Compute meneruskan claims sebagai parameter ke fungsi. Fungsi tidak perlu melakukan autentikasi permintaan—fungsi hanya fokus pada logika bisnis. Untuk informasi lebih lanjut mengenai proses autentikasi dan konsep dasar Token JWT, lihat Autentikasi Token Berbasis JWT dan Pengantar JWT.

Alur Autentikasi JWT

image

Gambar di atas menunjukkan diagram urutan seluruh alur bisnis untuk autentikasi JWT menggunakan Pemicu HTTP Function Compute dengan enkripsi asimetris. Langkah-langkahnya adalah sebagai berikut.

  1. Klien mengirim permintaan autentikasi ke layanan otorisasi kustom. Permintaan ini biasanya mencakup username dan password pengguna akhir.

  2. Layanan otorisasi kustom membaca dan memverifikasi informasi autentikasi, seperti username dan password, dari permintaan tersebut. Setelah verifikasi berhasil, layanan tersebut menghasilkan Token standar menggunakan kunci privat.

  3. Layanan otorisasi kustom mengembalikan respons yang berisi Token kepada klien. Klien harus menyimpan cache Token ini secara lokal.

  4. Klien mengirim permintaan bisnis ke Pemicu HTTP, termasuk Token.

  5. Pemicu HTTP memverifikasi Token dalam permintaan menggunakan kunci publik yang dikonfigurasi oleh pengguna.

  6. Setelah verifikasi berhasil, permintaan diteruskan ke fungsi yang dilindungi.

  7. Fungsi yang dilindungi memproses permintaan bisnis dan mengembalikan respons.

  8. Pemicu HTTP mengembalikan respons bisnis kepada klien.

Prasyarat

  • Layanan telah dibuat. Untuk informasi lebih lanjut, lihat Membuat Layanan.

  • Anda telah membuat fungsi HTTP. Untuk langkah-langkah spesifik, lihat Buat Fungsi.

Batasan

  • Anda dapat menghasilkan dan mendistribusikan JWT dengan metode apa pun. Function Compute melakukan autentikasi JWT menggunakan JWKS publik yang dikonfigurasi pada pemicu.

  • JWKS tanpa kid didukung.

  • Anda dapat membaca token dari header, parameter Query (GET), parameter form (POST), dan cookie.

  • Anda dapat meneruskan claims ke fungsi sebagai header, parameter form (POST), dan cookie.

  • Function Compute mendukung konfigurasi satu set Kunci Web JSON (JWKS) untuk Pemicu HTTP. Sistem mencari JWKS untuk menemukan JWK publik yang memiliki kid yang sama dengan Token, lalu menggunakan kunci publik tersebut untuk memverifikasi signature Token. JWKS pada satu pemicu hanya boleh memiliki paling banyak satu JWK dengan kid yang kosong atau tidak ada.

    Function Compute mendukung algoritma JWT berikut.

    Signature Algorithm

    Nilai alg

    RSASSA-PKCS1-V1_5

    RS256, RS384, RS512

    RSASSA-PSS

    PS256, PS384, PS512

    Elliptic Curve (ECDSA)

    ES256, ES384, ES512

    HMAC

    HS256, HS384, HS512

    EdDSA

    EdDSA

    Penting
    • Algoritma signature HMAC menggunakan enkripsi simetris, yang memberikan tingkat keamanan lebih rendah. Gunakan algoritma enkripsi asimetris untuk keamanan yang lebih tinggi.

    • Saat menggunakan algoritma enkripsi asimetris, sertakan hanya informasi kunci publik dalam JWT Anda. Jangan sertakan informasi kunci privat.

    • Gunakan HTTPS untuk melindungi informasi sensitif, seperti Token, dalam permintaan. Hal ini mencegah kebocoran Token.

Prosedur

Langkah 1: Konfigurasi Autentikasi JWT

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Services & Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.

  3. Pada halaman Functions, klik nama fungsi yang diinginkan. Pada halaman Detail Fungsi yang muncul, klik tab Trigger Management (URL).

  4. Pada tab Trigger Management (URL), klik tombol Edit di kolom Actions untuk Pemicu HTTP.

  5. Pada panel Edit Trigger, konfigurasikan item berikut, lalu klik OK.

    1. Atur Authentication Method menjadi JWT Authentication.

      image

    2. Konfigurasi JWKS.

      Untuk mengonfigurasi autentikasi JWT pada Pemicu HTTP, Anda harus menyediakan JSON Web Key Set (JWKS) yang valid. Anda dapat membuat JWKS sendiri, atau mencari JSON Web Key Generator untuk menemukan tool online, seperti mkjwk.org. Jika Anda memiliki kunci dalam format PEM, gunakan tool seperti jwx untuk mengonversinya ke format JWKS.

      Dokumen ini menunjukkan contoh pembuatan JWKS menggunakan mkjwk.org. Seperti ditunjukkan pada gambar berikut, pada antarmuka pembuatan, atur Key Use menjadi Signature, Algorithm menjadi RS256, dan Show X.509 menjadi Yes. Lalu, klik Generate. Gunakan Private Key (① pada gambar) dalam kode Anda untuk menerbitkan Token JWT. Simpan dengan aman. Salin isi Public Key (② pada gambar) ke dalam array keys pada konfigurasi JWKS di konsol.

      image.png

      image

      Contoh berikut menunjukkan JWKS yang dikonfigurasi dalam dokumen ini.

      {
          "keys": [
              {
                  "alg": "RS256",
                  "e": "AQAB",
                  "kty": "RSA",
                  "n": "u1LWgoomekdOMfB1lEe96OHehd4XRNCbZRm96RqwOYTTc28Sc_U5wKV2umDzolfoI682ct2BNnRRahYgZPhbOCzHYM6i8sRXjz9Ghx3QHw9zrYACtArwQxrTFiejbfzDPGdPrMQg7T8wjtLtkSyDmCzeXpbIdwmxuLyt_ahLfHelr94kEksMDa42V4Fi5bMW4cCLjlEKzBEHGmFdT8UbLPCvpgsM84JK63e5ifdeI9NdadbC8ZMiR--dFCujT7AgRRyMzxgdn2l-nZJ2ZaYzbLUtAW5_U2kfRVkDNa8d1g__2V5zjU6nfLJ1S2MoXMgRgDPeHpEehZVu2kNaSFvDUQ",
                  "use": "sig"
              }
          ]
      }
    3. Pada JWT Token Configuration, pilih lokasi Token dan nama Token.

      Lokasi Token mendukung Header, Cookie, parameter Query (GET), dan parameter form (POST). Jika Anda memilih Header sebagai lokasi Token, tentukan Parameter Name dan Prefix to Remove. Function Compute akan menghapus konten awalan yang ditetapkan di Prefix to Remove saat mengambil Token.set_token

      Penting

      Saat mengatur Prefix to Remove, periksa apakah terdapat spasi setelah awalan tersebut. Tambahkan spasi setelah bidang awalan, misalnya Bearer .

    4. Pada konfigurasi JWT Claim Transformation, pilih lokasi parameter, nama parameter asli, dan nama parameter setelah diteruskan ke fungsi.

      Lokasi parameter yang dipetakan mendukung Header, Cookie, dan parameter form (POST).jwt_claim_switch

    5. Atur mode pencocokan permintaan.

      • Match All: Semua permintaan HTTP memerlukan validasi JWT.

      • Whitelist Mode: Permintaan HTTP dengan path yang ditetapkan dalam Request Path Whitelist tidak memerlukan validasi JWT. Permintaan lainnya memerlukan validasi JWT.

      • Blacklist Mode: Permintaan HTTP dengan path yang ditetapkan dalam Request Path Blacklist memerlukan validasi JWT. Permintaan lainnya tidak memerlukan validasi JWT.

      Whitelist Mode dan Blacklist Mode mendukung dua mode pencocokan berikut.

      • Pencocokan eksak

        Path permintaan harus persis sama dengan path yang dikonfigurasi. Misalnya, jika Anda menetapkan Request Path Blacklist ke /a, permintaan dari path /a memerlukan validasi JWT. Permintaan dari path /a/ tidak memerlukan validasi.

      • Pencocokan fuzzy

        Gunakan karakter wildcard (*) untuk menetapkan path. Karakter wildcard (*) hanya boleh muncul di akhir path. Misalnya, jika Anda menetapkan Request Path Blacklist ke /login/*, permintaan dengan awalan path /login/ (seperti /login/a atau /login/b/c/d) memerlukan validasi JWT.

Langkah 2: Verifikasi Operasi

Menggunakan tool debugging seperti Postman, masukkan endpoint akses dan Token sesuai konfigurasi JWT Pemicu HTTP. Verifikasi bahwa Anda dapat mengakses layanan HTTP tersebut.

  1. Gunakan Private Key berformat X.509 PEM yang dihasilkan pada Langkah 1 sebagai kunci privat untuk menerbitkan Token JWT. Langkah-langkah berikut menunjukkan cara menghasilkan Token menggunakan skrip Python lokal.

    1. Instal modul PyJWT.

      pip install 'PyJWT>=2.0'
    2. Jalankan skrip contoh Python berikut secara lokal untuk menghasilkan Token JWT.

      import jwt
      import time
      
      private_key = """
      -----BEGIN PRIVATE KEY-----
      <Use the X.509 PEM-formatted private key generated in Step 1>
      -----END PRIVATE KEY-----
      """
      
      headers = {
          "alg": "RS256",
          "typ": "JWT"
      }
      
      payload = {
          "sub": "1234567890",
          "name": "John Snow",
          "iat": int(time.time()),   # Waktu penerbitan token
          "exp": int(time.time()) + 60 * 60,   # Atur masa berlaku token menjadi 1 jam
      }
      
      
      encoded = jwt.encode(payload=payload, key=private_key.encode(), headers=headers)
      print("Generated token: %s" % encoded)
      
  2. Gunakan Postman untuk memverifikasi bahwa layanan HTTP dapat diakses.

    1. Pada tab Trigger Management (URL) fungsi target, ambil endpoint akses jaringan publik Pemicu HTTP dan masukkan ke dalam bidang URL di Postman.

    2. Pada Headers Postman, konfigurasikan informasi parameter Token, lalu klik Send untuk mengirim permintaan. Contoh berikut menunjukkan Token yang diisi dalam dokumen ini.

      Name

      Example Value

      Description

      Key

      Authentication

      Nama parameter yang ditetapkan di JWT Token Configuration.

      Value

      Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9uIFNub3ciLCJhZG1pbiI6dHJ1ZSwiZXhwIjo0ODI5NTk3NjQxfQ.eRcobbpjAd3OSMxcWbmbicOTLjO2vuLR9F2QZMK4rz1JqfSRHgwQVqNxcfOIO9ckDMNlF_3jtdfCfvXfka-phJZpHmnaQJxmnOA8zA3R4wF4GUQdz5zkt74cK9jLAXpokwrviz2ROehwxTCwa0naRd_N9eFhvTRnP3u7L0xn3ll4iOf8Q4jS0mVLpjyTa5WiBkN5xi9hkFxd__p98Pah_Yf0hVQ2ldGSyTtAMmdM1Bvzad-kdZ_wW0jcctIla9bLnOo-Enr14EsGvziMh_QTZ3HQtJuToSKZ11xkNgaz7an5de6PuF5ISXQzxigpFVIkG765aEDVtEnFkMO0xyPGLQ

      Di JWT Token Configuration, Anda dapat mengonfigurasi sistem untuk menghapus awalan saat membangun token JWT. Misalnya, asumsikan awalan yang dihapus diatur ke Bearer .

      Penting

      Perhatikan bahwa awalan dan spasi parameter JWT dalam header permintaan harus sesuai dengan konten Prefix to Remove yang ditetapkan di JWT Token Configuration. Jika tidak, pemicu gagal mengurai Token dan mengembalikan error "invalid or expired jwt".

Gunakan Autentikasi JWT dengan Nama Domain Kustom

image

Seperti ditunjukkan pada gambar di atas, nama domain kustom berada sebelum Pemicu HTTP. Permintaan pengguna pertama kali diproses oleh nama domain kustom, lalu oleh Pemicu HTTP. Logika autentikasi JWT berada pada Pemicu HTTP. Bagian berikut menjelaskan cara menggunakan autentikasi JWT dengan nama domain kustom.

Nama Domain Kustom Normal

Jika Anda mengonfigurasi routing untuk nama domain kustom tetapi tidak mengonfigurasi kebijakan rewrite, path dalam permintaan HTTP masuk adalah path permintaan nama domain kustom tersebut.

Asumsikan aturan routing untuk nama domain kustom www.fc-jwt.com adalah sebagai berikut. Pemicu HTTP untuk fungsi jwt-demo telah dikonfigurasi dengan autentikasi JWT, dan Request Path Blacklist diatur ke /fc-jwt/auth/*.

Path

Service Name

Function Name

Version

/fc-jwt/*

jwt

jwt-demo

1

Jika pengguna meminta URL /fc-jwt/auth/aliyun, Pemicu HTTP memvalidasi permintaan tersebut karena path yang mencapai Pemicu HTTP sesuai dengan Request Path Blacklist yang dikonfigurasi.

Gabungkan dengan Fitur Rewrite Nama Domain Kustom

Jika Anda mengonfigurasi routing untuk nama domain kustom dan kebijakan rewrite, path dalam permintaan HTTP masuk adalah path hasil rewrite dari nama domain kustom tersebut. Untuk informasi lebih lanjut tentang fitur rewrite nama domain kustom, lihat Konfigurasi Kebijakan Rewrite (Pratinjau Publik).

Asumsikan aturan routing untuk nama domain kustom www.fc-jwt.com adalah sebagai berikut. Pemicu HTTP untuk fungsi jwt-demo telah dikonfigurasi dengan autentikasi JWT, dan Request Path Blacklist diatur ke /fc-jwt/auth/*. Kebijakan rewrite wildcard juga dikonfigurasi (aturan pencocokan adalah /fc-jwt/*, aturan penggantian adalah /$1).

Path

Service Name

Function Name

Version

/fc-jwt/*

jwt

jwt-demo

1

Jika pengguna meminta URL /fc-jwt/auth/aliyun, URL hasil rewrite-nya adalah /auth/aliyun. Untuk informasi lebih lanjut tentang aturan rewrite wildcard, lihat Rewrite Wildcard. Dalam kasus ini, Pemicu HTTP tidak memvalidasi permintaan karena path yang mencapai Pemicu HTTP adalah /auth/aliyun, yang tidak sesuai dengan Request Path Blacklist yang dikonfigurasi.

Jika Anda mengonfigurasi Request Path Blacklist pemicu menjadi /auth/*, Pemicu HTTP akan melakukan validasi JWT untuk permintaan ke URL /fc-jwt/auth/aliyun.

FAQ

Mengapa akses ke fungsi mengembalikan pesan "invalid or expired jwt" setelah mengaktifkan autentikasi JWT untuk pemicu?

Pesan ini menunjukkan kegagalan autentikasi JWT. Kemungkinan penyebabnya meliputi:

  • Signature atau format Token Anda tidak valid, sehingga menyebabkan error validasi.

  • Token Anda telah kedaluwarsa, sehingga menyebabkan error validasi.

  • kid dalam token Anda tidak sesuai dengan JWKS yang dikonfigurasi pada pemicu, atau JWK yang cocok tidak akurat, sehingga mencegah validasi token yang benar.

Mengapa akses ke fungsi mengembalikan pesan "the jwt token is missing" setelah mengaktifkan autentikasi JWT untuk pemicu?

Pesan ini menunjukkan Function Compute tidak dapat menemukan Token berdasarkan konfigurasi JWT Token. Periksa apakah permintaan menyertakan Token dan apakah lokasi atau nama Token tersebut benar. Jika Anda memilih Header sebagai lokasi pembacaan saat mengonfigurasi JWT Token Configuration, tambahkan Prefix to Remove beserta spasi saat menyetel Token. Jika tidak, akan terjadi error.

Apakah mengaktifkan autentikasi JWT menimbulkan biaya tambahan?

Tidak ada biaya tambahan yang dikenakan. Fitur gateway default Function Compute ditagih berdasarkan jumlah pemanggilan fungsi. Oleh karena itu, mengaktifkan autentikasi JWT tidak menimbulkan biaya tambahan.