All Products
Search
Document Center

Function Compute:Konfigurasikan autentikasi JWT untuk pemicu HTTP

Last Updated:Apr 24, 2026

Di Function Compute, Anda dapat mengonfigurasi autentikasi JSON Web Token (JWT) untuk pemicu HTTP. Konfigurasi ini memastikan bahwa hanya klien dengan JWT yang valid yang dapat mengakses fungsi Anda, sehingga meningkatkan keamanan layanan HTTP serta membantu mencegah akses tidak sah dan serangan berbahaya.

Informasi latar belakang

Ikhtisar

Function Compute memungkinkan Anda mengaktifkan autentikasi JWT untuk pemicu HTTP. JWT, yang didefinisikan dalam RFC 7519, merupakan metode berbasis token untuk mengotentikasi permintaan. Informasi status pengguna disimpan dalam token yang disediakan oleh klien, sehingga fungsi (server) tidak perlu menyimpan informasi tersebut. Hal ini menjadikannya metode autentikasi yang ramah arsitektur tanpa server. Function Compute menggunakan kumpulan Kunci Web JSON Publik (JWKS) yang Anda konfigurasikan untuk pemicu HTTP guna melakukan autentikasi JWT terhadap permintaan HTTP. Berdasarkan konfigurasi pemicu, Function Compute dapat meneruskan claims sebagai parameter ke fungsi. Dengan demikian, fungsi Anda dapat fokus pada logika bisnis alih-alih mengotentikasi permintaan. Untuk mempelajari lebih lanjut tentang proses dan dasar-dasar autentikasi token JWT, lihat Autentikasi token berbasis JWT dan Pengantar JWT.

Cara kerja autentikasi JWT

Gambar di atas menunjukkan urutan alur kerja autentikasi JWT untuk pemicu HTTP di Function Compute yang menggunakan algoritma 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 memvalidasi kredensial dalam permintaan, seperti username dan password. Setelah validasi berhasil, layanan tersebut menggunakan kunci privat untuk menghasilkan token standar.

  3. Layanan otorisasi kustom mengirim respons yang berisi token kembali ke klien. Klien harus menyimpan token ini secara lokal di cache.

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

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

  6. Setelah token diverifikasi, pemicu meneruskan permintaan ke fungsi yang dilindungi.

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

  8. Pemicu HTTP meneruskan respons bisnis ke klien.

Prasyarat

Buat fungsi dan pemicu HTTP. Untuk informasi selengkapnya, lihat Buat fungsi dan Buat pemicu.

