Pengertian JSON Web Token (JWT) ?

  • Post author:
  • Post category:JSON
  • Post comments:0 Comments
  • Reading time:5 mins read

Pengertian JSON Web Token (JWT) ? Seperti yang sudah kita ketahui JWT adalah singkatan dari JSON Web Token. adalah standar terbuka (RFC 7519) yang mendefinisikan cara yang ringkas dan mandiri untuk mentransmisikan informasi antar pihak secara aman sebagai objek JSON. Informasi ini dapat di verifikasi dan di percaya karena di assign secara digital. JWT dapat di signature menggunakan (algoritma HMAC)secara tersembunyi atau pasangan kunci publik/pribadi menggunakan RSA atau ECDSA.

Meskipun Json web token JWT dapat di enkripsi dan juga memberikan kerahasiaan antar pihak, kami akan fokus pada token yang ter signature. Token yang signature dapat memverifikasi integritas klaim yang terkandung di dalamnya, sementara token terenkripsi menyembunyikan klaim tersebut dari pihak lain. Ketika token ter signature menggunakan pasangan kunci publik/pribadi, signature juga menyatakan bahwa hanya pihak yang memegang kunci pribadi yang menandatanganinya.

Kapan harus menggunakan JSON Web Token (JWT) ?

Berikut adalah beberapa di mana JSON Web Token berguna:

Otorisasi: Ini adalah skenario paling umum untuk menggunakan JWT. Setelah pengguna masuk, setiap permintaan berikutnya akan menyertakan JWT, yang memungkinkan pengguna untuk mengakses rute, layanan, dan sumber daya yang di izinkan dengan token itu. Single Sign On adalah fitur yang banyak menggunakan JWT saat ini, karena overhead-nya yang kecil dan kemampuannya untuk dengan mudah di gunakan di berbagai domain.

Pertukaran Informasi: Cara yang baik untuk mengirimkan informasi antar pihak dengan aman. Karena JWT dapat di signature, misalnya, menggunakan pasangan kunci publik/pribadi, Anda dapat yakin bahwa pengirimnya adalah yang mereka katakan. Selain itu, karena signature di hitung menggunakan header dan payload, Anda juga dapat memverifikasi bahwa konten tidak di rusak.

Baca juga : JavaScript

Struktur JSON Web Token (JWT)

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

Header
Payload
Signature


Oleh karena itu, JWT biasanya terlihat seperti berikut ini :

aaaaa.bbbbb.ccccc

Header JSON Web Token (JWT)

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

Sebagai contoh:

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

Payload JSON Web Token (JWT)

Pengertian JSON Web Token (JWT) ? – Bagian kedua dari token adalah payload, yang berisi klaim. Klaim adalah pernyataan tentang suatu entitas (biasanya, pengguna) dan data tambahan. Ada tiga jenis klaim: klaim terdaftar, publik, dan pribadi.

Registered claims: Ini adalah satu set klaim yang telah ditentukan sebelumnya yang tidak wajib tetapi di rekomendasikan, untuk memberikan satu set klaim yang berguna dan dapat dioperasikan. Beberapa di antaranya adalah: iss (penerbit), exp (waktu kedaluwarsa), sub (subjek), aud (audiens), dan lain-lain.

Public claims: Ini dapat di tentukan sesuka hati oleh mereka yang menggunakan JWT. Tetapi untuk menghindari tabrakan, mereka harus di definisikan di IANA JSON Web Token Registry atau didefinisikan sebagai URI yang berisi ruang nama yang tahan benturan.

Private claims: Ini adalah klaim khusus yang di buat untuk berbagi informasi antara pihak-pihak yang setuju untuk menggunakannya dan bukan merupakan klaim terdaftar atau publik.

Contoh payload dapat berupa:

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

Payload kemudian di enkripsi Base64Url untuk membentuk bagian kedua dari JSON Web Token.

Signature JSON Web Token (JWT)

Untuk membuat bagian signature Anda harus mengambil header yang di enkripsi, isi yang ter engkrkipsi, rahasia, algoritme yang di tentukan di header , dan meng signaturnya.

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

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

Jika Anda ingin menggunkan JWT dan mempraktikkan konsep-konsep ini, kita dapat menggunakan jwt.io Debugger untuk memecahkan kode, memverifikasi, dan menghasilkan JWT.

Pengertian JSON Web Token (JWT) ?
jwt.io Debugger

Cara Kerja

Bagaimana cara kerja nya ?
Dalam otentikasi, ketika pengguna berhasil masuk menggunakan kredensial mereka, JSON Web Token akan di kembalikan. Karena token adalah kredensial, perhatian besar harus di berikan untuk mencegah masalah keamanan. Secara umum, Anda tidak boleh menyimpan token lebih lama dari yang di butuhkan.

Anda juga tidak boleh menyimpan data sesi sensitif di penyimpanan browser karena kurangnya keamanan.

Kapan pun pengguna ingin mengakses rute atau sumber daya yang di lindungi, agen pengguna harus mengirim JWT, biasanya di header Otorisasi menggunakan skema Bearer. Isi header akan terlihat seperti berikut:

Authorization: Bearer <token>

Mengapa Menggunakan JWT?

Mengapa kita harus menggunakan Token Web JSON?
Mari kita bicara tentang manfaat JSON Web Tokens (JWT) jika membandingkan dengan Simple Web Tokens (SWT) dan Security Assertion Markup Language Tokens (SAML).

Karena JSON tidak bertele-tele dari pada XML, ketika dikodekan, ukurannya juga lebih kecil, membuat JWT lebih ringkas daripada SAML. Ini menjadikan JWT pilihan yang baik untuk diteruskan di lingkungan HTML dan HTTP.

Dari segi keamanan, SWT hanya dapat ditandatangani secara simetris oleh rahasia bersama menggunakan algoritma HMAC. Namun, token JWT dan SAML dapat menggunakan pasangan kunci publik/pribadi dalam bentuk sertifikat X.509 untuk penandatanganan. Menandatangani XML dengan XML Digital Signature tanpa memperkenalkan lubang keamanan yang tidak jelas sangat sulit jika dibandingkan dengan kesederhanaan penandatanganan JSON.

Parser JSON umum di sebagian besar bahasa pemrograman karena mereka memetakan langsung ke objek. Sebaliknya, XML tidak memiliki pemetaan dokumen-ke-objek alami. Ini membuatnya lebih mudah untuk bekerja dengan JWT daripada pernyataan SAML.

Mengenai penggunaan, JWT di gunakan pada skala Internet. Ini menyoroti kemudahan pemrosesan sisi klien dari token Web JSON di berbagai platform, terutama seluler.

admin

giginau

Tinggalkan Balasan