Inhoud

    Serverrespons 401 Unauthorized

    HTTP Statuscode 401 (Unauthorized)

    De HTTP statuscode 401 (Unauthorized) geeft aan dat een verzoek niet is uitgevoerd omdat er geen geldige authenticatie voor de doelbron aanwezig is. Dit statuscode komt vaak voor in webontwikkeling en kan verwarring veroorzaken bij ontwikkelaars, vooral bij het werken met API's. In dit artikel zullen we de praktische voorbeelden onderzoeken die leiden tot deze statuscode, evenals manieren om deze te verhelpen in verschillende programmeertalen.

    401 - Unauthorized

    Oorzaken van Statuscode 401

    • Ontbrekende authenticatiegegevens
    • Ongeldige gebruikersgegevens
    • Verlopen toegangstokens
    • Ongeldig formaat van authenticatieheaders

    Praktische Voorbeelden

    1. Voorbeeld 1: Toegang tot een Beveiligde Bron

      Situatie: Een gebruiker probeert toegang te krijgen tot een API die authenticatie vereist, maar biedt geen enkele gebruikersgegevens aan.

      Verwacht gedrag: De server retourneert status 401.

    2. Voorbeeld 2: Ongeldige Gebruikersgegevens

      Situatie: Een gebruiker verzendt een verzoek met een onjuiste gebruikersnaam en wachtwoord.

      Verwacht gedrag: De server retourneert status 401 met een bericht over mislukte authenticatie.

    3. Voorbeeld 3: Gebruik van een Verlopen Token

      Situatie: Een gebruiker probeert een token te gebruiken dat is verlopen.

      Verwacht gedrag: De server retourneert status 401 met een verzoek om het token bij te werken.

    Oplossingen voor Fout 401 in Verschillende Programmeertalen

    JavaScript (Node.js)

    Authenticatie verwerken met behulp van de bibliotheek jsonwebtoken.

    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');
        });
    });

    Python (Flask)

    Gebruik van de Flask bibliotheek voor het controleren van authenticatiegegevens.

    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'})

    PHP

    Authenticatie verwerken met behulp van headers.

    <?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';
    }
    ?>
    Programmeertaal Authenticatiemethode Statuscode 401
    JavaScript jsonwebtoken Verwerkt bij ontbrekende of ongeldige tokens
    Python Flask Verwerkt bij ongeldige gebruikersgegevens
    PHP Headers Verwerkt bij ontbrekende authenticatie

    In dit artikel hebben we de betekenis van de statuscode 401 (Unauthorized) besproken, de oorzaken en voorbeelden ervan, evenals de manieren om deze te verwerken en op te lossen in verschillende programmeertalen.

    Aanvullende codes

    CodeBeschrijving
    401.1Aanmelden mislukt - De aanmeldingspoging is mislukt vanwege een onjuiste gebruikersnaam of wachtwoord.
    401.2Aanmelden mislukt vanwege serverconfiguratie - Er is een probleem met de authenticatieconfiguratie op de server.
    401.3Niet geautoriseerd vanwege ACL op resource - Toegang is geweigerd vanwege machtigingen van het NTFS-bestandssysteem.
    401.4Autorisatie mislukt door filter - Een ISAPI-filter heeft het verzoek geblokkeerd vanwege autorisatieproblemen.
    401.5Autorisatie mislukt door ISAPI/CGI-toepassing - De ISAPI- of CGI-toepassing heeft het verzoek geblokkeerd vanwege autorisatieproblemen.
    401.501Toegang geweigerd: limiet voor gelijktijdige aanvraagsnelheid bereikt - Te veel gelijktijdige aanvragen van hetzelfde client-IP.
    401.502Toegang geweigerd: maximale limiet voor aanvraagsnelheid bereikt - Het client-IP het maximum aantal verzoeken in een bepaalde tijd overschreden.
    401.503Toegang geweigerd: IP-adres geweigerd - Het IP-adres van de client staat op de weigeringslijst.
    401.504Toegang geweigerd: hostnaam geweigerd - De hostnaam van de client staat op de weigeringslijst.