Apa itu JWT token? Pengertian JWT dan Implemntasi di RESTful API

Apa itu JWT token? Pengertian JWT dan Implemntasi di RESTful API
Konten Halaman

Menggunakan JWT token adalah kewajiban untuk mengamankan authorization API (Aplication Programing Interface) ketika digunakan di end user.

Token Web JSON memberikan solusi yang dapat diskalakan dengan manfaat kinerja yang signifikan untuk kontrol akses pengguna dalam sistem terdistribusi skala besar yang terdesentralisasi. Contoh-contoh seperti itu akan biasa diimplementasikan dalam arsitektur microservices berbasis cloud atau solusi Internet of Things yang khas.

Salah satu kendala untuk mencegah akses pembatasan setiap layananan dalam micro-services maka penggunaan akses kontrol berbasis JSON Web Token solusi masalah untuk pembatalan token yang dikeluarkan dalam layanan saat klien meninggalkan sistem

Logout token saat ini membutuhkan overhead pemrosesan yang cukup besar atau kompleksitas arsitektur yang meningkat secara drastis. Memecahkan masalah ini tanpa kehilangan manfaat utama Token Web JSON masih merupakan tantangan terbuka yang akan dibahas dalam artikel.

Tujuan utama JSON Web Tokens (JWT) atau bisa disebut sebagai jot adalah menyediakan cara yang terbuka dan aman untuk mewakili klaim antara dua pihak. Memperluas konsep ini, ada adalah beberapa implementasi menggunakan JWT sebagai dasarnya untuk otentikasi pengguna dan kontrol akses.

Dalam skema kontrol akses berbasis JWT, otentikasi pengguna awal dilakukan menggunakan tradisional metode, misalnya, memberikan kombinasi nama pengguna dan kata sandi.

Setelah otentikasi berhasil, otorisasi rincian pengguna, seperti mengidentifikasi, peran, dan izin, dikemas ke dalam JWT. Tokennya kemudian dienkripsi menggunakan kunci enkripsi bersama (disebut JWT rahasia) memastikan keterverifikasian di setiap titik akhir yang diamankan

Token ini diteruskan setiap permintaan berikutnya oleh klien (dikenal sebagai ‘‘pembawa token’’), didekripsi dan dibongkar oleh layanan, dan kontrol akses data dari token diambil. Dalam terminologi keamanan, kami biasanya menyebut token ini sebagai token akses.

Mengakses sumber daya yang aman melalui skema ini memerlukan prosedur berikut:

  1. Klien mengirimkan permintaan otentikasi menggunakan metode yang telah ditentukan sebelumnya, seperti kombinasi nama pengguna-kata sandi.

  2. Layanan otentikasi, setelah memeriksa kredensial pengguna, membuat JWT dari data otorisasi pengguna yang diambil. Token ini dienkripsi menggunakan rahasia JWT dan kemudian dikembalikan ke klien, tetapi tidak disimpan di server.

  3. Klien meneruskan token ini dengan permintaan ke sumber daya yang aman

  4. Layanan aman menerima permintaan, mendekripsi token yang dilampirkan, dan membongkar data autentikasi pengguna darinya. Dengan menggunakan informasi ini, permintaan dapat diotorisasi atau ditolak, dan respons yang tepat dikirim


JWT token di encode menggunakan base64 yang dipisahkan oleh titik kemudian masing-masing bagian di encode base64 agar mudah untuk dikirim sehingga menghilangkan simbol atau spasi yang akan dikirim formatnya, biasanya memiliki data seperti role, user id untuk diisikan dalam bagian payload. Selain Payload JWT memiliki bagian Header dan Verify Signature.

JSON Web Token (JWT) adalah standar terbuka (RFC 7519) yang mendefinisikan sederhana dan mandiri untuk mengirimkan informasi antar pihak secara aman dalam format JSON.

Informasi dapat diverifikasi dan dipercaya karena ditandatangani secara digital. JWT dapat ditandatangani menggunakan rahasia (dengan algoritma HMAC) atau pasangan kunci publik/pribadi menggunakan RSA atau ECDSA.

Meskipun JWT dapat dienkripsi untuk juga memberikan kerahasiaan antar pihak, Lalu Token yang ter signature dapat memverifikasi integritas klaim yang terkandung di dalamnya, sementara token terenkripsi menyembunyikan klaim tersebut dari pihak lain. Ketika token ditandatangani menggunakan pasangan kunci publik/pribadi, signature juga menyatakan bahwa hanya pihak yang memegang kunci pribadi yang menandatanganinya.

Authorization: skenario ini adalah yang paling umum yang digunakan JWT. Setelah pengguna login atau masuk, setiap permintaan berikutnya akan menyertakan JWT, yang memungkinkan pengguna untuk mengakses rute, layanan, dan sumber daya yang diizinkan dengan token itu.

Information Exchange: Token Web JSON adalah untuk mengirimkan informasi antar pihak dengan aman.Karena JWT dapat memiliki signature, menggunakan pasangan kunci publik/private sehingga pengirimnya bisa dipercaya.Selain itu, karena signature dihitung menggunakan header dan payload, JWT juga dapat memverifikasi bahwa konten data tidak dimodifikasi oleh end-user.

Bagian-Bagian JWT (JSON Web Token)

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

  • Header
  • Payload
  • Signature

Maka JWT akan terlihat seperti berikut ini.

xxxxx.yyyyy.zzzzz

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

Contoh:

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

Kemudian, JSON ini decode dalam bentuk Base64Url untuk membentuk bagian pertama di JWT.

Payload

Bagian kedua dari token adalah payload, yang berisi klaim. Klaim yang dimaksud adalah pernyataan tentang suatu entitas biasanya pengguna dan data tambahan. Ada tiga jenis klaim: klaim terdaftar, publik, dan pribadi.

Contoh:

{
  "sub": "1234567890",
  "name": "Hani Hanifah",
  "admin": true
}

Sama seperti dengan bagian Header, Payload kemudian decode Base64Url untuk membentuk bagian yang kedua dari JSON Web Token.

Signature

Untuk membuat bagian signature, anda harus mengambil kunci atau string yang disandikan, muatan yang disandikan, rahasia, algoritma yang ditentukan dalam kunci, dan signature. Misalnya jika ingin menggunakan algoritma HMAC SHA256, signature akan dibuat dengan cara berikut:

HMACSHA256(base64UrlEncode(header) + '.' + base64UrlEncode(payload), secret);