Anatomi JWT: Header, Payload, Tanda Tangan
Uraikan bagian base64url dan pahami setiap bidang JWT.
Anatomi JWT: Header, Payload, Tanda Tangan adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa Itu JWT?
JSON Web Token (JWT) adalah format token ringkas yang aman digunakan dalam URL dan didefinisikan dalam RFC 7519. JWT mengodekan klaim (pernyataan tentang suatu subjek) dan tanda tangan kriptografis dalam satu string sehingga memungkinkan autentikasi tanpa status.
Struktur Tiga Bagian
JWT berbentuk: base64url(header).base64url(payload).base64url(signature). Titik memisahkan bagian-bagian tersebut. Header dan payload dapat dibaca (base64url, bukan dienkripsi). Hanya signature yang bersifat kriptografis.
Header
Header adalah objek JSON: {"alg":"HS256","typ":"JWT"}. alg menentukan algoritma penandatanganan (HS256, RS256, ES256, none). typ selalu bernilai "JWT". Header tambahan mencakup kid (ID kunci) untuk pemilihan kunci.
Payload / Klaim
Klaim terdaftar standar: iss (penerbit), sub (subjek), aud (audiens), exp (stempel waktu kedaluwarsa Unix), nbf (belum berlaku sebelum), iat (diterbitkan pada), jti (ID JWT untuk pencabutan). Klaim khusus adalah pasangan kunci-nilai tambahan apa pun.
Mendekode JWT
import base64, json token = "eyJ..." parts = token.split(".") header = json.loads(base64.urlsafe_b64decode(parts[0]+"==")) payload = json.loads(base64.urlsafe_b64decode(parts[1]+"==")) print(header, payload)
Verifikasi Tanda Tangan
Untuk HS256: HMAC-SHA256(base64url(header)+"."+base64url(payload), secret). Penerima menghitung ulang nilai ini dan membandingkannya dengan bagian signature. Jika keduanya cocok dan token belum kedaluwarsa, token tersebut valid.
Tanda Tangan Asimetris
Untuk RS256: kunci privat menandatangani string header.payload menggunakan RSA-SHA256. Siapa pun yang memiliki kunci publik dapat melakukan verifikasi tanpa kunci privat. Kunci publik didistribusikan melalui endpoint JWKS (JSON Web Key Set), misalnya /.well-known/jwks.json.
Pengodean Base64url
Base64url mengganti + dengan - dan / dengan _, serta menghilangkan padding =. Dengan demikian, JWT aman digunakan dalam URL, header HTTP, dan cookie tanpa pengodean persen. Byte mentahnya tetap tidak dienkripsi — hanya dikodekan.
JWT Secara Bawaan Tidak Dienkripsi
Payload JWT dapat dilihat oleh siapa pun yang mendekodekannya dari base64url. Jangan pernah memasukkan rahasia (kata sandi, SSN) ke dalam payload JWT, kecuali Anda menggunakan JWE (JSON Web Encryption) dengan algoritma "enc" untuk enkripsi sebenarnya.
Masa Berlaku Token
Atur exp ke durasi singkat (15–60 menit untuk token akses). JWT berumur panjang menambah risiko — jika dicuri, token tersebut tetap valid hingga kedaluwarsa. Gunakan token penyegaran (disimpan dengan aman) untuk menerbitkan token akses baru yang berumur singkat.
Penemuan JWKS
Penyedia autentikasi (Auth0, Keycloak, Google) menerbitkan URL JWKS. Pemverifikasi mengambil kunci publik berdasarkan kid, menyimpannya dalam cache, dan memverifikasi tanda tangan tanpa menghubungi penerbit pada setiap permintaan. Rotasi kunci memperbarui endpoint JWKS.
Pemeriksaan Singkat
Bagian JWT mana yang berisi tanda tangan kriptografis?
Ringkasan
JWT terdiri dari tiga bagian JSON yang dikodekan dengan base64url: header (algoritma), payload (klaim), dan signature. Payload dapat dibaca — bukan dienkripsi. Berikutnya: memilih antara HS256 dan RS256.
Belajar Cryptology Academy dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 67
- Pelajaran
- 261
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Anatomi JWT: Header, Payload, Tanda Tangan” gratis?
Ya — teks lengkap “Anatomi JWT: Header, Payload, Tanda Tangan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Anatomi JWT: Header, Payload, Tanda Tangan”?
Uraikan bagian base64url dan pahami setiap bidang JWT. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cryptology Academy?
Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Anatomi JWT: Header, Payload, Tanda Tangan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Anatomi JWT: Header, Payload, Tanda Tangan
- HS256 vs RS256: JWT Simetris vs Asimetris
- Kerentanan JWT: alg=none & Kekacauan Kunci
- Praktik Terbaik Implementasi JWT yang Aman