Autentikasi JWT memungkinkan Function Compute memverifikasi permintaan masuk di tingkat gerbang—sebelum mencapai fungsi Anda. Anda mengonfigurasi kumpulan Kunci Web JSON (JWKS) publik pada nama domain kustom, dan Function Compute menggunakannya untuk memvalidasi token dalam setiap permintaan serta meneruskan klaim yang telah diverifikasi langsung ke fungsi Anda. Dengan demikian, fungsi Anda hanya menangani logika bisnis tanpa perlu menyertakan kode autentikasi.
Untuk mengonfigurasi autentikasi JWT secara end-to-end, Anda perlu:
Membuat pasangan kunci JWKS dan menjaga kerahasiaan kunci privat.
Mengaktifkan autentikasi JWT pada nama domain kustom dan menempelkan kunci publik ke Konsol.
Mengonfigurasi lokasi pembacaan token oleh Function Compute dalam setiap permintaan.
(Opsional) Memetakan klaim JWT ke parameter fungsi.
Membuat token uji dan memverifikasi konfigurasi dengan Postman.
Cara kerja
Autentikasi JWT untuk nama domain kustom mengikuti alur yang sama dengan autentikasi JWT untuk Pemicu HTTP. Proses ini menggunakan enkripsi asimetris: kunci privat menandatangani token, sedangkan kunci publik memverifikasinya.
Alurnya bekerja sebagai berikut:
Klien mengirim permintaan autentikasi ke authorizer kustom, biasanya dengan username dan password.
Authorizer memverifikasi kredensial, lalu menggunakan kunci privat untuk menghasilkan token JWT standar.
Authorizer mengembalikan token ke klien. Klien menyimpannya di cache secara lokal.
Klien mengirim permintaan bisnis yang menyertakan token ke Pemicu HTTP.
Function Compute menggunakan kunci publik yang dikonfigurasi untuk memvalidasi token dalam permintaan tersebut.
Jika validasi berhasil, Function Compute meneruskan permintaan ke fungsi Anda, termasuk klaim yang telah dipetakan.
Fungsi memproses permintaan dan mengembalikan respons.
Function Compute meneruskan respons ke klien.
Untuk informasi latar belakang tentang JWT dan autentikasi token, lihat Autentikasi token berbasis JWT dan Pengantar Token Web JSON.
Batasan
Function Compute mengautentikasi JWT menggunakan JWKS publik yang Anda konfigurasi untuk domain tersebut. Anda menghasilkan dan mendistribusikan JWT berdasarkan logika bisnis Anda sendiri.
Kunci Web JSON (JWK) tanpa ID kunci (
kid) didukung. Paling banyak satu JWK dalam JWKS dapat memilikikidyang tidak ditentukan atau kosong.Beberapa JWK dapat dikonfigurasi untuk nama domain kustom. Function Compute mencocokkan
kidpada token dengan JWK yang sesuai, lalu menggunakan kunci tersebut untuk verifikasi signature.Token dapat dibaca dari parameter
header, kueri, form, dancookie.Klaim dapat diteruskan sebagai parameter
header, kueri, form, dancookie.
Algoritma signature yang didukung:
| Algoritma signature | alg nilai |
|---|---|
| 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 |
HMAC menggunakan enkripsi simetris, yang kurang aman dibandingkan enkripsi asimetris. Gunakan algoritma asimetris bila memungkinkan. Saat menggunakan enkripsi asimetris, sertakan hanya informasi kunci publik dalam JWKS Anda. Gunakan HTTPS untuk melindungi token selama transmisi dan mencegah kebocoran token.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Nama domain kustom yang dikonfigurasi di Function Compute. Lihat Mengonfigurasi nama domain kustom.
Konfigurasikan autentikasi JWT
Langkah 1: Buka pengaturan nama domain kustom
Masuk ke Konsol Function Compute. Di panel navigasi kiri, pilih Advanced Features > Custom Domains.
Di bilah navigasi atas, pilih wilayah tempat nama domain kustom Anda berada.
Pada halaman Custom Domains, klik nama domain yang ingin Anda konfigurasi.
Di pojok kanan atas, klik Modify.
Langkah 2: Aktifkan autentikasi JWT
Pada halaman Modify Custom Domain Name, atur Authentication Method menjadi JWT Authentication.

