401 vs 403: der richtige Status für eine abgelehnte Anfrage

401 vs 403

401 vs 403: Unauthorized oder Forbidden, was du zurückgibst | We.Inc

401 heißt nicht authentifiziert, 403 heißt authentifiziert, aber nicht erlaubt. Beantworte vier Fragen zu einer Anfrage und erhalte den richtigen Status mit Headern und Code.

Gib 401 Unauthorized zurück, wenn die Anfrage keine gültigen Zugangsdaten hat: kein Token, eine abgelaufene Session, eine ungültige Signatur. Ein Login könnte das beheben, und die Antwort muss einen WWW-Authenticate-Header enthalten. Gib 403 Forbidden zurück, wenn du weißt, wer der Aufrufer ist, und er das trotzdem nicht darf. Ein erneutes Anmelden ändert dann nichts.

Unauthorized und Forbidden im Vergleich

Beantworte vier Fragen zu der Anfrage, die dein Server ablehnt. Die Auswahl liefert den Status, den du senden solltest, den passenden Header und eine einzeilige Begründung für einen Code-Kommentar. Sie deckt auch den Fall ab, in dem du lieber nicht zugeben willst, dass die Ressource existiert.

Häufige Fragen

Was ist der Hauptunterschied zwischen 401 und 403?

401 sagt, dass der Server nicht weiß, wer du bist, oder den Nachweis, den du geschickt hast, nicht akzeptiert hat. 403 sagt, dass er weiß, wer du bist, und die Antwort trotzdem nein lautet.

Muss eine 401-Antwort den WWW-Authenticate-Header enthalten?

Ja. Laut RFC 9110 muss ein Server, der eine 401-Antwort erzeugt, mindestens ein WWW-Authenticate-Headerfeld mit einer Challenge senden, etwa Bearer bei Token-APIs.

Bekommt ein abgelaufenes Token 401 oder 403?

401. Die Zugangsdaten sind nicht mehr gültig, und neue würden das Problem lösen. Eine Bearer-Challenge kann das mit error="invalid_token" mitteilen.

Kann ich 404 statt 403 zurückgeben?

Ja. Die Spezifikation erlaubt einem Server, 404 statt 403 zu senden, um zu verbergen, ob die Ressource existiert. Das ist eine gängige Wahl für IDs, die anderen Nutzern gehören.

Bedeutet ein 403, dass meine IP-Adresse gesperrt ist?

Das kann sein. Server senden 403 bei jeder Ablehnung, die sie für diese Anfrage als endgültig betrachten: IP-Regeln, fehlende Dateirechte, eine Firewall-Regel oder eine fehlgeschlagene Rollenprüfung. Der Antworttext oder das Serverlog sagt meist, was davon zutrifft.

Zwei verschiedene Fragen

Was die Spezifikation ergänzt

Die Prüfung im Code

Express-Middleware: erst 401, dann 403

verifyToken steht für deine eigene Session- oder JWT-Prüfung. Die Reihenfolge ist wichtig: erst authentifizieren, dann autorisieren.

Frontend: auf beide unterschiedlich reagieren

Ein Codepfad schickt den Nutzer zur Anmeldung, der andere erklärt die Ablehnung.

Welchen Status sollte ich zurückgeben?

Ja

Nein

Hatte die Anfrage Zugangsdaten dabei (Session-Cookie, Token, Authorization-Header)?

Waren diese Zugangsdaten gültig und nicht abgelaufen?

Darf dieser Aufrufer diese Aktion auf dieser Ressource ausführen?

Sollen Aufrufer ohne Zugriff nicht erfahren, dass die Ressource existiert?

Sende das

Niemand ist angemeldet. Fordere mit einer Challenge Zugangsdaten an.

Zugangsdaten kamen an, wurden aber abgelehnt. Neue würden das Problem lösen.

Der Aufrufer ist bekannt, hat aber keine Berechtigung. Erneutes Anmelden hilft nicht.

Dem Aufrufer fehlt die Berechtigung, und du willst lieber nicht verraten, dass die Ressource existiert.

Authentifiziert und berechtigt. Bearbeite die Anfrage.

Nicht gefragt, weil eine frühere Antwort den Status bereits festgelegt hat.

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap