全部产品
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, sehingga meningkatkan keamanan HTTP dengan memblokir akses yang 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 dapat 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. Dalam banyak kasus, 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 ke 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 dan mengembalikan respons.

  8. Pemicu HTTP meneruskan respons bisnis ke klien.

Sebelum Anda mulai

  • Buat layanan. Untuk informasi lebih lanjut, lihat Buat Layanan.

  • Buat fungsi HTTP. Untuk informasi lebih lanjut, lihat Buat Fungsi.

Batasan

  • Anda dapat menghasilkan dan mendistribusikan JWT berdasarkan 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 (dengan menggunakan metode GET), parameter formulir (dengan menggunakan metode POST), atau cookie.

  • Anda dapat meneruskan klaim sebagai header, parameter query (dengan menggunakan metode GET), parameter formulir (dengan menggunakan metode POST), dan 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

    alg nilai

    RSASSA-PKCS1-V1_5

    RS256, RS384, atau RS512

    RSASSA-PSS

    PS256, PS384, atau PS512

    Kurva Elips (ECDSA)

    ES256, ES384, atau ES512

    HMAC

    HS256, HS384, atau HS512

    EdDSA

    EdDSA

    Penting
    • Algoritma 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 Anda, demi keamanan.

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

Prosedur

Langkah 1: Konfigurasikan otentikasi JWT

  1. Masuk ke Konsol Function Compute. Di bilah navigasi sisi 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 Modify di kolom Actions pemicu HTTP.

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

    1. Atur Authentication Method ke JWT Authentication.

      jwt_auth

    2. Konfigurasikan JWKS.

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

      Dalam contoh ini, mkjwk.org digunakan untuk menghasilkan JWKS. Pada halaman untuk menghasilkan JWKS, atur Show X.509 ke Yes untuk melihat kunci privat. Anda perlu menggunakan kunci privat untuk menerbitkan JWT. Simpan kunci privat dengan aman. Anda dapat menyalin konten kunci publik ke array keys JWKS di Konsol Function Compute. Gambar berikut menunjukkan detailnya.

      image

      Kode contoh:

      {
          "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 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.set_token

      Penting

      Saat Anda 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 parameter Posisi Parameter Pemetaan ke Header, Cookie, Parameter Query, atau Parameter Formulir.jwt_claim_switch

    5. Tentukan mode pencocokan permintaan.

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

      • Whitelist Mode: Permintaan HTTP yang dikirim dari jalur yang ditentukan dalam Whitelist of Request Paths tidak diautentikasi menggunakan JWT. Permintaan lain diautentikasi menggunakan JWT.

      • Blacklist Mode: Permintaan HTTP yang dikirim dari jalur yang ditentukan dalam Blacklist of Request Paths diautentikasi menggunakan JWT. Permintaan lain tidak diautentikasi menggunakan JWT.

      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 nilainya 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 pemicu HTTP

Bagian ini menjelaskan cara memverifikasi apakah layanan HTTP dapat diakses sesuai harapan dengan 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 ketika 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 memeriksa apakah layanan HTTP dapat diakses.

    1. Pada tab Trigger Management (URL) fungsi yang ingin Anda kelola, dapatkan titik akhir Internet pemicu HTTP. Lalu, masukkan titik akhir di bilah alamat Postman.

    2. Konfigurasikan parameter token di tab Headers di Postman dan klik Send untuk mengirim permintaan. Tabel berikut menjelaskan konfigurasi token.

      Nama

      Contoh

      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".

Lakukan otentikasi JWT dengan nama domain kustom

Gambar sebelumnya menunjukkan bahwa nama domain kustom memproses permintaan pengguna sebelum pemicu HTTP memproses permintaan. Otentikasi JWT dilakukan pada pemicu HTTP. Bagian ini menjelaskan cara menggunakan otentikasi JWT dalam skenario di mana nama domain kustom dikonfigurasi.

Nama domain kustom tanpa kebijakan penulisan ulang dikonfigurasi

Jika rute dikonfigurasi untuk nama domain kustom tanpa kebijakan penulisan ulang yang dikonfigurasi, jalur permintaan HTTP yang masuk adalah jalur nama domain kustom.

Sebagai contoh, tabel berikut menjelaskan aturan rute untuk nama domain kustom www.fc-jwt.com. Nilai parameter Blacklist of Request Paths dalam konfigurasi JWT pemicu HTTP untuk fungsi jwt-demo adalah /fc-jwt/auth/*.

Jalur

Nama Layanan

Nama Fungsi

Versi

/fc-jwt/*

jwt

jwt-demo

1

Jika URL permintaan adalah /fc-jwt/auth/aliyun, pemicu HTTP memverifikasi permintaan HTTP karena jalur permintaan cocok dengan nilai yang ditentukan dalam parameter Blacklist of Request Paths.

Nama domain kustom dengan kebijakan penulisan ulang dikonfigurasi

Jika rute dikonfigurasi untuk nama domain kustom dengan kebijakan penulisan ulang yang dikonfigurasi, jalur permintaan HTTP yang masuk adalah URL yang telah ditulis ulang. Untuk informasi lebih lanjut tentang fitur penulisan ulang untuk nama domain kustom, lihat Konfigurasikan Kebijakan Penulisan Ulang (dalam tinjauan publik).

Sebagai contoh, Anda telah mengonfigurasi aturan rute untuk nama domain kustom www.fc-jwt.com seperti yang dijelaskan dalam tabel berikut. Dalam konfigurasi JWT pemicu HTTP untuk fungsi jwt-demo, parameter Blacklist of Request Paths diatur ke /fc-jwt/auth/*, dan kebijakan penulisan ulang wildcard dikonfigurasi. Aturan pencocokan adalah /fc-jwt/*, dan aturan penggantian adalah /$1.

Jalur

Nama Layanan

Nama Fungsi

Versi

/fc-jwt/*

jwt

jwt-demo

1

Jika URL permintaan adalah /fc-jwt/auth/aliyun, URL yang telah ditulis ulang adalah /auth/aliyun. Untuk informasi lebih lanjut tentang aturan penulisan ulang wildcard, lihat Konfigurasikan Kebijakan Penulisan Ulang (dalam tinjauan publik). Pemicu HTTP tidak memverifikasi permintaan. Dalam hal ini, jalur permintaan ke pemicu HTTP adalah /auth/aliyun dan tidak cocok dengan nilai parameter Blacklist of Request Paths.

Jika Anda mengatur parameter Blacklist of Request Paths ke /auth/*, pemicu HTTP melakukan otentikasi JWT pada permintaan yang URL-nya adalah /fc-jwt/auth/aliyun.

Tanya Jawab Umum

Mengapa Kesalahan "jwt tidak valid atau kedaluwarsa" Dilaporkan Setelah Saya Mengaktifkan Otentikasi JWT untuk Pemicu HTTP?

Pesan ini menunjukkan bahwa otentikasi JWT gagal. Otentikasi JWT dapat gagal karena salah satu alasan berikut:

  • Tanda tangan atau format token Anda tidak valid.

  • Token Anda telah kedaluwarsa.

  • kid dalam token Anda tidak cocok dengan konfigurasi JWKS pemicu HTTP, atau JWK yang cocok tidak akurat dan token tidak dapat diverifikasi dengan benar.

Mengapa Kesalahan "token jwt hilang" Dilaporkan Setelah Saya Mengaktifkan Otentikasi JWT untuk Pemicu HTTP?

Pesan ini menunjukkan bahwa Function Compute tidak dapat menemukan token berdasarkan konfigurasi JWT. Periksa apakah permintaan berisi token dan apakah posisi dan nama token sudah benar. Jika Anda mengatur parameter Posisi Baca di bagian JWT Token Configuration ke Header, Anda harus menentukan parameter Remove Prefix dan menambahkan spasi ke awalan yang ditentukan saat Anda mengonfigurasi token. Jika tidak, kesalahan akan dikembalikan.

Apakah Otentikasi JWT Menimbulkan Biaya Tambahan?

Tidak, tidak ada biaya tambahan yang dikenakan saat Anda menggunakan otentikasi JWT. Secara default, biaya fitur terkait gateway yang disediakan oleh Function Compute termasuk dalam penagihan jumlah pemanggilan fungsi. Oleh karena itu, tidak ada biaya tambahan yang dikenakan terlepas dari apakah Anda mengaktifkan otentikasi JWT.