Hai provers, gimana kabarnya? Semoga semua dalam keadaan yang baik yaa. Karena kali ini kita akan bahas apa itu JSON Web Token. Secara sederhana JSON Web Token merupakan standar internet yang digunakan untuk pertukaran data dengan keamanan yang handal.
Sebelum masuk kedalam JSON Web Token kita pelajari terlebih dahulu apa itu token. Dalam kehidupan sehari – hari pasti provers sudah terbiasa dengan yang namanya token. Baik itu token listrik atau mungkin juga token pulsa. Token disini menjadi id yang berisi data pemilik token. Jadi di JSON Web Token semua informasi data seperti nama, username dan lain – lain disisipkan di dalam token.
JSON Web Token berisi string yang panjang seperti gambar dibawah ini.
JSON Web Token dibagi menjadi 3 bentuk yaitu header, payload, dan signature.
- Header
Header berisi encoded base64. Base64 dari data string JSON. Didalam string JSON ada algoritma. Kita juga harus menentukan algoritma yang akan dipakai untuk melakukan Hexing. Kenapa kita memakai hexing, karena hexing bersifat satu arah yang artinya hexing itu tidak bisa di decrypt, itulah mengapa JSON Web Token tidak memakai encrypt.
- Payload
Payload berisi data informasi yang dibutuhkan antar service seperti username dan email. Payload berisi base64 dari body JSON. Jadi body JSON berisi informasi yang kita butuh, untuk dikirim dari service yang membuat JSON Web Token ke service yang membutuhkan JSON Web Token. Informasi yang dicantumkan kemudian akan disisipkan kedalam JSON Web Token. Yang perlu diperhatikan adalah, kita tidak perlu menambahkan informasi – informasi yang tidak diperlukan seperti password. Seperti yang kita tahu JSON Web Token itu adalah encoded. Jadi ketika encoded kemudian di decoded di browser, informasi seperti password akan bisa terlihat.
- Signature
Signature adalah string verifikasi untuk memastikan token valid atau tidak. Jadi jika sebelumnya belum memakai JSON Web Token, kita harus memanggil database session service. Setelah kita memakai JSON Web Token, kita bisa memverifikasi dengan signature, dimana signature berisikan informasi key dari base64(header) dan base64(payload) yang kemudian ditambahkan secret key untuk menjaga keamanan. Secret key ini harus disimpan disemua service untuk langsung bisa memverifikasi JSON Web Token.
Contoh
Diawal kita login, nantinya login akan tetap ke session service. Kemudian session service akan membuat JSON Web Token yang akan disimpan di cookies. Saat bowser mengakses service lainnya, cookies nantinya akan dikirim ke setiap service. Jadi disetiap service aka nada JSON Web Token. Dengan JSON Web Token kita tidak perlu lagi memanggil terlebih dahulu database session service untuk mencari informasi.
Kekurangan dari JSON Web Token sendiri tidak banyak, masih lebih banyak keuntungannya. Jadi kelemahannya ada pada sisi proses karena algoritmanya. Untuk mengamankan informasi yang kita masukkan, kita butuh algoritma untuk hexing yang bisa mengamankan data. Semakin susah algoritmanya maka ketika melakukan hexing, proses CPU akan berat.
Cara verifikasi JSON Web Token
- Pertama kita ambil data (cookies)
- Kemudian verifikasi dengan secret key yang sudah di tanam di setiap service.
- Jika valid, kitab isa langsung dapatkan data yang dibutuhkan.
Note: Jika verifikasi tidak valid karena user yang sengaja mengganti data, kemudian data signature sendiri. Kita harus langsung tolak request atau permintaannya.
Baiklah sekian dulu untuk pembahasan kita kali ini. Semoga pembahasan kali ini bisa membantu provers semua. Sampai jumpa di pembahasan lainnya.
0 Comments