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.
Ursachen für den Status 401
- Fehlende Authentifizierungsdaten
- Ungültige Anmeldeinformationen
- Ablauf von Zugangstoken
- Falsches Format der Authentifizierungsheader
Praktische Beispiele
-
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.
-
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.
-
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
Code | Beschreibung |
---|---|
401.1 | Anmeldung fehlgeschlagen - Der Anmeldeversuch ist aufgrund eines falschen Benutzernamens oder Passworts fehlgeschlagen. |
401.2 | Anmeldung aufgrund der Serverkonfiguration fehlgeschlagen - Es liegt ein Problem mit der Authentifizierungskonfiguration auf dem Server vor. |
401.3 | Aufgrund von ACL auf Ressource nicht autorisiert - Zugriff aufgrund von NTFS-Dateisystemberechtigungen verweigert. |
401.4 | Autorisierung durch Filter fehlgeschlagen - Ein ISAPI-Filter hat die Anfrage aufgrund von Autorisierungsproblemen blockiert. |
401.5 | Autorisierung durch ISAPI/CGI-Anwendung fehlgeschlagen - Die ISAPI- oder CGI-Anwendung hat die Anfrage aufgrund von Autorisierungsproblemen blockiert. |
401.501 | Zugriff verweigert: Limit für gleichzeitige Anfragerate erreicht - Zu viele gleichzeitige Anfragen von derselben Client-IP. |
401.502 | Zugriff verweigert: Limit für maximale Anfragerate erreicht - Die Client-IP hat die maximale Anzahl von Anfragen in einer angegebenen Zeit überschritten. |
401.503 | Zugriff verweigert: IP-Adresse verweigert - Die Client-IP-Adresse steht auf der Sperrliste. |
401.504 | Zugriff verweigert: Hostname verweigert - Der Hostname des Clients steht auf der Verweigerungsliste. |