全部产品
Search
文档中心

Function Compute:Konfigurasikan otentikasi JWT untuk pemicu HTTP

更新时间:Sep 06, 2025

Anda dapat mengonfigurasi otentikasi JSON Web Token (JWT) untuk pemicu HTTP di Function Compute. Dengan cara ini, hanya klien dengan token yang valid yang diizinkan untuk mengakses pemicu, membantu meningkatkan keamanan HTTP dengan memblokir akses tidak sah atau berbahaya.

Latar Belakang

Ikhtisar

Function Compute memungkinkan Anda mengaktifkan otentikasi JWT untuk pemicu HTTP. JWT (RFC 7519) adalah metode berbasis token yang mudah digunakan untuk mengotentikasi permintaan. Informasi status pengguna disimpan dalam token yang diberikan oleh klien. Fungsi atau server tidak menyimpan token, sehingga metode ini sangat cocok untuk aplikasi tanpa server. Function Compute menggunakan JSON Web Key Set (JWKS) publik yang dikonfigurasi untuk pemicu HTTP guna melakukan otentikasi JWT pada permintaan HTTP. Function Compute meneruskan klaim sebagai parameter ke fungsi berdasarkan konfigurasi pemicu HTTP. Dengan demikian, otentikasi permintaan tidak diperlukan dalam fungsi, dan Anda dapat fokus pada logika bisnis. Untuk informasi lebih lanjut tentang proses otentikasi dan informasi dasar tentang token dalam JWT, lihat Otentikasi Berbasis JWT dan Pengenalan JSON Web Tokens.

Proses otentikasi JWT

Gambar sebelumnya menunjukkan alur kerja otentikasi JWT untuk pemicu HTTP di Function Compute. Dalam proses ini, algoritma enkripsi asimetris digunakan. Item berikut menjelaskan detail proses:

  1. Klien mengirimkan permintaan otentikasi ke layanan otentikasi kustom. Biasanya, nama pengguna dan kata sandi pengguna klien ditentukan dalam permintaan.

  2. Layanan otentikasi kustom membaca dan memverifikasi informasi otentikasi, seperti nama pengguna dan kata sandi, dalam permintaan. Setelah permintaan lulus verifikasi, layanan otentikasi menggunakan kunci privat untuk menghasilkan token standar.

  3. Layanan otentikasi kustom meneruskan respons yang berisi token ke klien. Klien menyimpan token di mesin lokal.

  4. Klien mengirimkan permintaan bisnis yang berisi token ke pemicu HTTP.

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

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

  7. Fungsi yang dilindungi memproses permintaan dan mengembalikan respons.

  8. Pemicu HTTP meneruskan respons bisnis ke klien.

Sebelum Anda mulai

Buat fungsi dan pemicu HTTP untuk fungsi tersebut. Untuk informasi lebih lanjut, lihat Buat Fungsi dan Langkah 1: Buat Pemicu.

Batasan

  • Anda dapat menghasilkan dan mendistribusikan JWT sesuai kebutuhan bisnis Anda. Function Compute mengotentikasi JWT menggunakan JWKS publik yang dikonfigurasi untuk pemicu.

  • JSON Web Key (JWK) yang tidak memiliki kid (ID kunci) didukung.

  • Token dapat dibaca dari header, parameter query (metode GET), parameter formulir (metode POST), atau cookie.

  • Anda dapat meneruskan klaim sebagai header, parameter query (metode GET), parameter formulir (metode POST), atau cookie ke fungsi.

  • Anda dapat mengonfigurasi JWKS untuk pemicu HTTP. Setelah JWKS dikonfigurasi, sistem mencari JWKS untuk JWK publik yang memiliki kid yang sama dengan kid dalam token dan menggunakan JWK publik untuk memverifikasi tanda tangan token. JWKS pemicu diizinkan memiliki maksimal satu JWK yang kid-nya tidak ada atau diatur ke string kosong.

    Tabel berikut mencantumkan algoritma yang didukung oleh JWT Function Compute.

    Algoritma tanda tangan

    Nilai alg

    RSASSA-PKCS1-V1_5

    RS256, RS384, atau RS512

    RSASSA-PSS

    PS256, PS384, atau PS512

    Kurva Eliptik (ECDSA)

    ES256, ES384, atau ES512

    HMAC

    HS256, HS384, atau HS512

    EdDSA

    EdDSA

    Penting
    • Algoritma tanda tangan kode otentikasi pesan berbasis hash (HMAC) menggunakan enkripsi simetris, yang memberikan keamanan lemah. Kami merekomendasikan Anda menggunakan algoritma enkripsi asimetris untuk keamanan yang lebih baik.

    • Jika Anda menggunakan algoritma enkripsi asimetris, Anda perlu memasukkan informasi hanya tentang kunci publik, bukan kunci privat dalam JWT demi alasan keamanan.

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

