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:
Klien mengirimkan permintaan otentikasi ke layanan otentikasi kustom. Biasanya, nama pengguna dan kata sandi pengguna klien ditentukan dalam permintaan.
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
tokenstandar.Layanan otentikasi kustom meneruskan respons yang berisi
tokenke klien. Klien menyimpantokendi mesin lokal.Klien mengirimkan permintaan bisnis yang berisi
tokenke pemicu HTTP.Pemicu HTTP menggunakan kunci publik yang dikonfigurasi untuk memverifikasi
tokendalam permintaan.Setelah verifikasi berhasil, permintaan diteruskan ke fungsi yang dilindungi.
Fungsi yang dilindungi memproses permintaan dan mengembalikan respons.
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, parameterquery(metode GET), parameter formulir (metode POST), ataucookie.Anda dapat meneruskan
klaimsebagaiheader, parameterquery(metode GET), parameter formulir (metode POST), ataucookieke fungsi.Anda dapat mengonfigurasi JWKS untuk pemicu HTTP. Setelah JWKS dikonfigurasi, sistem mencari JWKS untuk JWK publik yang memiliki
kidyang sama dengan kid dalamtokendan menggunakan JWK publik untuk memverifikasi tanda tangantoken. JWKS pemicu diizinkan memiliki maksimal satu JWK yangkid-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
PentingAlgoritma 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
tokendalam permintaan guna mencegah kebocoran token.
Prosedur
Langkah 1: Konfigurasikan otentikasi JWT
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.
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.
Di panel Ubah Pemicu, konfigurasikan parameter berikut dan klik OK.
Atur Authentication Method ke JWT Authentication.

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.


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" } ] }Di bagian JWT Token Configuration, pilih posisi baca dan nama
token.Anda dapat mengatur parameter Posisi Baca
tokenke Header, Cookie, Parameter Query, atau Parameter Formulir. Jika Anda mengatur parameter Posisi Bacatokenke Header, Anda harus menentukan parameter Parameter Name dan Remove Prefix. Saat Function Compute mendapatkan token, awalan yang ditentukan oleh parameter Remove Prefix dihapus.
PentingSaat mengonfigurasi parameter Remove Prefix, periksa apakah ada spasi setelah awalan. Kami merekomendasikan Anda menambahkan spasi setelah awalan yang ditentukan, misalnya,
Bearer.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.

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.
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.
Instal modul PyJWT.
pip install PyJWTJalankan 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)
Gunakan Postman untuk memverifikasi apakah layanan HTTP dapat diakses sesuai harapan.
Dapatkan URL Internet dari halaman dan masukkan URL di Postman.
Konfigurasikan parameter token di tab Headers di Postman. Lalu, klik Send. Tabel berikut menjelaskan konfigurasi token.
Nama
Nilai
Deskripsi
Kunci
AuthenticationNama token yang Anda tentukan di bagian JWT Token Configuration.
Nilai
Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9uIFNub3ciLCJhZG1pbiI6dHJ1ZSwiZXhwIjo0ODI5NTk3NjQxfQ.eRcobbpjAd3OSMxcWbmbicOTLjO2vuLR9F2QZMK4rz1JqfSRHgwQVqNxcfOIO9ckDMNlF_3jtdfCfvXfka-phJZpHmnaQJxmnOA8zA3R4wF4GUQdz5zkt74cK9jLAXpokwrviz2ROehwxTCwa0naRd_N9eFhvTRnP3u7L0xn3ll4iOf8Q4jS0mVLpjyTa5WiBkN5xi9hkFxd__p98Pah_Yf0hVQ2ldGSyTtAMmdM1Bvzad-kdZ_wW0jcctIla9bLnOo-Enr14EsGvziMh_QTZ3HQtJuToSKZ11xkNgaz7an5de6PuF5ISXQzxigpFVIkG765aEDVtEnFkMO0xyPGLgNilai JWT, yang berisi nilai parameter Hapus Awalan di JWT Token Configuration. Dalam contoh ini, parameter Hapus Awalan diatur ke
Bearer.PentingAwalan 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".