Autentikasi Node.js Express: Konsep, Metode & Contoh

Autentikasi penting untuk keamanan aplikasi web. Express mempermudah implementasi autentikasi di Node.js.

Ardianto Nugroho

Ardianto Nugroho

15 April 2025

Autentikasi Node.js Express: Konsep, Metode & Contoh

Autentikasi adalah aspek fundamental dalam mengamankan aplikasi web, memastikan pengguna hanya dapat mengakses sumber daya dan data yang mereka otorisasi. Dalam ekosistem Node.js, Express adalah kerangka kerja populer yang menyederhanakan implementasi autentikasi. Blog ini akan membahas konsep autentikasi utama, metode umum yang digunakan dalam aplikasi Node.js dan Express, dan memberikan contoh praktis untuk membantu Anda memulai.

Pengantar Autentikasi Node.js Express

Autentikasi Node.js Express mengacu pada metode dan praktik yang digunakan untuk memverifikasi identitas pengguna yang mengakses aplikasi Node.js yang dibangun dengan kerangka kerja Express. Autentikasi memastikan bahwa hanya pengguna yang berwenang yang dapat mengakses sumber daya tertentu, memberikan keamanan dan melindungi data sensitif.

💡
Apidog bukan hanya platform pengembangan dan pengujian API yang kuat; ia juga menyediakan dukungan ekstensif untuk menangani otorisasi. Kemampuan ini sangat penting untuk memastikan bahwa API aman dan hanya dapat diakses oleh pengguna yang berwenang.
button

Autentikasi vs. Otorisasi

Autentikasi Stateless vs. Stateful

Metode Autentikasi Node.js Express yang Umum

1. Autentikasi Dasar

2. Autentikasi Berbasis Token (JWT)

3. Autentikasi Berbasis Sesi

4. OAuth2

5. Login Sosial

6. Autentikasi Multi-Faktor (MFA)

7. Autentikasi Kunci API

8. Autentikasi LDAP

9. Autentikasi SAML

Bagaimana Cara Memilih Metode Autentikasi Node.js Express yang Tepat?

Memilih metode autentikasi yang tepat untuk aplikasi Node.js Express Anda bergantung pada beberapa faktor, termasuk persyaratan keamanan, pengalaman pengguna, dan kasus penggunaan spesifik aplikasi Anda. Berikut adalah panduan tentang kapan menggunakan setiap metode autentikasi:

1. Autentikasi Dasar

Kapan Menggunakan:

Pro:

Kontra:

2. Autentikasi Berbasis Token (JWT)

Kapan Menggunakan:

Pro:

Kontra:

3. Autentikasi Berbasis Sesi

Kapan Menggunakan:

Pro:

Kontra:

4. OAuth2

Kapan Menggunakan:

Pro:

Kontra:

5. Login Sosial

Kapan Menggunakan:

Pro:

Kontra:

6. Autentikasi Multi-Faktor (MFA)

Kapan Menggunakan:

Pro:

Kontra:

7. Autentikasi Kunci API

Kapan Menggunakan:

Pro:

Kontra:

8. Autentikasi LDAP

Kapan Menggunakan:

Pro:

Kontra:

9. Autentikasi SAML

Kapan Menggunakan:

Pro:

Kontra:

Ringkasan Singkat Memilih Metode Autentikasi

Memilih metode autentikasi yang tepat untuk aplikasi Node.js Express Anda melibatkan pemahaman tentang opsi yang berbeda yang tersedia dan mengevaluasinya terhadap persyaratan spesifik aplikasi Anda.

Autentikasi Dasar: Cepat dan sederhana untuk aplikasi non-kritis.

Autentikasi Berbasis Token (JWT): Ideal untuk SPA, aplikasi seluler, dan microservices.

Autentikasi Berbasis Sesi: Cocok untuk aplikasi web tradisional.

OAuth2: Terbaik untuk integrasi pihak ketiga dan akses yang didelegasikan.

Login Sosial: Bagus untuk aplikasi yang menghadap konsumen untuk meningkatkan pengalaman pengguna.

Autentikasi Multi-Faktor (MFA): Penting untuk aplikasi dengan keamanan tinggi.