Prosedur

Langkah 1: Konfigurasikan otentikasi JWT

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

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Di bagian bawah halaman detail fungsi, klik tab Configurations. Di panel navigasi kiri, klik Triggers. Di halaman yang muncul, temukan pemicu HTTP dan klik Modify di kolom Actions.

  4. Di panel Ubah Pemicu, konfigurasikan parameter berikut dan klik OK.

    1. Atur Authentication Method ke JWT Authentication.

      image

    2. Konfigurasikan JWKS.

      Untuk mengonfigurasi otentikasi JWT untuk pemicu HTTP, Anda perlu menyediakan JWKS yang valid. JWKS dapat dihasilkan secara manual atau menggunakan generator online seperti mkjwk.org, yang dapat ditemukan dengan mencari JSON Web Key generator di browser web. Jika Anda memiliki kunci dalam format Privacy Enhanced Mail (PEM), Anda dapat menggunakan alat seperti jwx untuk mengonversinya ke format JWKS.

      Dalam contoh ini, mkjwk.org digunakan untuk menghasilkan JWKS. Dalam contoh yang ditunjukkan pada gambar berikut, atur Key Use ke Signature, Algorithm ke RS256, Show X.509 ke Yes, lalu klik Generate untuk menghasilkan kunci privat. Anda perlu menggunakan kunci privat dalam kode Anda untuk menerbitkan JWT. Salin konten kunci publik dan tempelkan konten yang disalin ke kotak input JWKS di konsol.

      image.png

      image

      Contoh kode berikut menunjukkan JWKS yang telah dikonfigurasi:

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

      Anda dapat mengatur parameter Posisi Baca token ke Header, Cookie, Parameter Query, atau Parameter Formulir. Jika Anda mengatur parameter Posisi Baca token ke Header, Anda harus menentukan parameter Parameter Name dan Remove Prefix. Saat Function Compute mendapatkan token, awalan yang ditentukan oleh parameter Remove Prefix dihapus.

      image

      Penting

      Saat mengonfigurasi parameter Remove Prefix, periksa apakah ada spasi setelah awalan. Kami merekomendasikan Anda menambahkan spasi setelah awalan yang ditentukan, misalnya, Bearer .

    4. Di bagian JWT Claim Conversion, pilih posisi untuk meneruskan parameter ke fungsi, nama asli parameter, dan nama baru parameter setelah parameter diteruskan ke fungsi.

      Anda dapat mengatur Posisi Parameter Pemetaan ke Header, Cookie, Parameter Query, atau Parameter Formulir.

      image

    5. Konfigurasikan mode pencocokan permintaan.

      • Match All: Semua permintaan HTTP harus diverifikasi menggunakan JWT.

      • Whitelist Mode: Otentikasi JWT tidak diperlukan untuk permintaan HTTP yang dikirim dari jalur yang ditentukan dalam Whitelist of Request Paths. Otentikasi JWT diperlukan untuk permintaan lainnya.

      • Blacklist Mode: Otentikasi JWT diperlukan untuk permintaan HTTP yang dikirim dari jalur yang ditentukan dalam Blacklist of Request Paths. Otentikasi JWT tidak diperlukan untuk permintaan lainnya.

      Whitelist Mode dan Blacklist Mode mendukung mode pencocokan berikut:

      • Pencocokan tepat

        Jalur hanya cocok jika persis sama dengan jalur yang ditentukan. Misalnya, jika Anda mengatur Blacklist of Request Paths ke /a, otentikasi JWT diperlukan untuk permintaan yang dikirim dari /a. Otentikasi JWT tidak diperlukan untuk permintaan yang dikirim dari /a/.

      • Pencocokan kabur

        Anda dapat mengatur nilai ke jalur yang diakhiri dengan asterisk (*) sebagai wildcard. Misalnya, jika Anda mengatur parameter Blacklist of Request Paths ke /login/*, otentikasi JWT diperlukan untuk permintaan yang dikirim dari jalur dengan awalan /login/, seperti /login/a dan /login/b/c/d.

Langkah 2: Verifikasi konfigurasi JWT

Bagian ini menjelaskan cara memverifikasi apakah layanan HTTP dapat diakses sesuai harapan menggunakan alat berdasarkan konfigurasi JWT pemicu HTTP Anda. Dalam bagian ini, Postman digunakan.

  1. Gunakan kunci privat dalam format X.509 PEM yang dihasilkan di Langkah 1 sebagai kunci privat untuk menerbitkan JWT. Langkah-langkah berikut menggunakan Python sebagai contoh untuk menunjukkan proses menghasilkan token menggunakan skrip lokal.

    1. Instal modul PyJWT.

      pip install PyJWT
    2. Jalankan skrip Python berikut di mesin lokal Anda untuk menghasilkan JWT:

      import jwt
      import time
      
      private_key = """
      -----BEGIN PRIVATE KEY-----
      <Gunakan kunci privat dalam format X.509 PEM yang dihasilkan di Langkah 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 periode validitas token menjadi 1 jam.
      }
      
      
      encoded = jwt.encode(payload=payload, key=private_key.encode(), headers=headers)
      print("Token yang dihasilkan: %s" % encoded)
      
  2. Gunakan Postman untuk memverifikasi apakah layanan HTTP dapat diakses sesuai harapan.

    1. Dapatkan URL Internet dari halaman Configurations > Triggers dan masukkan URL di Postman.

    2. Konfigurasikan parameter token di tab Headers di Postman. Lalu, klik Send. Tabel berikut menjelaskan konfigurasi token.

      Nama

      Nilai

      Deskripsi

      Kunci

      Authentication

      Nama token yang Anda tentukan di bagian JWT Token Configuration.

      Nilai

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

      Nilai JWT, yang berisi nilai parameter Hapus Awalan di JWT Token Configuration. Dalam contoh ini, parameter Hapus Awalan diatur ke Bearer .

      Penting

      Awalan dan spasi parameter JWT di header permintaan harus sama dengan parameter Remove Prefix di bagian JWT Token Configuration. Jika tidak, kesalahan terjadi saat pemicu mengurai token dan melaporkan kesalahan "jwt tidak valid atau kedaluwarsa".

FAQ

Mengapa "jwt tidak valid atau kedaluwarsa" dikembalikan saat saya mengakses nama domain kustom setelah mengaktifkan otentikasi JWT untuk nama domain tersebut?

Pesan tersebut menunjukkan bahwa otentikasi JWT gagal. Item berikut mencantumkan kemungkinan penyebabnya:

  • Tanda tangan atau format token Anda tidak valid.

  • Token Anda telah kedaluwarsa.

  • ID kunci token Anda tidak cocok dengan JWKS yang Anda konfigurasikan untuk nama domain kustom Anda, atau JWK yang cocok tidak akurat.

Mengapa "token jwt hilang" dikembalikan saat saya mengakses nama domain kustom setelah mengaktifkan otentikasi JWT untuk nama domain kustom tersebut?

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

Apakah saya dikenakan biaya untuk otentikasi JWT?

Tidak, Anda tidak dikenakan biaya untuk otentikasi JWT. Secara default, Anda dikenakan biaya untuk fitur terkait gateway yang disediakan oleh Function Compute berdasarkan jumlah pemanggilan fungsi. Oleh karena itu, Anda tidak dikenakan biaya untuk otentikasi JWT, terlepas dari apakah Anda mengaktifkan fitur tersebut atau tidak.