Isi

    Respons server 401 Unauthorized

    Kode Status HTTP 401 (Unauthorized)

    Kode status HTTP 401 menunjukkan bahwa permintaan tidak dapat diterapkan karena tidak adanya autentikasi yang valid untuk sumber daya yang ditargetkan. Kode ini sering muncul dalam pengembangan web dan dapat menyebabkan kebingungan di kalangan pengembang, terutama saat bekerja dengan API. Dalam artikel ini, kita akan membahas penyebab umum munculnya kode status ini, serta memberikan contoh praktis dan cara memperbaikinya dalam berbagai bahasa pemrograman.

    401 - Unauthorized

    Penyebab Munculnya Status 401

    • Ketiadaan data autentikasi
    • Data kredensial yang salah
    • Token akses yang sudah kedaluwarsa
    • Format header autentikasi yang tidak tepat

    Contoh Praktis

    1. Contoh 1: Kesalahan saat mengakses sumber daya yang dilindungi

      Situasi: Pengguna mencoba mengakses API yang memerlukan autentikasi tetapi tidak memberikan kredensial.

      Perilaku yang Diharapkan: Server mengembalikan status 401.

    2. Contoh 2: Kredensial yang salah

      Situasi: Pengguna mengirimkan permintaan dengan login dan password yang salah.

      Perilaku yang Diharapkan: Server mengembalikan status 401 dengan pesan kegagalan autentikasi.

    3. Contoh 3: Penggunaan token yang sudah kadaluarsa

      Situasi: Pengguna mencoba menggunakan token yang telah kedaluwarsa.

      Perilaku yang Diharapkan: Server mengembalikan status 401 dengan permintaan untuk memperbarui token.

    Cara Memperbaiki Kesalahan 401 dalam Berbagai Bahasa Pemrograman

    1. JavaScript (Node.js)

    Dalam Node.js, kita dapat menggunakan pustaka jsonwebtoken untuk menangani autentikasi. Berikut adalah contoh kode yang memeriksa token dan mengembalikan status 401 jika token tidak ada atau tidak valid:

    const jwt = require('jsonwebtoken');
    
    app.get('/protected', (req, res) => {
        const token = req.headers['authorization'];
        if (!token) {
            return res.status(401).send('Unauthorized');
        }
        jwt.verify(token, 'secret_key', (err, user) => {
            if (err) {
                return res.status(401).send('Unauthorized');
            }
            res.send('Access granted');
        });
    });

    2. Python (Flask)

    Kita dapat menggunakan pustaka Flask untuk memeriksa data autentikasi. Contoh kode berikut mengembalikan status 401 jika pengguna tidak terautentikasi:

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/protected')
    def protected():
        auth = request.authorization
        if not auth or not (auth.username == 'user' and auth.password == 'pass'):
            return jsonify({'message': 'Unauthorized'}), 401
        return jsonify({'message': 'Access granted'})

    3. PHP

    Dalam PHP, kita dapat memeriksa header untuk menangani autentikasi. Berikut adalah contoh kode yang memeriksa header dan mengembalikan status 401 jika autentikasi tidak ada:

    <?php
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('HTTP/1.0 401 Unauthorized');
        echo 'Unauthorized';
        exit;
    } else {
        if ($_SERVER['PHP_AUTH_USER'] !== 'user' || $_SERVER['PHP_AUTH_PW'] !== 'pass') {
            header('HTTP/1.0 401 Unauthorized');
            echo 'Unauthorized';
            exit;
        }
        echo 'Access granted';
    }
    ?>

    Tabel Ringkasan Penyebab dan Penanganan Kode Status 401

    Penyebab Solusi
    Ketiadaan data autentikasi Pastikan untuk menyertakan kredensial dalam permintaan.
    Data kredensial yang salah Periksa dan verifikasi kredensial yang digunakan.
    Token akses yang sudah kedaluwarsa Perbarui token akses sebelum mengirim permintaan.
    Format header autentikasi yang tidak tepat Pastikan format header sesuai dengan standar yang ditetapkan.

    Kode Tambahan

    KodeDeskripsi
    401.1Logon gagal - Upaya logon gagal karena nama pengguna atau kata sandi salah.
    401.2Logon gagal karena konfigurasi server - Ada masalah dengan konfigurasi autentikasi di server.
    401.3Tidak sah karena ACL pada sumber daya - Akses ditolak karena izin sistem berkas NTFS.
    401.4Otorisasi gagal oleh filter - Filter ISAPI memblokir permintaan karena masalah otorisasi.
    401.5Otorisasi gagal oleh aplikasi ISAPI/CGI - Aplikasi ISAPI atau CGI memblokir permintaan karena masalah otorisasi.
    401.501Akses ditolak: batas laju permintaan serentak tercapai - Terlalu banyak permintaan serentak dari IP klien yang sama.
    401.502Akses ditolak: batas laju permintaan maksimum tercapai - IP klien melampaui jumlah maksimum permintaan dalam waktu yang ditentukan.
    401.503Akses ditolak: Alamat IP ditolak - Alamat IP klien ada dalam daftar penolakan.
    401.504Akses ditolak: nama host ditolak - Nama host klien ada dalam daftar penolakan.