Autentikasi Kunci API: Berguna untuk komunikasi layanan-ke-layanan dan API publik.

Autentikasi LDAP: Cocok untuk aplikasi perusahaan dengan manajemen pengguna terpusat.

Autentikasi SAML: Digunakan untuk SSO perusahaan dan sistem identitas gabungan.

Memilih metode yang tepat bergantung pada kebutuhan spesifik aplikasi Anda, persyaratan keamanan, dan pertimbangan pengalaman pengguna.

Contoh Autentikasi Node.js Express

Autentikasi adalah bagian penting dari setiap aplikasi web, memastikan bahwa pengguna dapat mengakses sumber daya dengan aman. Mari kita jelajahi berbagai contoh tentang cara mengimplementasikan autentikasi dalam aplikasi Node.js Express. Kita akan membahas beberapa metode yang paling umum: JWT (JSON Web Tokens), autentikasi berbasis sesi, OAuth2, dan kunci API.

1. Autentikasi JWT (JSON Web Tokens)

JWT adalah metode autentikasi Stateless yang memungkinkan Anda untuk mengirimkan informasi dengan aman antar pihak sebagai objek JSON. Informasi ini dapat diverifikasi dan dipercaya karena ditandatangani secara digital.

Langkah-Langkah Implementasi:

Langkah 1: Siapkan Proyek Anda

Pertama, buat proyek baru dan instal dependensi yang diperlukan:

mkdir jwt-auth-example
cd jwt-auth-example
npm init -y
npm install express jsonwebtoken body-parser bcryptjs

Langkah 2: Buat Server Express

Buat file app.js dan siapkan server Express dasar:

const express = require('express');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
const bcrypt = require('bcryptjs');

const app = express();
app.use(bodyParser.json());

const SECRET_KEY = 'your_jwt_secret';

// Mock User Data
const users = [{ id: 1, username: 'user1', password: bcrypt.hashSync('password1', 8) }];

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username);
  if (user && bcrypt.compareSync(password, user.password)) {
    const token = jwt.sign({ id: user.id, username: user.username }, SECRET_KEY, { expiresIn: '1h' });
    res.json({ token });
  } else {
    res.status(401).send('Invalid credentials');
  }
});

const authenticateJWT = (req, res, next) => {
  const token = req.headers.authorization;
  if (token) {
    jwt.verify(token, SECRET_KEY, (err, user) => {
      if (err) {
        return res.sendStatus(403);
      }
      req.user = user;
      next();
    });
  } else {
    res.sendStatus(401);
  }
};

app.get('/protected', authenticateJWT, (req, res) => {
  res.send(`Hello ${req.user.username}, you have accessed a protected route!`);
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

2. Autentikasi Berbasis Sesi

Autentikasi berbasis sesi bergantung pada penyimpanan data sesi di sisi server. Metode ini bersifat stateful dan umumnya digunakan dalam aplikasi web tradisional.

Langkah-Langkah Implementasi:

Langkah 1: Siapkan Proyek Anda

Buat proyek baru dan instal dependensi yang diperlukan:

mkdir session-auth-example
cd session-auth-example
npm init -y
npm install express express-session body-parser bcryptjs

Langkah 2: Buat Server Express

Buat file app.js dan siapkan server Express dasar:

const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const bcrypt = require('bcryptjs');

const app = express();
app.use(bodyParser.json());
app.use(session({ secret: 'your_session_secret', resave: false, saveUninitialized: true }));

const users = [{ id: 1, username: 'user1', password: bcrypt.hashSync('password1', 8) }];

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username);
  if (user && bcrypt.compareSync(password, user.password)) {
    req.session.userId = user.id;
    res.send('Logged in');
  } else {
    res.status(401).send('Invalid credentials');
  }
});

const authenticateSession = (req, res, next) => {
  if (req.session.userId) {
    next();
  } else {
    res.sendStatus(401);
  }
};

