401 Unauthorized

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 Unauthorized

So sendest du ihn

Node.js / Expressres.status(401).end()
Python / Flaskreturn '', 401
nginxreturn 401;

So prüfst du ihn

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP-Statuscodes öffnen