Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Apa itu Token Web JSON (JWT)? Mengapa API Menggunakannya?

Posted on August 21, 2022

Standar JSON Web Tokens (JWT) menjelaskan metode ringkas untuk transfer data yang dapat diverifikasi. Setiap token berisi tanda tangan yang memungkinkan pihak penerbit untuk memeriksa integritas pesan.

Dalam artikel ini, Anda akan mempelajari apa yang termasuk dalam struktur JWT dan bagaimana Anda dapat menghasilkan token Anda sendiri. JWT adalah cara populer untuk mengamankan API dan mengautentikasi sesi pengguna karena sederhana dan mandiri.

Bagaimana JWT Bekerja

Salah satu tugas paling umum di API apa pun adalah memvalidasi bahwa pengguna adalah siapa yang mereka klaim. Otentikasi biasanya ditangani dengan meminta klien menyertakan kunci API dengan permintaan yang dikirimnya ke server. Kunci berisi informasi tertanam yang mengidentifikasi pengguna. Ini masih menyisakan satu pertanyaan besar: bagaimana server dapat memvalidasi bahwa ia mengeluarkan kunci di tempat pertama?

JWTs dengan mudah memecahkan masalah ini dengan menggunakan rahasia untuk menandatangani setiap token. Server dapat memeriksa validitas token dengan mencoba menghitung ulang tanda tangan yang disajikan menggunakan rahasia pribadinya. Setiap gangguan akan menyebabkan verifikasi gagal.

Format JWT

JWT dibentuk dari tiga komponen berbeda:

Header – Ini termasuk metadata tentang token itu sendiri, seperti algoritma penandatanganan yang digunakan.Payload – Muatan token dapat berupa data arbitrer yang relevan dengan sistem Anda. Ini dapat mencakup ID pengguna dan daftar fitur yang dapat berinteraksi dengan mereka. Tanda Tangan – Tanda tangan memungkinkan integritas token divalidasi di masa mendatang. Itu dibuat dengan menandatangani header dan payload menggunakan nilai rahasia yang hanya diketahui oleh server.

Ketiga komponen ini digabungkan dengan titik untuk menghasilkan JWT:

header.payload.signature

Setiap bagian dikodekan menggunakan Base-64. Token lengkap adalah string teks yang dapat dengan mudah digunakan di lingkungan pemrograman dan dikirim dengan permintaan HTTP.

Membuat JWT

Langkah-langkah untuk membuat JWT dapat diterapkan di semua bahasa pemrograman. Contoh ini menggunakan PHP tetapi prosesnya akan serupa di sistem Anda sendiri.

Mulailah dengan membuat header. Ini biasanya mencakup dua bidang, alg dan ketik:

alg – Algoritma hashing yang akan digunakan untuk membuat tanda tangan. Ini biasanya HMAC SHA256 (HS256).typ – Jenis token yang dihasilkan. Ini seharusnya JWT.

Inilah JSON yang mendefinisikan header:

{ "alg": "HS256", "typ": "JWT" ​​}

Header JSON harus dikodekan Base64 selanjutnya:

$headerData=["alg" =>"HS256","typ"=>"JWT"];
$header=base64_encode(json_encode($headerData));

Selanjutnya tentukan payload token Anda sebagai objek JSON lainnya. Ini khusus aplikasi. Contoh ini menawarkan detail akun pengguna yang diautentikasi, serta informasi tentang token itu sendiri. exp, iat, dan nbf adalah bidang yang digunakan oleh konvensi untuk menyatakan waktu kedaluwarsa token, dikeluarkan pada waktu, dan tidak valid sebelum waktu (mulai). Payload juga harus dikodekan Base64.

$payloadData=["userId"=>1001,"userName"=>"demo","licensedFeatures"=>["todos","calendar","invoicing"], "exp"=>(time()+900),"iat"=>time(),"nbf"=>time()];
$payload=base64_encode(json_encode($payloadData));

Yang tersisa adalah membuat tanda tangan. Untuk menghasilkan ini, pertama-tama Anda menggabungkan header dan payload menjadi satu string yang dipisahkan oleh . character:

$headerAndPayload="$header.$payload";

Selanjutnya Anda harus membuat rahasia unik untuk digunakan sebagai kunci penandatanganan Anda. Rahasia harus disimpan dengan aman di server Anda dan tidak boleh dikirim ke klien. Paparan nilai ini akan memungkinkan siapa pun untuk membuat tokens.

// metode PHP yang valid untuk menghasilkan 32 karakter acak
$secret=bin2hex(openssl_random_pseudo_bytes(16));

Anda menyelesaikan proses dengan menggunakan rahasia untuk menandatangani header gabungan dan string payload menggunakan algoritma hashing yang Anda tunjukkan di header. Tanda tangan keluaran harus dikodekan Base64 seperti komponen lainnya.

$signature=base64_encode(hash_hmac("sha256",$headerAndPayload,$secret,true));

