Tutorial Laravel JWT #1 : Apa itu JWT (Json Web Token) ?


Tutorial Laravel JWT #1 : Apa itu JWT (Json Web Token) ?

JSON Web Token atau biasa disebut dengan JWT adalah standar terbuka (RFC 7519) yang mendefinisikan cara untuk mentransmisikan informasi dengan aman antar pihak sebagai objek JSON. Informasi ini dapat diverifikasi dan dipercaya karena ditandatangani secara digital. JWT dapat ditandatangani menggunakan sebuah secreet (dengan algoritma HMAC) atau pasangan kunci publik / pribadi menggunakan RSA atau ECDSA. (https://jwt.io/introduction/)

Sederhananya JWT merupakan Web Token yang berupa JSON dan umumnya digunakan untuk proses authentication. Dimana untuk mendapatkan suatu data di dalam server kita harus menyertakan token tersebut sebagai kuncinya.

Kapan kita harus menggunakan JSON Web Token?

  • Authentication

    Ketika pengguna melakukan authentication dan mendapatkan token, maka setiap permintaan berikutnya akan menyertakan token tersebut, dan memungkinkan pengguna untuk mengakses route, service, dan resources yang diizinkan.

  • Pertukaran Informasi

    JSON Web Token adalah cara yang baik untuk mengirimkan informasi antar pihak dengan aman. Dengan token yang sudah ditandatangani dengan algoritma RSA, maka kita bisa tahu siapa yang melakukan request tersebut.

Bagaimana cara kerja JSON Web Token?

Sama seperti cara kerja password. Saat user berhasil melakukan proses otentikasi, maka server akan memberikan sebuah token dan token tersebut nantinya akan disimpan oleh user di dalam client side, seperti localStorage atau Cookies. Dan untuk permintaan selanjutnya, kita harus menyertakan token tersebut sebagai bukti bahwa user tersebut sudah melakukan proses otentikasi.

Struktur di JSON Web Token

Dalam bentuknya yang ringkas, JSON Web Token terdiri dari tiga bagian yang dipisahkan oleh titik (.), yaitu:

  • Header
  • Payload
  • Signature

Oleh karena itu, JWT biasanya terlihat seperti berikut ini.

xxxxx.yyyyy.zzzzz

Mari kita memecah bagian yang berbeda.

Header

Header biasanya terdiri dari dua bagian: jenis token, yaitu JWT, dan algoritma penandatanganan yang digunakan, seperti HMAC SHA256 atau RSA.

Contohnya :

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

Kemudian, JSON ini encode Base64Url untuk membentuk bagian pertama dari JWT.

Payload

Bagian kedua dari token adalah payload, yang berisi klaim. Klaim adalah pernyataan tentang suatu entitas (biasanya, berupa data pengguna), seperti nama, email, dan lain-lain.

CATATAN ! : jangan menambahkan informasi yang sifatnya sensitif pada payload, seperti password.

Contohnya :

{
  "sub": "1234567890",
  "name": "Fika Ridaul Maulayya",
  "admin": true
}

Signature

Siganture berisi data Header dan Payload yang sudah di encode, kemudian ditambahkan sebuah kode screet. Signature berperan untuk memverifikasi nilai yang ada di dalam Header dan Payload tidak berubah isinya.

Misalnya jika Anda ingin menggunakan algoritma HMAC SHA256, signature akan dibuat dengan cara berikut:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

Dari hasil gabungan Header, Payload dan Signatur. Maka akan menjadi sebuah token yang dirandom sangat panjang, kurang lebih seperti berikut ini.

Kurang lebih seperti itu penjelasan tentang apa itu JWT atau JSON Web Token. Pada artikel selanjutnya kita semua akan belajar bagaimana cara mengimplementasikannya di dalam Laravel.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami