JSON Web Token (JWT)

January 28, 2021 by

 JSON Web Token (jwt)
Studi kasus. kapan pakai jwt
misal toko online sistem, pakai monolitic. Sekarang butuh microservices.
Anggap perusahaan kita udh besar dan banyak maka tiap tim developer akan memegang masing2.
Domain driven design, memotong per domain, tiap data di pecah2.

/users/... user service
/product/.. product service
/orders/...
/paymens/...  
ini dipecah2 supaya menjadi lebih kecil. Pertanyaannya setelah session login maka harus disimpan utk handle session antar service.

/login => session service
Ketika login ditujukan langsung ke service tsb,
semua website akan menyimpan sebuah cookies, dan disimpan di browser, dan akan dikirim ketika ada request di domain yg sama. Biasanya cookies sudah diamankan, tiap hit ke service2 selanjutnya maka data cookies itu akan dikirim oleh browser. Pertanyaannya cara cek validasi cookies, maka biasanya kita ambil cookiesnya dan akan di validasi ke session service apakah valid atau tidak dan session service akan mengembalikan data sesuai validasi nya,
Problemnya semua service itu ketergantungan dengan session service ketika ingin melakukan proses calling di dalam service2 lain. Tiap kali ada request masuk besar maka membuat lambat, semua aplikasi menjadi lambat.

Dibanding kita mencall session service, kita simpan di storage database (mysql,postgre) atau lebih cepat (redis,memcache,dll). maka semua service ditembak ke service storage utk di cek.

JWT adalah standar spesifikasi RFC 7519 => jwt.io
standar dimana digunakan untuk pertukaran data dua buah pihak secara aman.
Token = semua identitas informasi disisipkan langsung ke dlm token, bntknya string panjang, ada header, payload, signature.
Header (base64) dari data string JSON. Kita mau menggunakan hashing di dlm header.
Payload = base64 semua informasi yg dibutuh utk pertukaran data antar service2 misal password tidak diperlukan.
Signature = menvalidasi apakah benar token ini benar atau tidak. berisikan hasil dari algoritma hashing, dan key dan string base64 dari header dan payload dan disisipkan secret key harus aman, dan disimpan semua service, di toko online.
awalnya semua ke hit ke session service. session service hanya membuat jwt dan dsimpan utk hit ditiap service. Jika valid maka tiap service bisa dapat datanya.
Kekurangan json web token :
Proses melakukan verifikasi (proses semakin sulit dan susah maka proses cpu semakin berat)

0 comments:

Post a Comment