全部产品
Search
文档中心

Function Compute:Konfigurasikan autentikasi JWT untuk nama domain kustom

更新时间:Dec 18, 2025

JSON Web Token (JWT) adalah metode berbasis token yang mudah digunakan untuk mengautentikasi permintaan. Autentikasi JWT menggunakan token yang disediakan oleh client untuk menyimpan informasi status pengguna, sehingga fungsi tidak perlu menyimpan informasi tersebut. Hal ini menjadikan autentikasi JWT sebagai metode ideal untuk aplikasi serverless. Function Compute menerapkan autentikasi JWT terhadap permintaan yang dikirim ke nama domain kustom dengan menggunakan JSON Web Key Set (JWKS) publik yang diikat ke nama domain tersebut. Function Compute juga meneruskan claims ke fungsi sesuai konfigurasi nama domain kustom, sehingga Anda dapat fokus sepenuhnya pada logika bisnis tanpa perlu menangani autentikasi dalam fungsi.

Latar belakang

Ikhtisar

JWT adalah metode berbasis token yang mudah digunakan untuk mengautentikasi permintaan. Untuk informasi selengkapnya, lihat RFC 7519. Autentikasi JWT menggunakan tokens yang disediakan oleh client untuk menyimpan informasi status pengguna, sehingga fungsi tidak perlu menyimpan informasi tersebut. Hal ini menjadikan autentikasi JWT sebagai metode ideal untuk aplikasi serverless. Function Compute menerapkan autentikasi JWT terhadap permintaan yang dikirim ke nama domain kustom dengan menggunakan JWKS publik yang diikat ke nama domain tersebut. Function Compute juga meneruskan claims ke fungsi sesuai konfigurasi nama domain kustom, sehingga Anda dapat fokus sepenuhnya pada logika bisnis tanpa perlu menangani autentikasi dalam fungsi. Untuk informasi mengenai proses autentikasi dan dasar-dasar tokens JWT, lihat Autentikasi token berbasis JWT dan Pengantar JSON Web Tokens.

Proses autentikasi JWT

Proses autentikasi JWT untuk nama domain kustom sama dengan proses autentikasi JWT untuk HTTP triggers.

image

Gambar di atas menunjukkan proses autentikasi JWT untuk HTTP triggers di Function Compute, yang menggunakan algoritma enkripsi asimetris. Berikut penjelasan rinci proses tersebut:

  1. Client mengirim permintaan autentikasi ke custom authorizer, biasanya berisi username dan password pengguna.

  2. Custom authorizer membaca dan memverifikasi informasi autentikasi, seperti username dan password, dalam permintaan tersebut. Setelah permintaan lolos verifikasi, authorizer menggunakan kunci privat untuk menghasilkan token standar.

  3. Custom authorizer mengirim respons yang berisi token ke client. Client menyimpan cache token tersebut di mesin lokal.

  4. Client mengirim permintaan bisnis yang berisi token ke HTTP trigger.

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

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

  7. Fungsi yang dilindungi memproses dan merespons permintaan tersebut.

  8. HTTP trigger meneruskan respons bisnis ke client.

Batasan

  • Anda dapat menghasilkan dan mendistribusikan JWT sesuai kebutuhan bisnis Anda. Function Compute mengautentikasi JWT tersebut dengan menggunakan JWKS publik yang dikonfigurasi untuk suatu trigger.

  • JSON Web Keys (JWKs) yang tidak berisi key ID (kid) didukung.

  • Anda dapat mengonfigurasi beberapa JWK untuk satu trigger.

  • Anda dapat membaca token dari parameter header, Query, form, dan cookie.

  • Anda dapat meneruskan claims sebagai parameter header, Query, form, dan cookie ke fungsi.

  • Function Compute memungkinkan Anda mengonfigurasi JWKS untuk nama domain kustom. Setelah Anda mengonfigurasi JWKS untuk nama domain kustom, Function Compute mencari kunci publik JWK yang memiliki key ID yang sama dengan token, lalu menggunakan kunci publik tersebut untuk melakukan verifikasi signature terhadap token. Anda boleh tidak menentukan atau mengatur key ID salah satu JWK menjadi string kosong dalam JWKS nama domain kustom.

    Tabel berikut menjelaskan algoritma signature yang didukung oleh JWT di Function Compute.

    Algoritma signature

    Nilai alg

    RSASSA-PKCS1-V1_5

    RS256, RS384, atau RS512

    RSASSA-PSS

    PS256, PS384, atau PS512

    Elliptic Curve (ECDSA)

    ES256, ES384, atau ES512

    HMAC

    HS256, HS384, atau HS512

    EdDSA

    EdDSA

