Inhalt

    Serverantwort 401 Unauthorized

    HTTP-Statuscode 401 (Unauthorized)

    Der HTTP-Statuscode 401 (Unauthorized) zeigt an, dass eine Anfrage nicht verarbeitet wurde, da keine gültige Authentifizierung für die angeforderte Ressource vorliegt. Dieser Statuscode tritt häufig in der Webentwicklung auf und kann insbesondere bei der Arbeit mit APIs zu Missverständnissen führen. In diesem Artikel werden die Ursachen für den Status 401, praktische Beispiele für dessen Auftreten sowie Lösungsansätze in verschiedenen Programmiersprachen behandelt.

    401 - Unauthorized

    Ursachen für den Status 401

    • Fehlende Authentifizierungsdaten
    • Ungültige Anmeldeinformationen
    • Ablauf von Zugangstoken
    • Falsches Format der Authentifizierungsheader

    Praktische Beispiele

    1. Beispiel 1: Zugriff auf eine geschützte Ressource

      Beschreibung: Ein Benutzer versucht, auf eine API zuzugreifen, die eine Authentifizierung erfordert, ohne Anmeldeinformationen bereitzustellen.

      Erwartetes Verhalten: Der Server gibt den Status 401 zurück.

    2. Beispiel 2: Ungültige Anmeldeinformationen

      Beschreibung: Ein Benutzer sendet eine Anfrage mit falschem Benutzernamen und Passwort.

      Erwartetes Verhalten: Der Server gibt den Status 401 mit einer Nachricht über fehlgeschlagene Authentifizierung zurück.

    3. Beispiel 3: Verwendung eines abgelaufenen Tokens

      Beschreibung: Ein Benutzer versucht, ein Token zu verwenden, das abgelaufen ist.

      Erwartetes Verhalten: Der Server gibt den Status 401 mit der Aufforderung zurück, das Token zu aktualisieren.

    Lösungsansätze für den Status 401 in verschiedenen Programmiersprachen

    JavaScript (Node.js)

    Die Authentifizierung kann mithilfe der Bibliothek jsonwebtoken verarbeitet werden.

    
    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)

    Die Bibliothek Flask kann verwendet werden, um Authentifizierungsdaten zu überprüfen.

    
    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

    Die Authentifizierung kann über die Header verarbeitet werden.

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

    Tabelle der häufigsten Fehlerursachen und deren Lösungen

    Ursache Lösung
    Fehlende Authentifizierungsdaten Stellen Sie sicher, dass die Anmeldeinformationen in der Anfrage enthalten sind.
    Ungültige Anmeldeinformationen Überprüfen Sie Benutzername und Passwort auf Richtigkeit.
    Ablauf von Zugangstoken Aktualisieren Sie das Token vor der Verwendung.
    Falsches Format der Authentifizierungsheader Stellen Sie sicher, dass die Header im richtigen Format gesendet werden.

    In diesem Artikel haben wir den HTTP-Statuscode 401 (Unauthorized) und seine Ursachen sowie praktische Beispiele und Lösungen in verschiedenen Programmiersprachen untersucht. Ein tiefes Verständnis der Authentifizierung hilft dabei, häufige Fehler zu vermeiden und den Zugriff auf geschützte Ressourcen erfolgreich zu gestalten.

    Zusätzliche Codes

    CodeBeschreibung
    401.1Anmeldung fehlgeschlagen - Der Anmeldeversuch ist aufgrund eines falschen Benutzernamens oder Passworts fehlgeschlagen.
    401.2Anmeldung aufgrund der Serverkonfiguration fehlgeschlagen - Es liegt ein Problem mit der Authentifizierungskonfiguration auf dem Server vor.
    401.3Aufgrund von ACL auf Ressource nicht autorisiert - Zugriff aufgrund von NTFS-Dateisystemberechtigungen verweigert.
    401.4Autorisierung durch Filter fehlgeschlagen - Ein ISAPI-Filter hat die Anfrage aufgrund von Autorisierungsproblemen blockiert.
    401.5Autorisierung durch ISAPI/CGI-Anwendung fehlgeschlagen - Die ISAPI- oder CGI-Anwendung hat die Anfrage aufgrund von Autorisierungsproblemen blockiert.
    401.501Zugriff verweigert: Limit für gleichzeitige Anfragerate erreicht - Zu viele gleichzeitige Anfragen von derselben Client-IP.
    401.502Zugriff verweigert: Limit für maximale Anfragerate erreicht - Die Client-IP hat die maximale Anzahl von Anfragen in einer angegebenen Zeit überschritten.
    401.503Zugriff verweigert: IP-Adresse verweigert - Die Client-IP-Adresse steht auf der Sperrliste.
    401.504Zugriff verweigert: Hostname verweigert - Der Hostname des Clients steht auf der Verweigerungsliste.