Sekarang Anda memiliki header, payload, dan tanda tangan sebagai teks individual komponen. Bergabunglah dengan mereka semua bersama-sama dengan . pemisah untuk membuat JWT untuk dikirim ke klien Anda:

$jwt="$header.$payload.$signature";

Memverifikasi JWTs

Aplikasi klien dapat menentukan fitur yang tersedia bagi pengguna dengan mendekode muatan token. Berikut ini contoh dalam JavaScript:

const tokenComponents = jwt.split(".");
const payload = token[1];
const payloadDecoded = JSON.parse(atob(payload)); 
// ["todos", "calendar", "invoicing"] 
console.log(payloadDecoded.licensedFeatures);

Seorang penyerang mungkin menyadari bahwa data ini adalah teks biasa dan terlihat mudah dimodifikasi. Mereka dapat mencoba meyakinkan server bahwa mereka memiliki fitur bonus dengan mengubah payload token di permintaan berikutnya:

// Buat komponen payload baru
const modifiedPayload = btoa(JSON.stringify({ ...payloadDecoded, licenseFeatures:[" todos", "kalender", "faktur", "Fitur ExtraPremium"]})); 
// Jahit kembali JWT dengan header asli dan signature
const newJwt = `${token[0]}.${modifiedPayload}.${token[2]}`

Jawaban tentang bagaimana server bertahan dari serangan ini terletak pada metode yang digunakan untuk menghasilkan tanda tangan. Nilai tanda tangan memperhitungkan header dan muatan token. Memodifikasi payload, seperti dalam contoh ini, berarti tanda tangan tidak lagi valid.

Kode sisi server memverifikasi JWT yang masuk dengan menghitung ulang tanda tangannya. Token telah diubah jika tanda tangan yang dikirim oleh klien tidak cocok dengan nilai yang dihasilkan di server.

$tamperedToken=$_POST["apiKey"];list($header,$payload,$signature)=$tamperedToken ; // Tentukan tanda tangan yang dimiliki token ini *harus* // ketika rahasia server digunakan sebagai kunci$expectedSignature=hash_hmac("sha256","$header.$payload",$secret,true); // Token telah dirusak karena // tanda tangannya salah untuk data yang disertakanif($signature!==$expectedSignature){ http_response_code(403);}// Tanda tangan cocok - kami membuat token // ini dan dapat dengan aman mempercayai dataelse{$user= fetchUserById($payload["userId"]);}

Penyerang tidak mungkin membuat token yang valid tanpa akses ke rahasia server. Ini juga berarti bahwa kehilangan yang tidak disengaja – atau rotasi yang disengaja – dari rahasia akan segera membatalkan semua token yang dikeluarkan sebelumnya.

Dalam situasi dunia nyata, kode autentikasi Anda juga harus memeriksa kedaluwarsa dan cap waktu “bukan sebelum” dalam muatan token. Ini digunakan untuk menentukan apakah sesi pengguna masih valid.

Kapan Menggunakan JWTs

JWT sering digunakan untuk autentikasi API karena mudah diterapkan di server, mudah digunakan di klien, dan mudah dikirim melintasi batas jaringan. Terlepas dari kesederhanaannya, mereka memiliki keamanan yang baik karena setiap token ditandatangani menggunakan kunci rahasia server.

JWTs adalah mekanisme tanpa kewarganegaraan sehingga Anda tidak perlu mencatat informasi tentang token yang diterbitkan di server Anda. Anda bisa mendapatkan informasi tentang klien yang menyajikan JWT dari payload token, daripada harus melakukan pencarian di database. Informasi ini dapat dipercaya dengan aman setelah Anda memverifikasi tanda tangan token.

Menggunakan JWT adalah pilihan yang baik kapan pun Anda perlu bertukar informasi antara dua pihak tanpa risiko gangguan. Ada titik lemah yang harus diperhatikan: seluruh sistem akan dikompromikan jika kunci rahasia server Anda bocor, atau kode verifikasi tanda tangan Anda mengandung bug. Untuk alasan ini banyak pengembang memilih untuk menggunakan perpustakaan sumber terbuka untuk mengimplementasikan pembuatan dan validasi JWT. Opsi tersedia untuk semua bahasa pemrograman populer. Mereka menghilangkan risiko pengawasan saat Anda memverifikasi token sendiri.

Kesimpulan

Standar JWT adalah format pertukaran data yang mencakup verifikasi integritas bawaan. JWT biasanya digunakan untuk mengamankan interaksi antara server API dan aplikasi klien. Server dapat mempercayai token yang masuk jika dapat mereproduksi tanda tangannya. Hal ini memungkinkan tindakan dilakukan dengan aman menggunakan informasi yang diperoleh dari payload token.

JWT nyaman tetapi memiliki beberapa kelemahan. Representasi tekstual yang disandikan Base64 JWT dapat dengan cepat menjadi besar jika Anda memiliki lebih dari beberapa bidang muatan. Ini bisa menjadi biaya tambahan yang tidak dapat diterima ketika klien Anda perlu mengirim JWT dengan setiap permintaan.