app.get('/protected', authenticateSession, (req, res) => {
  const user = users.find(u => u.id === req.session.userId);
  res.send(`Hello ${user.username}, you have accessed a protected route!`);
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

3. Autentikasi OAuth2

OAuth2 adalah metode autentikasi yang lebih kompleks yang memungkinkan aplikasi pihak ketiga untuk mengakses sumber daya pengguna tanpa mengekspos kredensial pengguna. Ini umumnya digunakan untuk login sosial dan berintegrasi dengan layanan lain.

Langkah-Langkah Implementasi:

Mengimplementasikan OAuth2 biasanya melibatkan penggunaan pustaka atau kerangka kerja yang menangani alur OAuth2. Untuk kesederhanaan, kita akan menggunakan pustaka passport dengan strategi seperti passport-google-oauth20.

Langkah 1: Siapkan Proyek Anda

Buat proyek baru dan instal dependensi yang diperlukan:

mkdir oauth2-auth-example
cd oauth2-auth-example
npm init -y
npm install express passport passport-google-oauth20 express-session

Langkah 2: Buat Server Express

Buat file app.js dan siapkan server Express dasar:

const express = require('express');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const session = require('express-session');

const app = express();

app.use(session({ secret: 'your_session_secret', resave: false, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());

passport.use(new GoogleStrategy({
  clientID: 'YOUR_GOOGLE_CLIENT_ID',
  clientSecret: 'YOUR_GOOGLE_CLIENT_SECRET',
  callbackURL: 'http://localhost:3000/auth/google/callback'
}, (accessToken, refreshToken, profile, done) => {
  // In a real application, you would save the profile info to your database
  return done(null, profile);
}));

passport.serializeUser((user, done) => {
  done(null, user);
});

passport.deserializeUser((obj, done) => {
  done(null, obj);
});

app.get('/auth/google', passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login'] }));

app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/' }), (req, res) => {
  res.redirect('/protected');
});

const ensureAuthenticated = (req, res, next) => {
  if (req.isAuthenticated()) {
    return next();
  }
  res.redirect('/');
};

app.get('/protected', ensureAuthenticated, (req, res) => {
  res.send(`Hello ${req.user.displayName}, you have accessed a protected route!`);
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

4. Autentikasi Kunci API

Autentikasi kunci API sederhana dan sering digunakan untuk komunikasi server-ke-server. Ini melibatkan pengiriman kunci dengan setiap permintaan untuk memverifikasi klien.

Langkah-Langkah Implementasi

Langkah 1: Siapkan Proyek Anda

Buat proyek baru dan instal dependensi yang diperlukan:

mkdir api-key-auth-example
cd api-key-auth-example
npm init -y
npm install express

Langkah 2: Buat Server Express

Buat file app.js dan siapkan server Express dasar:

const express = require('express');
const app = express();

const API_KEY = 'your_api_key';

const authenticateApiKey = (req, res, next) => {
  const apiKey = req.headers['x-api-key'];
  if (apiKey && apiKey === API_KEY) {
    next();
  } else {
    res.sendStatus(401);
  }
};

app.get('/protected', authenticateApiKey, (req, res) => {
  res.send('Access granted to protected route');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Dari autentikasi JWT Stateless hingga autentikasi berbasis sesi tradisional dan OAuth2 untuk integrasi pihak ketiga, Anda memiliki berbagai metode untuk dipilih berdasarkan persyaratan aplikasi Anda. Memahami dan mengimplementasikan metode ini dengan benar akan membantu Anda membangun aplikasi yang aman dan dapat diskalakan.

10 Praktik Terbaik untuk Autentikasi Nodejs Express

Mengimplementasikan autentikasi dalam aplikasi Node.js Express memerlukan pertimbangan yang cermat untuk memastikan keamanan, skalabilitas, dan kemudahan penggunaan. Berikut adalah beberapa praktik terbaik yang harus diikuti saat menangani autentikasi dalam aplikasi Node.js Express Anda:

1. Gunakan Hashing Kata Sandi yang Kuat

const bcrypt = require('bcryptjs');

const hashPassword = async (password) => {
    const salt = await bcrypt.genSalt(10);
    return await bcrypt.hash(password, salt);
};

2. Amankan Token JWT

const jwt = require('jsonwebtoken');
const SECRET_KEY = process.env.SECRET_KEY;

const token = jwt.sign({ userId: user.id }, SECRET_KEY, { expiresIn: '1h' });

3. Gunakan HTTPS

4. Validasi Input

const { body, validationResult } = require('express-validator');

app.post('/register', [
    body('email').isEmail(),
    body('password').isLength({ min: 6 })
], (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(400).json({ errors: errors.array() });
    }
    // Proceed with registration
});

5. Implementasikan Pembatasan Tingkat

const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minutes
    max: 100 // limit each IP to 100 requests per windowMs
});

app.use('/login', limiter);

6. Simpan Token dengan Aman

7. Implementasikan Manajemen Sesi yang Tepat

8. Gunakan Middleware untuk Rute yang Dilindungi

const authenticateJWT = (req, res, next) => {
    const token = req.headers.authorization;

    if (!token) {
        return res.sendStatus(401);
    }

    jwt.verify(token, SECRET_KEY, (err, user) => {
        if (err) {
            return res.sendStatus(403);
        }

        req.user = user;
        next();
    });
};

app.get('/protected', authenticateJWT, (req, res) => {
    res.send('This is a protected route');
});

9. Pantau dan Catat Peristiwa Autentikasi

10. Perbarui Dependensi Secara Teratur

Memanfaatkan Apidog untuk Menguji API dengan Metode Autentikasi Nodejs Express

Apidog adalah platform pengembangan API komprehensif yang menyederhanakan seluruh proses pengembangan. Ini fitur opsi autentikasi bawaan yang kuat, memungkinkan pengembang untuk menguji titik akhir API dengan berbagai metode termasuk Kunci API, Token Bearer, JWT, Auth Dasar, Auth Digest, OAuth 1.0, OAuth 2.0, Autentikasi Hawk, NTLM, dan Akamai EdgeGrid. Ini memungkinkan pengembang API untuk memvalidasi secara menyeluruh strategi autentikasi yang diimplementasikan dalam API mereka.

auth methods for APIs

Kesimpulan

Mengimplementasikan autentikasi dalam aplikasi Node.js Express sangat penting untuk memastikan keamanan dan integritas aplikasi web Anda. Dengan memahami berbagai metode autentikasi, dari Auth Dasar dan JWT hingga OAuth2 dan LDAP, dan mengikuti praktik terbaik seperti menggunakan hashing kata sandi yang kuat, mengamankan token JWT, dan memvalidasi input, Anda dapat membuat sistem autentikasi yang kuat dan aman. Alat seperti Apidog lebih meningkatkan kemampuan Anda untuk menguji dan memvalidasi metode autentikasi ini, memastikan mereka bekerja seperti yang diharapkan. Dengan hati-hati memilih dan mengimplementasikan strategi autentikasi yang tepat untuk kebutuhan aplikasi Anda, Anda dapat memberikan pengalaman pengguna yang aman dan lancar, melindungi data dan sumber daya sensitif secara efektif.

Explore more

Cara Menggunakan OpenAI Sora Secara Gratis: Panduan Lengkap untuk Microsoft Bing Video Creator

Cara Menggunakan OpenAI Sora Secara Gratis: Panduan Lengkap untuk Microsoft Bing Video Creator

💡Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah? Ingin platform Terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum? Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!tombol Model teks-ke-video mutakhir OpenAI, Sora, telah mengubah pembuatan konten yang dihasilkan AI dengan kemampuannya menciptakan video yang sangat realistis dari instruksi teks sederhana. Namun, biaya

3 June 2025

Apa itu Ollama? Cara Menginstal Ollama?

Apa itu Ollama? Cara Menginstal Ollama?

💡Ingin alat Pengujian API yang hebat yang menghasilkan Dokumentasi API yang indah? Ingin platform terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum? Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau! button Lanskap kecerdasan buatan (AI) terus berkembang dengan kecepatan tinggi, dan Model Bahasa Besar (LLM) menjadi semakin kuat dan mudah diakses. Meskipun banyak orang berinteraksi dengan model

28 April 2025

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?

Ingin Swagger UI dalam Bahasa Indonesia? Artikel ini menjelaskan mengapa tidak ada unduhan resmi gratis dan cara mengaktifkan terjemahan. Jelajahi fitur Swagger dan lihat mengapa Apidog adalah alternatif Swagger superior untuk desain, pengujian, dan dokumentasi API yang terintegrasi.

23 April 2025

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.