Die Authentifizierung fehlt oder ist ungültig.
Wann du ihn verwendest
Kein Token oder ein abgelaufenes. Trotz des Namens bedeutet es „nicht authentifiziert“.
Häufige Ursachen und Lösungen
Übliche Ursachen: kein Authorization-Header, ein fehlerhafter wie ein Token ohne das Präfix Bearer, ein abgelaufenes Access-Token, ein Token für eine andere Umgebung oder Audience oder eine Uhrenabweichung, durch die ein JWT abgelaufen oder noch nicht gültig wirkt. Dekodiere das JWT und prüfe exp, nbf, aud und iss. Eine korrekte 401 enthält WWW-Authenticate mit dem Schema, das der Server erwartet.
Clients sollten das Token einmal erneuern und es dann erneut versuchen, nicht in einer Schleife. Header gehen unterwegs verloren: Browser und curl entfernen Authorization bei Weiterleitungen auf einen anderen Host, und Apache mit PHP-FPM oder CGI entfernt ihn, solange CGIPassAuth On nicht gesetzt ist. Scheitert ein CORS-Preflight mit 401, verlangt dein Server Authentifizierung für OPTIONS; Preflights tragen nie Zugangsdaten, also lass sie durch. Nimm 403, wenn der Benutzer bekannt ist, ihm aber die Berechtigung fehlt.
Client-Fehler (4xx)
4xx-Codes sind Client-Fehler: Die Anfrage selbst ist fehlerhaft, nicht autorisiert oder verweist auf etwas, das es nicht gibt. Dieselbe Anfrage erneut zu senden hilft nicht.
So sieht es aus
HTTP/1.1 401 UnauthorizedSo sendest du ihn
| Node.js / Express | res.status(401).end() |
|---|---|
| Python / Flask | return '', 401 |
| nginx | return 401; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/