Sebenarnya Apa Sih JWT Itu?

 


Ketika web dijalankan, maka segala aktifitas terekam. Termasuk usernama dan password yang kamu masukkan. 

Namun dibutuhkan pengamanan yang kuat agar segala data itu tidak hilang, dan tetap tersimpan dengan aman di dalam server

Awalnya teknologi Session menangani semua itu. Session akan bertugas untuk merekam data yang username dan password dalam web, sehingga ketika sewaktu waktu ada akun (username & passsword) yang masuk, data data itu takkan hilang. Mulai dari pesan masuk, jumlah absensi sekolahmu, biodatamu, dan lain sebagainya. Semua data itu bisa tetapa ada disana karena adanya Session yang disimpan dalam memory pada server

Namun akhir akhir ada teknologi yang menggantikannya, karena dirasa Session tak lagi aman. Bayangkan jika proses Session hanya semudah itu, berarti hanya dengan mengetahui sidik jari Session yang tersimpan, kita bisa menguasai data data yang kita anggap sebuah privasi. Apakah mau pesan masuk doi kita terbaca oleh orang asing? Tentu tidak

Maka dari itu lahirlah sebuah teknologi yang bernama JWT atau JSON Web Token

Apa Itu JWT (Json Web Token?)

Menurtu situs resminya:

"JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA."

Atau secara singkat JWT adalah standard yang mengamankan pertukaran informasi berbentuk object JSON. Yang mana informasi tersebut bisa diverifikasi karena telah ditandai secara digital.

Kita telah mendapatkan kata kunci untuk memahami JWT ini. Verifikasi dan Ditandai atau dalam bahasa inggris dikenal

Verify dan Signed

Bagaimana JWT Bekerja?

 


Pertama. Semisal kita memasukkan username dan password. Maka Server akan memberikan kode JWT, ini merupakan proses yang disebut sebagai Sign, dan token JWT tersebut merupakan Signature. Kode JWT ini diberikan berdasarkan kode rahasia. para programmer biasanya menyebutnya sebagai SECRET_KEY yang disimpan pada file .env

Contoh SECRET_KEY. Biasanya saat kita takkan memasukkan file ini pada repo Github. Caranya kita tuliskan .env pada file gitignore

Kedua. Setelah itu JWT akan memberikan JWT pada browser dan mengirimkan JWT sebagai header Request kepada Server

Ketiga. Server akan mem-verify JWT tersebut. Atau sederhananya, mencocokan Signature tersebut sehingga server bisa memastikan request ini merupakan request yang aman dan bukan berasal dari hacker

Keempat. Server memberikan response yang diminta oleh Client. Bisa berupa isi data json, data data yang harus dipopulasikan

Kelebihan JWT Dibandingkan Session Biasa


Ketika kita menggunakan Session. Setiap Client mengambil data dari server Bank, maka semua proses keluar masuk, merubah dan menghapus data akan berhasil karena Session pada server Bank menyimpan ID Session tersebut. Namun ketika Client mengakses server Retirement semua itu takkan berhasil karena server Retirement tidak menyimpan Session apapun. 

Sedangkan jika kita menggunakan JWT kita bebas mengakses server manapun, bisa Bank bisa Retirement. Selama kedua server tersebut memiliki SECRET_KEY yang sama

Amankan SECRET_KEY-mu

Tunggu. Apakah kamu yakin, SECRET_KEY mu aman?

Dan apakah kamu sudah tahu, bahwa SECRET_KEY mu tidak boleh sampai bocor?

Untuk mengamankan SECRET_KEY mu. Maka kita membutuhkan SECRET_KEY yang serandom mungkin. Serandom randomnya. Tidak bisa ditebak oleh manusia manapun. Hanya kita dan Allah yang boleh mengetahuinya

Bagaimana caranya? Caranya adalah dengan mendapatkan kode random tersebut menggunakan module bernama crypto

Buka CLI kalian. Dan ketik node

Lalu ketik require('crypto').randomBytes(64).toString('hex')

Maka kita akan mendapatkan angka angka, karakter karakter aneh ini

Ini lah yang akan menjadi SECRET_KEY kita. Kita kopi dan masukkan kedalam .env


 

Comments

Popular posts from this blog

Cara Mengatasi Hang/Freeze Pada Laptop Asus TUF Gaming

Cara Menjalankan PHP 8 & Laravel 9 Pada Laragon

Tutorial NextJS 13 & Typescript: Membuat Navbar Dengan Shadcn/UI