Penting
  • Algoritma signature hash-based message authentication code (HMAC) menggunakan enkripsi simetris. Dibandingkan dengan enkripsi asimetris, enkripsi simetris kurang aman. Kami menyarankan Anda menggunakan algoritma enkripsi asimetris untuk meningkatkan keamanan.

  • Saat menggunakan algoritma enkripsi asimetris, Anda hanya perlu menyertakan informasi kunci publik dalam JWT Anda demi keamanan.

  • Kami menyarankan Anda menggunakan HTTPS untuk melindungi informasi sensitif seperti tokens dalam permintaan guna mencegah kebocoran token.

Konfigurasikan autentikasi JWT

Prasyarat

Nama domain kustom telah dibuat. Untuk informasi selengkapnya, lihat Konfigurasikan nama domain kustom.

Prosedur

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Advanced Features > Custom Domains.

  2. Di bilah navigasi atas, pilih wilayah tempat nama domain kustom yang ingin Anda kelola berada. Pada halaman Custom Domains, klik nama domain kustom yang ingin Anda kelola.

  3. Di pojok kanan atas halaman yang muncul, klik Modify. Pada halaman Modify Custom Domain Name, konfigurasikan item berikut dan klik Save.

    1. Atur Authentication Method menjadi JWT Authentication.

      image.png

    2. Konfigurasikan JWKS.

      Untuk mengonfigurasi autentikasi JWT untuk nama domain kustom, diperlukan JWKS yang valid. Anda dapat membuat JWKS sendiri atau menggunakan generator online seperti mkjwk.org. Jika Anda memiliki kunci privat dalam format PEM, Anda dapat menggunakan tool seperti jwx untuk mengonversinya ke format JWKS.

      Pada contoh berikut, mkjwk.org digunakan untuk menghasilkan JWKS. Langkah-langkah berikut dilakukan: Konfigurasikan parameter Key Use, Algorithm, dan Show X.509, lalu klik Generate. Anda harus menerbitkan token JWT dalam kode Anda menggunakan kunci privat (① pada gambar berikut). Simpan kerahasiaan kunci privat tersebut. Anda dapat menyalin kunci publik (② pada gambar berikut) dan memasukkannya ke dalam array keys JWKS di Konsol Function Compute.

      imageimage

      Kode contoh berikut menunjukkan JWKS yang telah dikonfigurasi:

      {
          "keys": [
              {
                  "alg": "RS256",
                  "e": "AQAB",
                  "kty": "RSA",
                  "n": "u1LWgoomekdOMfB1lEe96OHehd4XRNCbZRm96RqwOYTTc28Sc_U5wKV2umDzolfoI682ct2BNnRRahYgZPhbOCzHYM6i8sRXjz9Ghx3QHw9zrYACtArwQxrTFiejbfzDPGdPrMQg7T8wjtLtkSyDmCzeXpbIdwmxuLyt_ahLfHelr94kEksMDa42V4Fi5bMW4cCLjlEKzBEHGmFdT8UbLPCvpgsM84JK63e5ifdeI9NdadbC8ZMiR--dFCujT7AgRRyMzxgdn2l-nZJ2ZaYzbLUtAW5_U2kfRVkDNa8d1g__2V5zjU6nfLJ1S2MoXMgRgDPeHpEehZVu2kNaSFvDUQ",
                  "use": "sig"
              }
          ]
      }
    3. Konfigurasikan token JWT.

      Pilih posisi pembacaan dan nama token. Anda dapat mengatur parameter Read Position ke Header, Cookie, Query Parameters, atau Form Parameters. Jika Anda mengatur parameter Read Position ke Header, Anda harus menentukan awalan untuk header tersebut. Saat Function Compute mengambil token, awalan tersebut akan dihapus.

      image.png

    4. Konfigurasikan konversi claim JWT.

      Pada bagian JWT Claim Conversion, pilih posisi untuk meneruskan parameter ke fungsi, nama asli parameter, dan nama baru parameter setelah diteruskan ke fungsi. Anda dapat mengatur Mapping Parameter Position ke Header, Cookie, Query Parameters, atau Form Parameters.

      image.png

