Guys follow ig mimin Follow Instagram

Belajar Backend Part 5 - Fondasi Keamanan Backend

Autentikasi dan Otorisasi

Autentikasi dan Otorisasi

Autentikasi dan Otorisasi

Dalam pengembangan aplikasi backend, keamanan adalah salah satu aspek terpenting. Dua konsep utama yang sering digunakan untuk mengamankan aplikasi adalah autentikasi dan otorisasi. Keduanya memastikan bahwa hanya pengguna yang sah dapat mengakses data dan melakukan tindakan tertentu.

Pengertian Autentikasi

Autentikasi adalah proses untuk memverifikasi identitas pengguna. Ini dilakukan untuk memastikan bahwa pengguna adalah siapa yang mereka klaim. Biasanya melibatkan:

  • Username dan Password: Metode yang paling umum digunakan.
  • Token API: String unik yang diberikan kepada pengguna setelah login.
  • Otentikasi Dua Faktor (2FA): Lapisan tambahan keamanan, seperti kode OTP atau aplikasi autentikator.

Pengertian Otorisasi

Otorisasi adalah proses untuk menentukan hak akses pengguna terhadap sumber daya atau tindakan tertentu. Ini terjadi setelah autentikasi berhasil. Contohnya:

  • Role-Based Access Control (RBAC): Mengatur akses berdasarkan peran, seperti admin, editor, atau user biasa.
  • Policy-Based Access Control (PBAC): Hak akses yang ditentukan berdasarkan kebijakan tertentu.

Teknik Autentikasi dan Otorisasi

Berikut adalah beberapa teknik yang umum digunakan:

  • Session: Data autentikasi disimpan di server dan diidentifikasi menggunakan cookie di browser.
  • JSON Web Token (JWT): Token berbasis JSON yang dikirimkan di header HTTP untuk autentikasi.
  • OAuth: Protokol otorisasi yang memungkinkan aplikasi pihak ketiga untuk mengakses data tanpa membagikan kredensial pengguna.

Membuat Sistem Autentikasi dengan Node.js

Berikut adalah contoh sederhana implementasi autentikasi menggunakan Node.js dan JWT:


const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
app.use(express.json());

// Secret key
const SECRET_KEY = 'your_secret_key';

// Login route
app.post('/login', (req, res) => {
    const { username, password } = req.body;
    // Verifikasi username dan password (contoh hardcoded)
    if (username === 'admin' && password === '1234') {
        const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });
        return res.json({ token });
    }
    res.status(401).json({ message: 'Invalid credentials' });
});

// Protected route
app.get('/dashboard', (req, res) => {
    const token = req.headers['authorization'];
    if (!token) return res.status(403).json({ message: 'No token provided' });
    try {
        const decoded = jwt.verify(token, SECRET_KEY);
        res.json({ message: `Welcome ${decoded.username}` });
    } catch (err) {
        res.status(401).json({ message: 'Invalid token' });
    }
});

app.listen(3000, () => {
    console.log('Server running on port 3000');
});

    

Best Practices

Untuk menjaga keamanan aplikasi, berikut adalah beberapa best practices:

  • Gunakan HTTPS untuk semua komunikasi.
  • Hindari menyimpan password dalam bentuk teks biasa, gunakan hashing (seperti bcrypt).
  • Implementasikan rate limiting untuk mencegah serangan brute force.
  • Gunakan token dengan masa berlaku yang terbatas.

Kesimpulan

Autentikasi dan otorisasi adalah komponen penting untuk melindungi aplikasi dan data pengguna. Dengan memahami konsep ini, Anda dapat menciptakan sistem yang lebih aman dan andal.

Posting Komentar

Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.