All Products
Search
Document Center

Function Compute:Konfigurasikan autentikasi JWT untuk pemicu HTTP

Last Updated:Mar 25, 2026

Konfigurasikan autentikasi JSON Web Token (JWT) untuk pemicu HTTP agar hanya klien yang memiliki JWT valid yang dapat mengakses fungsi Anda. Pendekatan ini melindungi layanan HTTP Anda dari akses tidak sah dan serangan berbahaya.

Latar Belakang

Ikhtisar

Function Compute mendukung autentikasi JWT untuk pemicu HTTP. JWT (JSON Web Token, RFC7519) adalah skema autentikasi berbasis token yang praktis. Informasi status pengguna disimpan dalam Token, yang disediakan oleh klien. Fungsi (server) tidak perlu menyimpan informasi ini, sehingga metode ini ramah terhadap arsitektur Serverless. Function Compute dapat mengautentikasi JWT dalam permintaan HTTP dengan menggunakan JWKS publik yang Anda bind ke pemicu HTTP. Berdasarkan konfigurasi pemicu HTTP, claims dapat diteruskan ke fungsi sebagai parameter. Hal ini memungkinkan fungsi fokus pada logika bisnis alih-alih melakukan proses autentikasi. Untuk mempelajari lebih lanjut tentang proses autentikasi Token JWT dan konsep dasarnya, lihat Autentikasi token berbasis JWT dan Pengenalan JWT.

Alur autentikasi JWT

image

Diagram di atas menggambarkan proses autentikasi JWT untuk pemicu HTTP yang menggunakan algoritma enkripsi asimetris:

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

  2. Layanan autentikasi kustom memverifikasi kredensial dalam permintaan, seperti username dan password. Setelah verifikasi berhasil, layanan tersebut menggunakan kunci privat untuk menghasilkan token standar.

  3. Layanan autentikasi kustom mengembalikan token tersebut ke klien dalam tanggapan. Klien menyimpan token ini secara lokal di cache.

  4. Klien mengirim permintaan bisnis yang menyertakan token tersebut ke pemicu HTTP.

  5. Pemicu HTTP menggunakan kunci publik yang dikonfigurasi untuk memverifikasi token dalam permintaan.

  6. Setelah verifikasi berhasil, pemicu meneruskan permintaan ke fungsi yang dilindungi.

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

  8. Pemicu HTTP mengembalikan tanggapan bisnis ke klien.

Prasyarat

Fungsi dan pemicu HTTP telah dibuat. Untuk informasi selengkapnya, lihat Buat fungsi dan Buat pemicu.

Batasan

  • Anda dapat menghasilkan dan mendistribusikan JWT dengan cara apa pun. Function Compute mengautentikasi JWT menggunakan JWKS publik yang dikonfigurasi untuk pemicu.

  • Function Compute mendukung JWK tanpa key ID (kid).

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

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

  • Function Compute memungkinkan Anda mengonfigurasi JWKS untuk pemicu HTTP. Sistem mencari JWKS untuk menemukan JWK publik dengan key ID (kid) yang sesuai dengan kid dalam token. Pemicu kemudian menggunakan kunci ini untuk memverifikasi signature token tersebut. JWKS pemicu dapat berisi paling banyak satu JWK yang tidak memiliki kid atau memiliki string kosong sebagai kid.

    Function Compute JWT mendukung algoritma berikut.

    Algoritma signature

    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 dan kurang aman. Kami menyarankan menggunakan algoritma enkripsi asimetris yang lebih aman.

    • Saat menggunakan algoritma enkripsi asimetris, pastikan JWKS Anda hanya berisi informasi kunci publik demi keamanan. Jangan sertakan detail kunci privat.

    • Kami menyarankan menggunakan HTTPS untuk melindungi informasi sensitif dalam permintaan, seperti token.

Prosedur

