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.
Oorzaken van Statuscode 401
- Ontbrekende authenticatiegegevens
- Ongeldige gebruikersgegevens
- Verlopen toegangstokens
- Ongeldig formaat van authenticatieheaders
Praktische Voorbeelden
-
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.
-
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.
-
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
Code | Beschrijving |
---|---|
401.1 | Aanmelden mislukt - De aanmeldingspoging is mislukt vanwege een onjuiste gebruikersnaam of wachtwoord. |
401.2 | Aanmelden mislukt vanwege serverconfiguratie - Er is een probleem met de authenticatieconfiguratie op de server. |
401.3 | Niet geautoriseerd vanwege ACL op resource - Toegang is geweigerd vanwege machtigingen van het NTFS-bestandssysteem. |
401.4 | Autorisatie mislukt door filter - Een ISAPI-filter heeft het verzoek geblokkeerd vanwege autorisatieproblemen. |
401.5 | Autorisatie mislukt door ISAPI/CGI-toepassing - De ISAPI- of CGI-toepassing heeft het verzoek geblokkeerd vanwege autorisatieproblemen. |
401.501 | Toegang geweigerd: limiet voor gelijktijdige aanvraagsnelheid bereikt - Te veel gelijktijdige aanvragen van hetzelfde client-IP. |
401.502 | Toegang geweigerd: maximale limiet voor aanvraagsnelheid bereikt - Het client-IP het maximum aantal verzoeken in een bepaalde tijd overschreden. |
401.503 | Toegang geweigerd: IP-adres geweigerd - Het IP-adres van de client staat op de weigeringslijst. |
401.504 | Toegang geweigerd: hostnaam geweigerd - De hostnaam van de client staat op de weigeringslijst. |