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

  • Isu SKTP Februari 2026 Sudah Terbit Ternyata Cuma Hoaks? Cek Jadwal Resminya Di Sini
  • Apa itu Mihari Novel? Aplikasi Baca Novel Dibayar
  • Cara Mengatasi NIK Belum Ditemukan di DTKS Saat Daftar KIP Kuliah, Jangan Panik Dulu!
  • Inilah 3 Karakteristik Pembagian Masyarakat Menurut Sibrani yang Bikin Kita Paham Struktur Sosial
  • Inilah Cara Mengatasi Status Bansos Atensi YAPI NTPN Tidak Ditemukan Biar Bantuan Tetap Cair!
  • Cara Mudah Unduh Video DS2Play Tanpa Ribet
  • Apa itu Free Float di Dunia Saham? Ini Artinya
  • Hati-Hati Modus Penipuan Asuransi BCA, Ini Caranya!
  • Inilah Panduan Lengkap Pendaftaran PPDB SMA Unggul Garuda Baru 2026, Simak Syarat dan Alurnya!
  • Alternatif Terbaik Dari OmeTV, Tanpa Takut Kena Banned
  • Tips Nama Petugas TKA SD/SMP Muncul Otomatis di Berita Acara
  • Inilah Fakta di Balik Video Botol Teh Pucuk Viral yang Lagi Rame di TikTok!
  • Apa itu Aturan Waktu Futsal dan Extra Time di Permainan Futsal?
  • Contoh Jawaban Refleksi Diri “Bagaimana Refleksi tentang Praktik Kinerja Selama Observasi Praktik Kinerja”
  • Main Telegram Dapat Uang Hoax atau Fakta?
  • Apa itu Lock iCloud? Ini Artinya
  • Integrasi KBC dan PM di Madrasah? Ini Pengertian dan Contoh Praktiknya
  • Ini Trik Input Pelaksana PBJ di Dapodik 2026.C Biar Info GTK Langsung Valid dan Aman!
  • Apa Maksud Hukum Dasar yang Dijadikan Pegangan dalam Penyelenggaraan Suatu Negara? Ini Jawabannya
  • Apakah Apk Puskanas Penipuan?
  • Inilah 10 Alternatif Mesin Pencari Selain Yandex yang Anti Blokir dan Aman Digunakan
  • Caranya Supaya WhatsApp Nggak Kena Spam Terus Meski Sudah Ganti Nomor, Ternyata Ini Rahasianya!
  • Jangan Tergiur Harga Murah! Inilah Deretan Risiko Fatal Membeli iPhone Lock iCloud
  • Mudik Gratis Pemprov Jateng 2026? Ini Pengertian dan Alur Lengkapnya
  • Inilah Cara Cek KIS Aktif Atau Tidak Lewat HP dan Solusi Praktis Jika Kepesertaan Nonaktif
  • Apa tiu Keberagaman? dan Kenapa Kita Butuh Perbedaan
  • Inilah Rekomendasi Tablet RAM 8 GB Paling Murah 2026 Buat Kerja dan Kuliah!
  • Ini Bocoran Honorable Mention TOTY FC Mobile OVR 117 dan 34 Kode Redeem Paling Baru!
  • Inilah Cara Memilih Smartband GPS Terbaik Biar Olahraga Kalian Makin Efektif!
  • Cara Cek Garansi iPhone dengan Benar, Penting Banget Buat yang Mau Beli HP Baru atau Bekas!
  • TinyMediaManager: A Plugin to Organize and Manage Jellyfin Media Library
  • How to Fix the Subscript Out of Range Error in Microsoft Excel
  • What’s New in Podman 5.8: Quadlet & SQLite Migration Explained
  • Microsoft Fixes Old Windows 10 Bug Affecting Parental Controls
  • OpenVPN 2.7 Released with Multi-Socket Support Explained
  • Prompt AI Menyusun Script Pola Suara Karakter agar Brand Jadi Ikonik
  • Prompt AI untuk Merancang Karakter Brand yang Ikonik
  • Prompt AI Audit Konten Sesuai Karakter Brand
  • Prompt AI Merubah Postingan LinkedIn Jadi Ladang Diskusi dengan ChatGPT
  • Prompt AI: Paksa Algoritma LinkedIn Promosikan Konten Kalian
  • 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
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

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