Membuat Security Access Pada API Dengan JWT (Json Web Token) di NodeJs

Omjebs > Tech > Membuat Security Access Pada API Dengan JWT (Json Web Token) di NodeJs
display coding programming development

Membuat Security Access Pada API Dengan JWT (Json Web Token) di NodeJs

Setelah kita belajar dasar cara membuat API sederhana dengan NodeJs. Kali ini kita akan membuat security akses api dengan NodeJs dengan JWT sebagai securitynya.

JWT(Json Web Token) adalah authentikasi REST API di mana hanya orang yang memiliki token saja yang boleh menggunakannya. Berhubung REST ini adalah stateless, artinya tidak ada state di dalamnya. Jadi tidak ada penggunaan session.

Karena sifatnya, klien hanya meminta ke server dan server akan memberikan responsenya, sehingga diperlukan proses autentikasi menggunakan JWT.

Logicnya untuk membuat proses login adalah kita perlu inset data user seperti username dan password, dan untuk login membandingkan data yang diinput dengan data yang di database. Jika benar system akan return JWT sebagai authentikasi mengakses service yang didalam aplikasi tersebut.

1. Tambahkan library dependency untuk JWT nodeJs yaitu “jsonwebtoken” di package.json

{
  "name": "nodejs_api",
  "version": "1.0.0",
  "description": "belajar buat API dengan NodeJs",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "latest",
    "request": "latest",
    "ejs": "latest",
    "mysql": "latest",
    "body-parser": "latest",
    "jsonwebtoken": "latest"
  }

Untuk mengakses API ada saatnya membuat authentikasi untuk siapa yang bisa akses API tersebut. sehingga memerlukan midleware untuk mengakses API tersebut.

app.use(‘/api/products’,¬†auth.isAuth,¬†controller.product)

Contoh diatas adalah mengakses /api/product, namun harus terauthentikasi dulu baru bisa menjalankan controller.product. Untuk code middlewarenya adalah

const jwt = require('jsonwebtoken');

module.exports = {
  isAuth: (req,res,next) => {
    try {
    
      const token = req.headers['token'];
      console.log(token);
      var decoded = jwt.verify(token, process.env.SECRET);
      req.user = decoded;
      next();
    } catch(err) {
        res.status(401).json({
        message: 'Token is Invalid',
        error:err
      });
    }
  }
};

Secara sederhana hanya melakukan verify atas token yang dikirimkan di header untuk mengakses API tertentu.

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x