Batasan

  • Anda dapat menggunakan metode apa pun untuk menghasilkan dan mendistribusikan JWT. Function Compute mengotentikasi JWT menggunakan JWKS publik yang dikonfigurasi untuk pemicu.

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

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

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

  • Function Compute memungkinkan Anda mengonfigurasi JWKS untuk pemicu HTTP. Sistem mencari JWKS untuk menemukan JWK publik dengan kid yang sesuai dengan yang ada di token. Sistem kemudian menggunakan kunci publik ini untuk memverifikasi signature token. JWKS untuk pemicu dapat memiliki paling banyak satu JWK di mana kid tidak ada atau berupa string kosong.

    Function Compute JWT mendukung algoritma berikut.

    Algoritma Tanda Tangan

    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 Anda menggunakan algoritma enkripsi asimetris yang lebih aman.

    • Saat menggunakan algoritma enkripsi asimetris, demi keamanan, JWT Anda sebaiknya hanya berisi informasi kunci publik. Kami menyarankan agar Anda tidak menyertakan informasi kunci privat.

    • Kami menyarankan Anda menggunakan HTTPS untuk melindungi informasi sensitif seperti token dalam permintaan guna mencegah kebocoran 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 yang dituju.

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

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

    1. Untuk Authentication Method, pilih JWT Authentication.

    2. Konfigurasikan JWKS.

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

      Topik ini menggunakan mkjwk.org untuk menghasilkan JWKS sebagai contoh. Seperti yang ditunjukkan pada gambar berikut, atur Key Use ke Signature, Algorithm ke RS256, dan Show X.509 ke Yes, lalu klik Generate. Anda harus menggunakan Private Key (① pada gambar) dalam kode Anda untuk menerbitkan token JWT, jadi simpanlah dengan aman. Anda dapat menyalin konten Public Key (② pada gambar) dan menempelkannya ke dalam array keys konfigurasi JWKS di konsol.

      image.png

      image

      Kode berikut memberikan contoh 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, tentukan lokasi Token dan nama Token.

      Lokasi Token mendukung Header, Cookie, parameter kueri (GET), dan parameter form (POST). Jika lokasi Token diatur ke Header, Anda juga harus menentukan Parameter Name dan Remove Prefix. Function Compute menghapus awalan yang ditentukan di Remove Prefix saat memperoleh token.

      image

    4. Di bagian JWT Claim Conversion, tentukan lokasi penerusan parameter, nama parameter asli, dan nama parameter baru untuk fungsi.

      Anda dapat memetakan claims ke Header, Cookie, atau parameter Form (POST).

      image

    5. Tetapkan mode pencocokan permintaan.

      • Match All: Semua permintaan HTTP memerlukan autentikasi JWT.

      • Whitelist Mode: Permintaan HTTP untuk path yang ditentukan dalam Whitelist of Request Paths tidak memerlukan autentikasi JWT. Semua permintaan lainnya memerlukan autentikasi JWT.

      • Blacklist Mode: Permintaan HTTP untuk path yang ditentukan dalam Blacklist of Request Paths memerlukan autentikasi JWT. Semua permintaan lainnya tidak memerlukan autentikasi JWT.

      Whitelist Mode dan Blacklist Mode mendukung dua jenis pencocokan berikut:

      • Pencocokan eksak

        Path permintaan hanya cocok jika persis sama dengan path yang dikonfigurasi. Misalnya, jika Anda mengatur Blacklist of Request Paths ke /a, permintaan ke /a memerlukan autentikasi JWT, tetapi permintaan ke /a/ tidak.

      • Pencocokan fuzzy

        Anda dapat menggunakan wildcard (*) dalam path, tetapi wildcard (*) harus berada di akhir path. Misalnya, jika Anda mengatur Blacklist of Request Paths ke /login/*, semua permintaan ke path dengan awalan /login/, seperti /login/a dan /login/b/c/d, memerlukan autentikasi JWT.

Langkah 2: Verifikasi konfigurasi

Gunakan alat pengujian, seperti Postman, untuk memverifikasi bahwa Anda dapat mengakses layanan HTTP sesuai harapan berdasarkan konfigurasi JWT pemicu HTTP dengan menyediakan titik akhir, token, dan informasi lainnya.

  1. Gunakan kunci privat dalam format X.509 PEM yang Anda hasilkan di Langkah 1 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 Python contoh berikut secara lokal untuk menghasilkan token JWT.

      import jwt
      import time
      
      private_key = """
      -----BEGIN PRIVATE KEY-----
      <The X.509 PEM-format 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 selama 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. Di tab Trigger pada halaman detail fungsi, peroleh titik akhir publik pemicu HTTP dan masukkan ke dalam bidang URL di Postman.

    2. Di Postman, konfigurasikan parameter token di header lalu klik Send. Tabel berikut memberikan contoh konfigurasi token.

      Parameter

      Nilai

      Deskripsi

      Key

      Authentication

      Nama parameter yang Anda tentukan di bagian JWT Token Configuration.

      Value

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

      Nilai parameter Remove Prefix yang Anda tentukan di bagian JWT Token Configuration, digabungkan dengan token JWT. Nilai contoh mengasumsikan bahwa Remove Prefix diatur ke Bearer .

      Penting

      Awalan dan spasi untuk parameter JWT di header permintaan harus persis sama dengan nilai Remove Prefix yang Anda tentukan di bagian JWT Token Configuration. Jika tidak, Pemicu akan gagal mengurai token dan mengembalikan galat invalid or expired jwt.

FAQ

Mengapa saya mendapatkan error "invalid or expired jwt"?

Function Compute menerima token tetapi menolaknya saat validasi. Kemungkinan penyebabnya adalah:

  • Signature atau format token Anda tidak valid.

  • Token Anda telah kedaluwarsa. Hasilkan token baru.

  • ID kunci (kid) token tidak sesuai dengan JWKS yang dikonfigurasi untuk nama domain kustom Anda, atau JWK yang cocok tidak akurat.

Mengapa saya mendapatkan error "the jwt token is missing"?

Function Compute tidak dapat menemukan token dalam permintaan. Periksa apakah token ada dalam permintaan dan apakah Read Position serta nama parameter di JWT Token Configuration persis sesuai dengan lokasi pengiriman token Anda. Jika Read Position diatur ke Header, nilai header harus mencakup nilai Remove Prefix diikuti spasi sebelum token.

Apakah autentikasi JWT dikenai biaya tambahan?

Tidak. Autentikasi JWT tidak dikenai biaya tambahan. Function Compute menagih berdasarkan jumlah pemanggilan fungsi, terlepas dari apakah autentikasi JWT diaktifkan atau tidak.