Langkah 3: Konfigurasikan JWKS
Autentikasi JWT memerlukan JWKS yang valid berisi kunci publik Anda. Anda dapat membuatnya menggunakan tool online seperti mkjwk.org. Jika Anda memiliki kunci privat dalam format PEM, gunakan tool seperti jwx untuk mengonversinya ke format JWKS.
Untuk membuat JWKS di mkjwk.org: atur Key Use, Algorithm, dan Show X.509, lalu klik Generate. Tool ini menghasilkan dua kunci:
① Kunci privat — gunakan ini dalam kode Anda untuk menandatangani (menerbitkan) token JWT. Simpan kerahasiaannya.
② Kunci publik — tempelkan ini ke dalam array
keysdi Konsol Function Compute.


JWKS yang Anda tempelkan ke Konsol mengikuti struktur berikut:
{
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kty": "RSA",
"n": "u1LWgoomekdOMfB1lEe96OHehd4XRNCbZRm96RqwOYTTc28Sc_U5wKV2umDzolfoI682ct2BNnRRahYgZPhbOCzHYM6i8sRXjz9Ghx3QHw9zrYACtArwQxrTFiejbfzDPGdPrMQg7T8wjtLtkSyDmCzeXpbIdwmxuLyt_ahLfHelr94kEksMDa42V4Fi5bMW4cCLjlEKzBEHGmFdT8UbLPCvpgsM84JK63e5ifdeI9NdadbC8ZMiR--dFCujT7AgRRyMzxgdn2l-nZJ2ZaYzbLUtAW5_U2kfRVkDNa8d1g__2V5zjU6nfLJ1S2MoXMgRgDPeHpEehZVu2kNaSFvDUQ",
"use": "sig"
}
]
}Langkah 4: Konfigurasikan lokasi token JWT
Pada bagian JWT Token Configuration, atur Read Position (Header, Cookie, Query Parameters, atau Form Parameters) dan nama parameter tempat Function Compute harus mencari token.
Jika Anda mengatur Read Position ke Header, tentukan nilai Remove Prefix. Function Compute akan menghapus awalan ini sebelum menguraikan token. Misalnya, jika Anda mengatur awalan ke Bearer, header permintaan Authorization: Bearer <token> menyebabkan Function Compute mengekstrak dan memvalidasi <token>.

Langkah 5: Konfigurasikan penerusan klaim (opsional)
Pada bagian JWT Claim Conversion, petakan klaim JWT ke parameter fungsi. Untuk setiap pemetaan, tentukan:
Mapping Parameter Position — lokasi penerusan klaim (Header, Cookie, Query Parameters, atau Form Parameters)
Nama klaim asli dalam token
Nama parameter yang diteruskan ke fungsi

Langkah 6: Simpan konfigurasi
Klik Save.
Verifikasi konfigurasi
Gunakan kunci privat yang dihasilkan pada bagian sebelumnya untuk membuat token JWT uji, lalu gunakan Postman untuk memastikan nama domain mengautentikasi permintaan dengan benar.
Buat token uji
Instal modul PyJWT. Lihat PyJWT.
Jalankan skrip Python berikut secara lokal untuk menghasilkan token. Ganti placeholder kunci privat dengan kunci privat X.509 PEM dari langkah pembuatan JWKS.
import jwt
import time
private_key = """
-----BEGIN PRIVATE KEY-----
<Your X.509 PEM private key>
-----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, # Token kedaluwarsa dalam 1 jam
}
encoded = jwt.encode(payload=payload, key=private_key.encode(), headers=headers)
print("Generated token: %s" % encoded)Uji dengan Postman
Di Konsol Function Compute, buka Advanced Features > Custom Domains. Salin nama domain kustom Anda dan tempelkan ke kolom URL di Postman.
Tambahkan header permintaan yang sesuai dengan pengaturan JWT Token Configuration Anda. Misalnya, jika nama parameternya adalah
Authenticationdan awalannya adalahBearer:PentingPastikan format JWT dalam header permintaan sesuai dengan pengaturan Remove Prefix yang dikonfigurasi. Jika terjadi ketidaksesuaian, error
invalid or expired jwtakan dikembalikan.Parameter Nilai Deskripsi Key AuthenticationNama parameter yang dikonfigurasi di JWT Token Configuration Value Bearer <your-jwt-token>Awalan yang dikonfigurasi, spasi, dan token yang dihasilkan pada langkah sebelumnya Klik Send dan periksa respons.

Jika penerusan klaim dikonfigurasi, respons akan mengonfirmasi bahwa klaim telah diteruskan ke fungsi. Misalnya, nametofunction adalah nama parameter yang diteruskan dari pemetaan klaim.