Autentikasi Dasar Server HTTP

Paket npm memang dibutuhkan dan tidak dapat dihindarkan penggunaanya terutama untuk proyek berskala besar tetapi tetap sebagai programer wajib tahu secara mendasar cara kerja dan konsepnya.

Sebagai contoh server HTPP dasar seperti berikut

import http from "node:http"

http.createServer((req, res) => {
  res.statusCode = 200
  res.end("http ok")
}).listen(3003, () => console.log("http server ok"))

Meskipun sekarang banyak tersedia framework siap pakai seperti Express, Fastify, Nest.js yang bisa menangani autentikasi, parsing form, menangani berkas uploas dll alias paket utuh untuk membangun aplikasi klien server akan tetapi akan lebih baik jika mengetahui cara kerja dari server HTTP secara mendasar tanpa bergantung pada framework.

Konsep Autentikasi Dasar

Auntentikasi Dasar (Basic Authentication) adalah jenis autentikasi paling sederhana yang mudah dipakai dan diimplementasikan.

basic-auth-concept

Data autentikasi disematkan pada header request dan dalam perjalananya akan berbentuk seperti berikut


Basic ZXF1YW46cHJhbXVkaWE=

Username dan password akan di enkripsi memakai base64 sehingga dengan JavaScript data autentikasi tersebut akan dengan mudah di decode kembali

let auth = req.headers.authorization.split(" ")
if (auth[0] === "Basic") {
    let decode = new Buffer.from(auth[1], "base64").toString('utf-8')
    let sep = decode.indexOf(":")
    console.log(`username:${decode.substr(0, sep)}`)
    console.log(`password:${decode.substr(sep + 1)`)
}
Sebagai catatan Autentikasi Dasar tidaklah terlalu aman kecuali pada lingkungan HTTPS.

Testing

Gunakan tool testing seperti Postman untuk mengecek request dan response dari server HTTP

test api dengan postman

Autentikasi Login

Contoh sederhana dari login memakai autentikasi dasar bisa dilihat pada link Github.

Mau Komen?