Langkah 1: Konfigurasikan autentikasi JWT

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Trigger. Temukan pemicu HTTP dan klik Modify di kolom Modify.

  4. Di panel Modify Trigger, konfigurasikan parameter berikut lalu klik OK.

    1. Untuk Authentication Method, pilih JWT Authentication.

    2. Konfigurasikan JWKS.

      Untuk mengonfigurasi autentikasi JWT untuk pemicu HTTP, berikan JWKS yang valid. Anda dapat menghasilkan JWKS sendiri atau menggunakan tool online dengan mencari JSON Web Key Generator. Misalnya, Anda dapat menggunakan mkjwk.org. Jika Anda memiliki kunci dalam format PEM, Anda dapat menggunakan tool seperti jwx untuk mengonversinya ke format JWKS.

      Dokumen ini menggunakan mkjwk.org untuk menunjukkan cara menghasilkan JWKS. Seperti yang ditampilkan pada gambar berikut, di halaman pembuatan kunci, atur Key Use ke Signature, Algorithm ke RS256, dan Show X.509 ke Yes, lalu klik Generate. Gunakan Private Key (① pada gambar) dalam kode Anda untuk menerbitkan token JWT dan simpan dengan aman. Salin Public Key (② pada gambar) dan tempelkan ke dalam array keys konfigurasi JWKS di Konsol.

      image.png

      image

      Contoh berikut menunjukkan konfigurasi JWKS:

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

      Lokasi Token mendukung Header, Cookie, parameter Query (GET), dan parameter Form (POST). Jika Anda memilih Header sebagai lokasi Token, Anda juga harus menentukan Parameter Name dan Remove Prefix. Saat Function Compute mengambil token, awalan yang ditentukan di Remove Prefix akan dihapus.

      image

    4. Di bagian JWT Claim Conversion, tentukan tujuan claim, nama claim asli, dan nama parameter baru yang akan diteruskan ke fungsi.

      Lokasi parameter pemetaan dapat berupa Header, Cookie, atau parameter Form (POST).

      image

    5. Tentukan mode pencocokan permintaan.

      • Match All: Semua permintaan HTTP memerlukan validasi JWT.

      • Whitelist Mode: Permintaan untuk path dalam Whitelist of Request Paths melewati validasi JWT. Semua permintaan lainnya memerlukannya.

      • Blacklist Mode: Hanya permintaan untuk path dalam Blacklist of Request Paths yang memerlukan validasi JWT. Semua permintaan lainnya melewatinya.

      Whitelist Mode dan Blacklist Mode mendukung dua mode pencocokan berikut:

      • Pencocokan eksak

        Path permintaan harus persis sama dengan path yang ditentukan. Misalnya, jika Anda mengatur Blacklist of Request Paths ke /a, permintaan ke path /a memerlukan validasi JWT, tetapi permintaan ke path /a/ tidak.

      • Pencocokan fuzzy

        Anda dapat menggunakan karakter wildcard (*) di akhir path. Misalnya, jika Anda mengatur Blacklist of Request Paths ke /login/*, semua permintaan ke path yang dimulai dengan /login/ (seperti /login/a dan /login/b/c/d) memerlukan validasi JWT.

Langkah 2: Verifikasi konfigurasi

Gunakan tool pengujian, seperti Postman, untuk memverifikasi bahwa Anda dapat mengakses layanan HTTP. Konfigurasikan alamat akses, token, dan informasi lainnya berdasarkan konfigurasi JWT pemicu HTTP.

  1. Gunakan kunci privat dalam format X.509 PEM yang Anda hasilkan di Langkah 1: Konfigurasikan autentikasi JWT untuk menerbitkan token JWT. Langkah-langkah berikut menggunakan Python sebagai contoh untuk menunjukkan cara menghasilkan token dengan menggunakan skrip lokal.

    1. Instal modul PyJWT.

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

      import jwt
      import time
      
      private_key = """
      -----BEGIN PRIVATE KEY-----
      <The private key in X.509 PEM format that you generated in Step 1>
      -----END PRIVATE KEY-----
      """
      
      headers = {
          "alg": "RS256",
          "typ": "JWT"
      }
      
      payload = {
          "sub": "1234567890",
          "name": "John Snow",
          "iat": int(time.time()),   # Waktu saat token diterbitkan.
          "exp": int(time.time()) + 60 * 60,   # Atur masa berlaku token selama satu jam.
      }
      
      
      encoded = jwt.encode(payload=payload, key=private_key.encode(), headers=headers)
      print("Generated token: %s" % encoded)
      
  2. Gunakan Postman untuk memverifikasi akses ke layanan HTTP.

    1. Di tab Trigger pada halaman detail fungsi, dapatkan alamat akses publik pemicu HTTP dan tempelkan ke field URL di Postman.

    2. Di tab Headers di Postman, konfigurasikan parameter token lalu klik Send. Contoh berikut menunjukkan konfigurasi token.

      Parameter

      Nilai

      Deskripsi

      Key

      Authentication

      Nama parameter yang dikonfigurasi di JWT Token Configuration.

      Value

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

      Awalan yang ditentukan di JWT Token Configuration, diikuti oleh token JWT. Nilai contoh mengasumsikan bahwa awalan diatur ke Bearer .

      Penting

      Nilai token dalam header permintaan harus diawali dengan awalan dan spasi persis seperti yang Anda konfigurasi untuk Remove Prefix di bagian JWT Token Configuration. Jika tidak, pemicu gagal mengurai token dan mengembalikan error invalid or expired jwt.

FAQ

Mengapa saya menerima error `invalid or expired jwt` saat mengakses nama domain kustom yang telah diaktifkan autentikasi JWT?

Error ini menunjukkan bahwa autentikasi JWT gagal. Kemungkinan penyebabnya adalah sebagai berikut:

  • Signature atau format token Anda tidak valid.

  • Token Anda telah kedaluwarsa.

  • kid dalam token Anda tidak sesuai dengan JWKS yang Anda konfigurasi untuk nama domain kustom, atau JWK yang cocok salah. Hal ini mencegah token divalidasi dengan benar.

Mengapa saya menerima error `the jwt token is missing` saat mengakses nama domain kustom yang telah diaktifkan autentikasi JWT?

Error ini menunjukkan bahwa Function Compute tidak dapat menemukan token berdasarkan konfigurasi JWT untuk nama domain kustom tersebut. Periksa apakah permintaan berisi token dan apakah lokasi serta nama token sudah benar. Jika Anda mengatur lokasi token ke header saat mengonfigurasi JWT Configuration, Anda harus menambahkan nilai Remove Prefix dan spasi sebelum token. Jika tidak, error akan terjadi.

Apakah ada biaya tambahan untuk mengaktifkan autentikasi JWT?

Tidak. Penagihan untuk fitur terkait gerbang yang disediakan oleh Function Compute didasarkan pada jumlah pemanggilan fungsi. Oleh karena itu, tidak ada biaya tambahan yang dikenakan terlepas dari apakah Anda mengaktifkan autentikasi JWT atau tidak.