TEKNOLOGI

Mengenal JSON Web Token, Apakah Itu?

JWT adalah singkatan dari JSON Web Token. Ini adalah standar terbuka (RFC 7519) untuk mengirimkan informasi yang aman antara dua pihak dalam bentuk objek JSON. JWT umumnya digunakan sebagai metode autentikasi dan pertukaran informasi di lingkungan yang tidak memiliki penyimpanan sesi seperti REST API atau aplikasi berbasis mikroservis.

Baca Juga : Jangan Lupa, Amankan API Anda dengan Autentikasi

Sebuah JWT terdiri dari tiga bagian yang dienkripsi dan dikodekan dalam bentuk string menggunakan algoritma kriptografi tertentu:

  1. Header: Bagian pertama JWT adalah header yang berisi informasi tentang algoritma enkripsi yang digunakan dan jenis token. Contoh header JWT:

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

    Di sini, alg menunjukkan algoritma enkripsi yang digunakan (dalam contoh ini adalah HMAC SHA-256), dan typ menunjukkan jenis token (dalam hal ini adalah JWT).

  • Payload: Bagian kedua adalah payload (isi) dari JWT yang berisi klaim (claims) yang adalah informasi terkait entitas (seperti pengguna) dan beberapa informasi tambahan. Klaim dibagi menjadi tiga jenis: klaim terdaftar (registered claims), klaim pribadi (private claims), dan klaim umum (public claims). Contoh payload JWT:

  1. { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }

    Di sini, sub adalah klaim subyek yang menunjukkan subjek dari token (misalnya, ID pengguna), name adalah klaim nama, dan iat adalah klaim waktu pembuatan token.

  2. Signature: Bagian ketiga adalah tanda tangan digital yang dibuat dengan menggabungkan header, payload, dan kunci rahasia (shared secret) menggunakan algoritma enkripsi yang telah ditentukan di header. Signature digunakan untuk memastikan integritas data dan bahwa token tidak diubah selama pengiriman.

JWT memiliki beberapa kelebihan, termasuk:

  • Tanpa Status: Karena token ini berisi informasi yang relevan, server tidak perlu menyimpan status autentikasi pengguna atau sesi.
  • Ringan: Karena berbentuk teks, JWT memiliki ukuran yang relatif kecil dan ringan untuk dikirimkan melalui jaringan.
  • Portable: Karena JWT dapat di-decode oleh penerima, informasi yang dikandungnya dapat langsung digunakan oleh klien.
  • Keamanan: Dengan menggunakan algoritma enkripsi yang kuat, JWT dapat digunakan untuk mengamankan pertukaran informasi antara pihak-pihak yang terlibat.

Namun, perlu diingat bahwa JWT tidak cocok untuk semua skenario, dan Anda harus mempertimbangkan penggunaan yang tepat berdasarkan kebutuhan keamanan dan fitur dari proyek Anda.