🌐
Miniclass Web
  • Miniclass Web
  • 1. Pengenalan Pemrograman Web
    • Cara Kerja Website
    • Pengenalan Backend dan Frontend
    • HTTP Request dan HTTP Response
  • 2. HTML
    • Pengenalan HTML
    • Text Formatting
    • Link
    • Media
    • List
    • Table
    • Form
    • Grouping
  • 3. CSS
    • Pengenalan CSS
    • Selector CSS
    • Text Formatting
    • Background
    • Border
    • Height dan Width
    • Spacing
    • Layouting
    • Responsive Design
    • Membuat Template Web Responsive
  • 4. Javascript
    • Pengenalan JavaScript
    • Javascript for Java developer
    • Array
    • Fungsi
    • Manipulasi DOM
    • Event
    • Fetch API
    • Object JavaScript
    • UI Component Lanjutan
  • 5. Node.js
    • Pengenalan Node.js
    • Membuat Server HTTP
    • Routing
    • Import Export
    • Node Package Manager
    • Nodemon
  • 6. Express.js
    • Pengenalan Express.js
    • HTTP Method
    • Menerima Data dari URL
    • Middleware
    • Menerima Data dari Body
    • Mengunggah File
    • Menampilkan File dalam Folder
    • Menyimpan Data ke Database MySQL
  • 7. Modern Frontend Development
    • ECMAScript
    • Transpiler
    • Module Bundler
  • 8. React Fundamental
    • Pengenalan React JS
    • Props
    • Event
    • State
    • Conditional Rendering
    • Component Mapping
    • Side Effect
    • Custom Hook
  • 9. React State Management
    • Lifting State Up
    • Context
    • Reducer
  • 10. React Performance
    • Debounce
    • Throttling
    • Memoization
    • Profiling
  • 11. React Testing
    • Component Testing
    • Hook Testing
    • Mocking
    • End to End Testing
  • 12. Object Relational Mapping
    • Pengenalan Object Relational Mapping
  • 13. Document Oriented Database
    • Document Oriented Database
    • Object Document Mapping
  • 14. Web Service
    • REST
    • GraphQL
  • 15. Autentikasi
    • JSON Web Token
    • Membuat Web Service Sederhana
  • 16. Microservices
    • Microservices
    • Microservices Gateway
    • Message Queue
    • Remote Procedure Call
    • Membuat Micro Service Sederhana
  • 18. Caching
Powered by GitBook
On this page
  • 1. Penjelasan Autentikasi Token
  • 2. Penjelasan JSON Web Token
  • 3. Langkah - langkah Autentikasi dengan JSON Web Token
  • 4. Implementasi JWT Menggunakan Express
  • 4.1. Menginstall Dependency
  • 4.2. Membuat Server dan Route
  • 4.3. Mengautentikasi Client
  • 4.4. Memeriksa Apakah Token Valid
  • 4.5. Menerapkan Middleware ke Route
  • 5. Source Code

Was this helpful?

  1. 15. Autentikasi

JSON Web Token

PreviousGraphQLNextMembuat Web Service Sederhana

Last updated 4 years ago

Was this helpful?

1. Penjelasan Autentikasi Token

Autentikasi token merupakan jenis autentikasi yang sering digunakan pada webservice, cara kerjanya yaitu server menyimpan sebuah token berupa random string yang dipasangkan pada satu akun.

Setelah client melakukan login dengan akun tertentu maka server akan memberikan token dari akun tersebut yang nantinya akan disimpan oleh client

Kemudian setiap kali client mengirimkan request maka token tersebut perlu disertakan sebagai penanda bahwa client tersebut sudah terautentikasi

2. Penjelasan JSON Web Token

JSON Web Token atau disingkat JWT merupakan pengembangan dari metode autentikasi token, dimana server tidak perlu lagi menyimpan token di database

Token yang diberikan ke client bukan lagi berupa random string, namun berupa data user yang sudah login dan dienkripsi menjadi string

3. Langkah - langkah Autentikasi dengan JSON Web Token

  1. Client melakukan login

  2. Apabila username dan password benar, maka server akan memberikan data dari akun tersebut kedalam sebuah token dan memberikannya ke client

  3. Setelah client menerima token maka token tersebut harus selalu dikirim setiap kali client melakukan request ke server

  4. Server akan mengecek token, apabila token valid maka request dari client akan diterima, jika tidak valid maka request akan ditolak

4. Implementasi JWT Menggunakan Express

Disini kita akan belajar bagaimana menerapkan jwt pada web service menggunakan express

4.1. Menginstall Dependency

Untuk mengimplementasikan json web token kita membutuhkan package yang bernama jsonwebtoken

npm install express jsonwebtoken

4.2. Membuat Server dan Route

Pada tutorial ini kita hanya membutuhkan dua rute, yaitu /login untuk mengautentikasi client, dan / untuk mengirimkan data user apabila client telah melakukan login

// index.js

const express = require("express")
const app = express()

// parsing json request
app.use(express.json())

// authenticate client
app.post("/login", function(req, res) {})

// send user data when client already authenticate
app.get("/", function(req, res) {
  res.json(req.user)
})

app.listen(3000)

4.3. Mengautentikasi Client

Untuk melakukan autentikasi, pertama kita memeriksa username dan password yang dikirimkan oleh client, apabila benar maka kita akan membuat token menggunakan jwt.sign() dengan menyertakan data dari akun yang bersangkutan dan memberikan token tersebut ke client

// index.js

// import jwt
const jwt = require("jsonwebtoken")

// authenticate client
app.post("/login", function(req, res) {
  const { username, password } = req.body
  if (username === "admin" && password === "admin") {
    jwt.sign({ username: "admin" }, "secret", function(err, token) {
      res.send({ success: true, token })
    })
  } else {
    res.send({ success: false })
  }
})

4.4. Memeriksa Apakah Token Valid

Sekarang kita akan membuat middleware yang bernama verifyToken yang akan memeriksa token yang dikirimkan oleh client menggunakan jwt.verify, apabila valid maka server akan mengubah token tersebut menjadi data user dan memasukkannya sebagai properti ke objek req

// verifyToken.js

const jwt = require("jsonwebtoken")

function verifyToken(req, res, next) {
  const bearerHeader = req.headers["authorization"]
  const token = bearerHeader ? bearerHeader.split(" ")[1] : undefined
  if (token) {
    jwt.verify(token, "randomStuff", function(err, payload) {
      if (err) throw err
      req.user = payload
      next()
    })
  } else {
    res.sendStatus(403)
  }
}

module.exports = verifyToken

4.5. Menerapkan Middleware ke Route

Setelah middleware verifyToken dibuat, kita tinggal menerapkannya ke route /

// index.js

const express = require("express")
const jwt = require("jsonwebtoken")
const app = express()

// import middleware verifyToken
const verifyToken = require("./verifyToken")

app.use(express.json())

app.post("/login", (req, res) => {
  const { username, password } = req.body
  if (username === "admin" && password === "admin") {
    jwt.sign({ username: "admin" }, "randomStuff", function(err, token) {
      res.send({ success: true, token })
    })
  } else {
    res.send({ success: false })
  }
})

// implement middleware verifyToken
app.get("/", verifyToken, (req, res) => {
  res.json(req.user)
})

app.listen(3000)

5. Source Code

Berikut link menuju source code dari tutorial diatas :

https://github.com/wrideveloper/express-auth-jwt