◈ CyberKitLEARNING LAB / ID

DUKUNG PENGEMBANGAN CYBERKIT

Bantu CyberKit tetap gratis.

Bantu kami menyempurnakan materi, mengembangkan lab localhost, dan menyiapkan panduan visual. Dukungan Anda melalui QRIS membantu pengembangan website ini. Donasi sukarela; seluruh materi tetap gratis, termasuk jika Anda belum berdonasi.

Lanjut ke materi gratis ↓

Penerima: BackToYouStore
NMID: ID1026497825467

Lihat QRIS donasi
QRIS donasi pengembangan CyberKit, penerima BackToYouStore, NMID ID1026497825467

Scan dengan aplikasi pembayaran yang mendukung QRIS, atau simpan gambar untuk digunakan di aplikasi Anda. Periksa nama penerima BackToYouStore sebelum mengonfirmasi.

Simpan gambar QRIS ↓Buka gambar ukuran asli ↗

Website ini tidak memproses atau mencatat transaksi dan tidak menampilkan status pembayaran.

WEB28 / LATIHAN MEMAHAMI RANCANGAN

JWT: decode bukan verifikasi

30–50 menit · Prasyarat: WEB27

Masih dalam pengembangan. Belajar pelan-pelan. Gunakan komputer sendiri dan data contoh.

Isi pelajaran ini

Kita belajar apa?

JWT adalah salah satu bentuk token yang dapat membawa keterangan pengguna. Isi yang bisa dibaca belum berarti isinya asli. Program perlu memeriksa tanda tangan digital dan aturan token. Contoh kita hanya belajar mengubah teks menjadi bentuk lain lalu membacanya kembali.

Bayangkan seperti ini

Isi surat bisa dibaca siapa saja, tetapi cap atau tanda tangan perlu diperiksa untuk mengetahui asalnya.

Arti kata yang mungkin baru

token
tanda digital yang dapat dipakai aplikasi sesuai aturan tertentu
Python
bahasa dan alat untuk menjalankan program contoh
Penjelasan tambahan jika kamu ingin tahu lebih jauh

JWT bertanda tangan mengikat payload dengan kunci dan algoritma. Base64url bukan enkripsi: payload dapat dibaca. Validasi mencakup signature, algoritma yang diizinkan, issuer, audience dan waktu sesuai kontrak. Pelajaran ini latihan lokal struktur token, bukan implementasi kriptografi produksi.

Persiapan

Siapkan catatan dan baca panduan perangkat. Pakai data buatan, bukan data pribadi. Baca satu langkah, kerjakan, lalu periksa hasilnya sebelum melanjutkan.

Pelajaran ini tidak meminta kamu menjalankan server lab. Siapkan aplikasi atau file yang disebut pada langkah latihan di bawah.

Langkah latihan

  1. Buka contoh jwt_demo.py di bawah.
  2. Simpan sebagai file Python di folder latihan.
  3. Jalankan dengan interpreter yang berhasil dipakai pada F08.
  4. Lihat data awal dapat dibaca kembali.
  5. Ubah role pada data contoh dan ingat bahwa perubahan itu tidak membuat tanda tangan yang sah.

jwt_demo.py — encoding payload, bukan JWT yang valid

import base64
import json

payload = {"sub": "demo", "role": "reader"}
raw = json.dumps(payload).encode("utf-8")
encoded = base64.urlsafe_b64encode(raw).rstrip(b"=")
print("Encoded:", encoded.decode())
padding = b"=" * (-len(encoded) % 4)
decoded = json.loads(base64.urlsafe_b64decode(encoded + padding))
print("Decoded:", decoded)
print("Tidak ada signature dan tidak ada server penerima.")

Hasil yang diharapkan

Kamu memahami bahwa mengubah atau membaca isi token tidak membuktikan token itu diterima server.

Bandingkan dengan hasilmu sendiri. Jika berbeda, tulis apa yang terlihat lalu baca bagian bantuan di bawah. Jangan mengaku berhasil jika langkahnya belum kamu coba.

Jika terhambat

Berhenti sebentar dan baca pesan yang muncul. Periksa nama file, folder, alamat, dan apakah program latihan masih berjalan. Ulangi satu langkah saja. Jika tetap bingung, minta bantuan guru atau pendamping; jangan mematikan keamanan perangkat.

Petunjuk khusus untuk pelajaran ini

Padding base64url dapat perlu ditambahkan untuk decode. Jangan memakai token akun sungguhan.

Apa yang perlu kamu catat?

Tulis langkah yang kamu lakukan dan hasil yang benar-benar terlihat. Tambahkan satu kalimat: “Saya belajar bahwa …”. Untuk latihan menggambar, simpan gambar dan jawabanmu.

Cek pemahamanmu

Apakah payload JWT yang berhasil diedit berarti token valid?

Buka pembahasan

Tidak. Signature dan klaim harus diverifikasi; encoding atau decoding tidak membuktikan keaslian.

Tantangan mandiri

Jelaskan perbedaan encoding, signature dan enkripsi.

Pedoman penilaian tantangan

Jawaban harus sesuai hasil aktual, menyebut batas kesimpulan, dan tidak keluar scope. Gunakan langkah serta hasil harapan pelajaran sebagai pembanding; nilai 0 bila belum ada, 1 bila sebagian, 2 bila jelas dan dapat ditinjau.

Perbaikan & retest

Gunakan library terawat dan pin algoritma/kunci serta validasi klaim sesuai konteks.

Referensi

↑ Kembali ke awal pelajaran