Tuesday, 22 October 2019

Pengenalan dan Implementasi JWT di Node Js

cara menggunakan json web token di node js - Ketika menggunakan API dalam bertransaksi data, yang perlu diperhatikan secara detil adalah keamanannya. Jalur pertukaran data antara aplikasi sangat sensitif dan rentan terhadap serangan hacking.

Baca Juga: Cara Mengamankan HTTP Request API di Node JS

Salah satu cara untuk mengamankan API adalah dengan mengenkripsi atau mengautentikasikan nya sehingga hanya bisa diakses oleh pengguna dengan syarat tertentu. Pada artikel kali ini, saya akan menjelaskan tentang cara mengamankan API di server web. Tentunya bermacam-macam, tapi sesuai judul, saya akan mengkhususkan untuk web berbasis node js dengan api bertipe json. Secara keseluruhan, sistem untuk mengautentikasikan API terbilang sama saja dengan artikel ini. Yang beda adalah di penerapan bahasa pemrogramannya.

Tutorial JWT Bahasa Indonesia
LOGO JWT

Json Web Token (JWT)
JWT adalah cara autentikasi terbaik yang sudah diterapkan di jutaan web di seluruh dunia. JWT akan menampilkan data json yang diinginkan dengan melakukan verifikasi token sebelumnya. Jadi, setiap me-load halaman api, halaman akan meminta token yang ada di header request. Kemudian token dicek, jika jwt menghasilkan nilai true barulah halaman ditampilkan.

Contoh token JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJVadQssw5c

JWT memiliki 3 data utama. Yakni:

1. Header
yang berisi jenis algoritma atau tipe token yang ingin digunakan

2. Payload
yaitu data yang disisipkan. Nantinya data ini sebagai response yang dikeluarkan jika verifikasi token berhasil

3. Verify Signature
yaitu kode verifikasi untuk data JWT yang diterima

Contoh Implementasi JWT di Node JS
Definietly, saya akan mencontohkan cara menggunakan json web token di node js dengan framework express js. Berikut contohnya

Install package Json Web Token

npm i jsonwebtoken
const jwt = require('jsonwebtoken')

Membuat token jwt

Untuk membuat token jwt, kita menggunakan function sign() dari jwt.

var token = jwt.sign({ name: 'Budi Susanto' }, 'r4HaS1a', {
   expiresIn: 86400 // token kadaluwarsa selama 24 jam
})
// hasil:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InRlZ2FyIiwiaWF0IjoxNTcxNzM3NzkxLCJleHAiOjE1NzE4MjQxOTF9.wgzBBXZmtsx4ONJSgCNJet60zQPPOJ8DhzKLT3dPJvM

Mengautentikasi halaman sebelum menampilkan API JSON dengan JWT

Misal, halaman meminta API dengan mengirim request POST.

app.post('/post', (req,res)=>{
  res.setHeader('sebuah-header-token', token) // Set header dari data token yang sudah di-sign()

  // ... Data Post Request  ...
})

Untuk verifikasi token di halaman apinya, berikut ini contoh script beserta penjelasannya.
v
var token = req.header('sebuah-header-token') // Header yang dibuat untuk mengirim token

jwt.verify(token, 'r4HaS1a', function(err, decoded) {
    if (err) return res.status(500).send({ auth: false, message: 'Gagal autentikasi token.' });
    else res.status(200).send(decoded);
})

Oke, itulah cara autentikasi API dengan token menggunakan JWT. Jika masih ada bagian yang kurang jelas, silahkan tanya di kolom komentar:) Semoga artikel ini bermanfaat! Terima kasih!

2 komentar:

  1. bang, parameter 'r4HaS1a' itu apa ya? wajib kah?

    ReplyDelete
    Replies
    1. itu adalah tipe token unik yang kita buat sendiri. gunanya untuk additional randomization dari token yang sudah dibuat jwt

      Delete

Hai, Mohon Komentar Yang Relevan Dan Tidak OOT!