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 UnauthorizedJak go wysłać
| Node.js / Express | res.status(401).end() |
|---|---|
| Python / Flask | return '', 401 |
| nginx | return 401; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/