Verifikasi hasil

Masukkan nama domain kustom dan token ke dalam tool pengujian sesuai konfigurasi JWT nama domain kustom untuk memeriksa apakah domain tersebut dapat digunakan untuk mengakses fungsi. Pada topik ini, digunakan Postman.

  1. Gunakan kunci privat (format X.509 PEM) yang dihasilkan pada langkah sebelumnya (Konfigurasikan autentikasi JWT) untuk membuat token JWT.

    1. Instal modul PyJWT. Untuk informasi selengkapnya, lihat PyJWT.

    2. Jalankan skrip Python contoh berikut secara lokal untuk menghasilkan token JWT. Untuk informasi selengkapnya, lihat PyJWT.

      import time
      
      private_key = """
      -----BEGIN PRIVATE KEY-----
      <Gunakan kunci privat dalam format X.509 PEM yang dihasilkan saat Anda mengonfigurasi autentikasi JWT>
      -----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 memeriksa apakah nama domain kustom dapat digunakan untuk mengakses fungsi.

    1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Advanced Features > Custom Domains. Pada halaman Custom Domains, temukan nama domain kustom yang ingin Anda kelola. Salin nama domain tersebut dan tempelkan ke kolom URL di Postman.

    2. Konfigurasikan parameter token di header Postman. Contoh:

      Parameter

      Nilai

      Deskripsi

      Key

      Authentication

      Nama parameter yang Anda konfigurasi di bagian JWT Token Configuration.

      Value

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

      Token bearer yang Anda tentukan untuk parameter Remove Prefix di bagian JWT Token Configuration dan token JWT yang dihasilkan pada langkah sebelumnya.

      Penting

      Pastikan format JWT dalam header permintaan sesuai dengan pengaturan Remove Prefix yang dikonfigurasi di bagian JWT Token Configuration. Jika tidak sesuai, pesan error "invalid or expired jwt" akan dikembalikan saat trigger mencoba mengurai token tersebut.

    3. Klik Send untuk melihat informasi yang dikembalikan. image.pngnametofunction adalah nama parameter setelah claim diteruskan ke fungsi.

FAQ

Mengapa pesan "invalid or expired jwt" dikembalikan saat saya mengakses nama domain kustom setelah mengaktifkan autentikasi JWT untuk domain tersebut?

Pesan tersebut menunjukkan bahwa autentikasi JWT gagal. Berikut kemungkinan penyebabnya:

  • Signature atau format token Anda tidak valid.

  • Token Anda telah kedaluwarsa.

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

Mengapa pesan "the jwt token is missing" dikembalikan saat saya mengakses nama domain kustom setelah mengaktifkan autentikasi JWT untuk domain tersebut?

Pesan tersebut menunjukkan bahwa Function Compute tidak dapat menemukan token berdasarkan konfigurasi token JWT nama domain kustom. Periksa apakah token terdapat dalam permintaan atau apakah posisi pembacaan atau nama telah ditentukan dengan benar. Jika Anda mengatur parameter Read Position di bagian JWT Token Configuration ke Header, Anda harus menambahkan nilai parameter Remove Prefix dan memberikan spasi antara nilai tersebut dengan token JWT saat mengonfigurasi token. Jika tidak, error akan dikembalikan.

Apakah saya dikenai biaya untuk autentikasi JWT?

Tidak, Anda tidak dikenai biaya untuk autentikasi JWT. Secara default, Anda dikenai biaya untuk fitur-fitur terkait gateway yang disediakan oleh Function Compute berdasarkan jumlah pemanggilan fungsi. Oleh karena itu, Anda tidak dikenai biaya untuk autentikasi JWT, baik Anda mengaktifkan fitur tersebut maupun tidak.