Ketidakbernegaraan JWT juga merupakan potensi kerugian lain: setelah dikeluarkan, token tidak dapat diubah dan harus digunakan apa adanya sampai kedaluwarsa. Klien yang menggunakan muatan JWT untuk menentukan izin pengguna atau fitur berlisensi perlu mendapatkan token baru dari backend setiap kali penetapan mereka berubah.

Itulah berita seputar Apa itu Token Web JSON (JWT)? Mengapa API Menggunakannya?, semoga bermanfaat. Disadur dari HowToGeek.com.

Terbaru

  • Inilah Lima HP Xiaomi Rp1 Jutaan Sudah Punya NFC
  • Apa itu Jabatan Panitera Muda Mahkamah Agung, Berapa Gaji & Tunjangannya 2026?
  • Inilah Kenapa Bisa Ada Sensasi Mencekam di Bangunan Tua
  • Apa itu Pengertian Frontier Market di Dunia Saham?
  • Apa itu Krnl Executor Roblox Mei 2026?
  • Inilah Cara Entry Nilai Rapor SPMBJ Jatim 2026 dan Berkas yang Dipersiapkan
  • Inilah 15 SMA Swasta Terbaik di Semarang Menurut Hasil SNBP 2026
  • Inilah Rekomendasi Motor Matic Paling Nyaman Buat Jarak Jauh 2026
  • Ini Jadwal dan Itinerary Liburan Long Weekend Tebing Breksi Yogyakarta
  • Game James Bond 007 First Light Siap Diluncurkan
  • Ini Cara Cek WhatsApp Di Hack atau Tidak + Tips Biar Lebih Aman
  • Daftar Harga HP Vivo Mei 2026, Ini Yang Paling Murah
  • Inilah Lenovo Legion Y70 2026 Bawa Snapdragon 8 Gen 5 dan Baterai Monster, Kapan Rilis?
  • Rekomendasi Lima HP Murah 2 Jutaan dengan RAM 12 GB
  • Hasil Penelitian: Boneka Melatih Kecerdasan Emosional Anak
  • SALAH! MIT Ungkap AI Tidak Ganti Karyawan Karena Efisiensi
  • Inilah Inovasi Terbaru Profesor UI: Pelumas Mobil dari Minyak Nabati!
  • Daftar Sekarang! Beasiswa S2 di Italia dari IYT Scholarship 2026 Sudah Dibuka
  • Sejarah Hantavirus dan Perkembangannya Sampai ke Indonesia
  • Kementerian Pendidikan: Mapel Bahasa Inggris Wajib di SD Mulai 2027!
  • Ketua Fraksi PKB MPR-RI: Kemenag Respon Cepat Pendidikan Santri Ndolo Kusumo Pati yang Terdampak
  • Viral Video Sejoli Di Balai Kota Panggul Trenggalek, Satpol PP Janji Usut
  • Video Viral Wakil Wali Kota Batam Tegur Keras Pasir Ilegal
  • LPDP Buka Peluang Beasiswa S3 Prancis 2026, Simak Syaratnya!
  • Inilah Panduan Lengkap dan Aturan Main Seleksi Penerimaan Murid Baru (SPMB) SMA dan SMK Negeri Jawa Tengah Tahun 2026
  • Inilah Syarat dan Cara Daftar MOFA Taiwan Fellowship 2027
  • RESMI! Inilah Macam Jalur di SPMB Sekolah Tahun Ajaran 2026
  • Ini Loh Rute Terbaru TransJOGJA Per Mei 2026, Jangan Salah Naik!
  • Inilah Jadwal Operasional MRT Jakarta Per Mei 2026, Berubah Dimana?
  • Inilah Syarat dan Mekanisme Seleksi Siswa Unggul ITB Jalur Talenta (OSN, Seniman, Hafidz, Atlet dll) 2026/2027
  • How to build a high-performance private photo cloud with Immich and TrueNAS SCALE
  • How to Build an Endgame Local AI Agent Setup Using an 8-Node NVIDIA Cluster with 1TB Memory
  • How to Master Windows Event Logs to Level Up Your Cybersecurity Investigations and SOC Career
  • How to Build Ultra-Resilient Databases with Amazon Aurora Global Database and RDS Proxy for Maximum Uptime and Performance
  • How to Build Real-Time Personalization Systems Using AWS Agentic AI to Make Every User Feel Special
  • How to Automate Your Entire SEO Strategy Using a Swarm of 100 Free AI Agents Working in Parallel
  • How to create professional presentations easily using NotebookLM’s AI power for school projects and beyond
  • How to Master SEO Automation with Google Gemini 3.1 Flash-Lite in Google AI Studio
  • How to create viral AI video ads and complete brand assets using the Claude and Higgsfield MCP integration
  • How to Transform Your Mac Into a Supercharged AI Assistant with Perplexity Personal Computer
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

©2026 emka.web.id | Design: Newspaperly WordPress Theme