401 Unauthorized

Brak uwierzytelnienia lub jest ono nieprawidłowe.

Kiedy go używać

Brak tokenu lub token wygasł. Mimo nazwy oznacza „nieuwierzytelniony”.

Typowe przyczyny i rozwiązania

Typowe przyczyny: brak nagłówka Authorization, błędny nagłówek, np. token bez prefiksu Bearer, wygasły access token, token wydany dla innego środowiska lub odbiorcy (audience) albo rozjazd zegarów, przez który JWT wygląda na wygasły lub jeszcze nieważny. Zdekoduj JWT i sprawdź exp, nbf, aud i iss. Poprawna odpowiedź 401 zawiera WWW-Authenticate z nazwą schematu, którego oczekuje serwer.

Klient powinien odświeżyć token raz i ponowić żądanie, a nie wpadać w pętlę. Nagłówki gubią się po drodze: przeglądarki i curl usuwają Authorization przy przekierowaniu na inny host, a Apache z PHP-FPM lub CGI wycina go, jeśli nie ustawiono CGIPassAuth On. Jeśli preflight CORS kończy się 401, Twój serwer wymaga uwierzytelnienia dla OPTIONS; preflighty nigdy nie niosą poświadczeń, więc przepuszczaj je. Użyj 403, gdy użytkownik jest znany, ale nie ma uprawnień.

Błąd klienta (4xx)

Kody 4xx to błędy klienta: samo żądanie jest błędne, nieautoryzowane albo wskazuje na coś, czego nie ma. Ponowienie tego samego żądania nic nie da.

Jak to wygląda

HTTP/1.1 401 Unauthorized

Jak go wysłać

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

Jak go sprawdzić

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

Otwórz narzędzie Kody statusu HTTP