Frage

Was ist die richtige HTTP-Antwort für eine Webseite, die existiert, für die ein Benutzer jedoch nicht über ausreichende Berechtigungen verfügt (er ist nicht angemeldet oder gehört nicht zur richtigen Benutzergruppe)?

401 Unauthorized?
403 Forbidden?
Etwas anderes?

Was ich bisher über beide gelesen habe, ist nicht ganz klar, was den Unterschied zwischen den beiden angeht.Welche Anwendungsfälle sind für jede Antwort geeignet?

War es hilfreich?

Lösung

Eine klare Erklärung von Daniel Irvine:

Es gibt ein Problem mit 401 nicht Autorisiert, der HTTP-Statuscode für Authentifizierungsfehler.Und genau das ist es:Es dient der Authentifizierung, nicht der Autorisierung.Wenn Sie eine 401 -Antwort erhalten, sagt der Server, der Ihnen sagt: "Sie sind nicht authentifiziert - entweder überhaupt nicht authentifiziert oder falsch authentifiziert -, aber bitte erneut authentifizieren und es erneut versuchen." Um Ihnen zu helfen, wird es immer eine beinhalten WWW-Authentifizieren Header, der beschreibt, wie man sich authentifiziert.

Dies ist eine Antwort, die im Allgemeinen von Ihrem Webserver zurückgegeben wird, nicht von Ihrer Webanwendung.

Es ist auch etwas sehr Vorübergehendes;Der Server bittet Sie, es erneut zu versuchen.

Zur Autorisierung verwende ich also die 403 Verboten Antwort.Es ist dauerhaft, ist an meine Anwendungslogik gebunden und eine konkrete Reaktion als eine 401.

Wenn der Server eine 403-Antwort erhält, sagt er Ihnen: „Es tut mir leid.Ich weiß, wer Sie sind - ich glaube, wer Sie sagen, aber Sie haben einfach keine Erlaubnis, auf diese Ressource zuzugreifen.Wenn Sie den Systemadministrator gut fragen, erhalten Sie möglicherweise die Erlaubnis.Aber bitte stören Sie mich nicht wieder, bis sich Ihre Lage ändert. “

Zusammenfassend, a 401 nicht Autorisiert Die Antwort sollte zur fehlenden oder schlechten Authentifizierung verwendet werden, und a 403 Verboten Die Antwort sollte anschließend verwendet werden, wenn der Benutzer authentifiziert ist, aber nicht zur Ausführung der angeforderten Operation in der angegebenen Ressource autorisiert ist.

Ein anderer schönes Bildformat wie HTTP-Statuscodes verwendet werden sollten.

enter image description here

Andere Tipps

Sehen RFC2616:

401 nicht Autorisiert:

Wenn die Anfrage bereits Autorisierungsanmeldeinformationen enthielt, zeigt die 401-Antwort an, dass die Autorisierung für diese Anmeldeinformationen verweigert wurde.

403 Verboten:

Der Server hat die Anfrage verstanden, weigert sich jedoch, sie zu erfüllen.

Aktualisieren

Aus Ihrem Anwendungsfall geht hervor, dass der Benutzer nicht authentifiziert ist.Ich würde 401 zurückgeben.


Bearbeiten: RFC2616 ist veraltet, sehen Sie RFC7231 Und RFC7235.

Etwas, das den anderen Antworten fehlt, ist, dass verstanden werden muss, dass sich Authentifizierung und Autorisierung im Kontext von RFC 2616 NUR auf das HTTP-Authentifizierungsprotokoll von RFC 2617 bezieht.Die Authentifizierung durch Schemata außerhalb von RFC2617 wird in HTTP-Statuscodes nicht unterstützt und wird bei der Entscheidung, ob 401 oder 403 verwendet werden soll, nicht berücksichtigt.

Kurz und knapp

„Nicht autorisiert“ bedeutet, dass der Client nicht RFC2617-authentifiziert ist und der Server den Authentifizierungsprozess initiiert.„Verboten“ bedeutet entweder, dass der Client RFC2617-authentifiziert ist und keine Autorisierung hat, oder dass der Server RFC2617 für die angeforderte Ressource nicht unterstützt.

Das heißt, wenn Sie über einen eigenen Anmeldeprozess verfügen und niemals die HTTP-Authentifizierung verwenden, ist 403 immer die richtige Antwort und 401 sollte niemals verwendet werden.

Ausführlich und ausführlich

Von RFC2616

10.4.2 401 Nicht autorisiert

Die Anfrage erfordert eine Benutzerauthentifizierung.Die Antwort MUSS ein WWW-Authenticate-Header-Feld (Abschnitt 14.47) enthalten, das eine auf die angeforderte Ressource anwendbare Herausforderung enthält.Der Client KANN die Anfrage mit einem geeigneten Authorization-Header-Feld wiederholen (Abschnitt 14.8).

Und

10.4.4 403 verboten den Server die Anfrage verstanden, weigert sich jedoch, sie zu erfüllen.Eine Autorisierung wird nicht helfen und die Anfrage SOLLTE NICHT wiederholt werden.

Beachten Sie zunächst, dass sich „Authentifizierung“ und „Autorisierung“ im Kontext dieses Dokuments speziell auf die HTTP-Authentifizierungsprotokolle von RFC 2617 beziehen.Sie beziehen sich nicht auf Roll-Your-Own-Authentifizierungsprotokolle, die Sie möglicherweise mithilfe von Anmeldeseiten usw. erstellt haben.Ich verwende „Anmeldung“, um mich auf die Authentifizierung und Autorisierung durch andere Methoden als RFC2617 zu beziehen

Der wirkliche Unterschied liegt also nicht darin, was das Problem ist oder ob es überhaupt eine Lösung gibt.Der Unterschied besteht darin, was der Server als nächstes vom Client erwartet.

401 zeigt an, dass die Ressource nicht bereitgestellt werden kann, aber der Server FORDERT die Anmeldung des Clients über die HTTP-Authentifizierung an und hat Antwortheader gesendet, um den Prozess zu starten.Möglicherweise gibt es Berechtigungen, die den Zugriff auf die Ressource ermöglichen, möglicherweise auch nicht, aber probieren wir es mal aus und sehen, was passiert.

403 bedeutet, dass die Ressource nicht bereitgestellt werden kann und es für den aktuellen Benutzer keine Möglichkeit gibt, dieses Problem über RFC2617 zu lösen, und es keinen Sinn macht, es zu versuchen.Dies kann daran liegen, dass bekannt ist, dass keine Authentifizierungsstufe ausreichend ist (z. B. aufgrund einer IP-Blacklist), aber es kann auch daran liegen, dass der Benutzer bereits authentifiziert ist und keine Berechtigung hat.Beim RFC2617-Modell handelt es sich um einen Benutzer mit nur einer Anmeldeinformation. Der Fall, dass der Benutzer möglicherweise über einen zweiten Satz an Anmeldeinformationen verfügt, die autorisiert werden könnten, kann daher ignoriert werden.Es wird weder angedeutet noch angedeutet, dass eine Art Anmeldeseite oder ein anderes Authentifizierungsprotokoll, das nicht RFC2617 entspricht, hilfreich sein kann oder auch nicht – das liegt außerhalb der RFC2616-Standards und -Definition.


Bearbeiten: RFC2616 ist veraltet, sehen Sie RFC7231 Und RFC7235.

  +-----------------------
  | RESOURCE EXISTS ? (if private it is often checked AFTER auth check)
  +-----------------------
    |       |
 NO |       v YES
    v      +-----------------------
   404     | IS LOGGED-IN ? (authenticated, aka has session or JWT cookie)
   or      +-----------------------
   401        |              |
   403     NO |              | YES
   3xx        v              v
              401            +-----------------------
       (404 no reveal)       | CAN ACCESS RESOURCE ? (permission, authorized, ...)
              or             +-----------------------
             redirect          |            |
             to login       NO |            | YES
                               |            |
                               v            v
                               403          OK 200, redirect, ...
                      (or 404: no reveal)
                      (or 404: resource does not exist if private)
                      (or 3xx: redirection)

Die Überprüfungen werden normalerweise in dieser Reihenfolge durchgeführt:

  • 404, wenn die Ressource öffentlich ist und nicht existiert oder 3xx-Umleitung
  • ANSONSTEN:
  • 401, wenn Sie nicht angemeldet sind oder die Sitzung abgelaufen ist
  • 403, wenn der Benutzer keine Berechtigung zum Zugriff auf die Ressource (Datei, JSON, ...) hat
  • 404 wenn die Ressource nicht existiert oder nicht bereit ist, etwas preiszugeben, oder 3xx-Umleitung

NICHT AUTORISIERT:Statuscode (401), der angibt, dass die Anfrage erforderlich ist Authentifizierung, normalerweise bedeutet dies, dass der Benutzer angemeldet sein muss (Sitzung).Benutzer/Agent vom Server unbekannt.Kann mit anderen Anmeldeinformationen wiederholt werden.NOTIZ:Das ist verwirrend, da dies „nicht authentifiziert“ statt „nicht autorisiert“ hätte heißen sollen.Dies kann auch nach der Anmeldung passieren, wenn die Sitzung abgelaufen ist.Besonderer Fall:Kann anstelle von 404 verwendet werden, um die Offenlegung des Vorhandenseins oder Nichtvorhandenseins einer Ressource zu vermeiden (Quelle: @gingerCodeNinja)

VERBOTEN:Statuscode (403), der angibt, dass der Server die Anfrage verstanden hat, sich jedoch weigerte, sie zu erfüllen.Benutzer/Agent ist dem Server bekannt, aber bekannt unzureichende Zeugnisse.Eine wiederholte Anfrage wird nicht funktionieren, es sei denn, die Anmeldeinformationen wurden geändert, was in kurzer Zeit sehr unwahrscheinlich ist.Besonderer Fall:Kann anstelle von 404 verwendet werden, um die Offenlegung des Vorhandenseins oder Nichtvorhandenseins einer Ressource zu vermeiden (Quelle: @gingerCodeNinja)

NICHT GEFUNDEN:Statuscode (404), der angibt, dass die angeforderte Ressource nicht verfügbar ist.Benutzer/Agent bekannt, aber der Server gibt nichts über die Ressource preis und tut so, als ob sie nicht vorhanden wäre.Wiederholen wird nicht funktionieren.Dies ist eine spezielle Verwendung von 404 (Github macht es zum Beispiel).

Wie von @ChrisH erwähnt, gibt es einige Optionen dafür Umleitung 3xx (301, 302, 303, 307 oder überhaupt keine Weiterleitung und Verwendung einer 401):

Entsprechend RFC 2616 (HTTP/1.1) 403 wird gesendet, wenn:

Der Server hat die Anfrage verstanden, weigert sich jedoch, sie zu erfüllen.Eine Autorisierung wird nicht helfen und die Anfrage SOLLTE NICHT wiederholt werden.Wenn die Anfragemethode nicht HEAD war und der Server öffentlich machen möchte, warum die Anfrage nicht erfüllt wurde, SOLLTE er den Grund für die Ablehnung in der Entität beschreiben.Wenn der Server diese Informationen dem Client nicht zur Verfügung stellen möchte, kann stattdessen der Statuscode 404 (Not Found) verwendet werden

Mit anderen Worten: Wenn der Client durch Authentifizierung Zugriff auf die Ressource erhalten KANN, sollte 401 gesendet werden.

Vorausgesetzt, HTTP-Authentifizierung (WWW-Authentifizieren Und Genehmigung Kopfzeilen) ist in Gebrauch, Wenn die Authentifizierung als ein anderer Benutzer Zugriff auf die angeforderte Ressource gewähren würde, sollte 401 Unauthorized zurückgegeben werden.

403 Verboten wird verwendet, wenn der Zugriff auf die Ressource jedem verboten oder auf ein bestimmtes Netzwerk beschränkt oder nur über SSL zulässig ist, sofern dies nicht mit der HTTP-Authentifizierung zusammenhängt.

Wenn keine HTTP-Authentifizierung verwendet wird und der Dienst ein Cookie-basiertes Authentifizierungsschema verwendet, wie es heutzutage üblich ist, dann sollte ein 403 oder ein 404 zurückgegeben werden.

Bezüglich 401 stammt dies aus RFC 7235 (Hypertext Transfer Protocol (HTTP/1.1):Authentifizierung):

3.1.401 nicht Autorisiert

Der Statuscode von 401 (nicht autorisiert) gibt an, dass die Anforderung nicht angewendet wurde, da er keine gültigen Authentifizierungsanmeldeinformationen für die Zielressource gibt.Der Ursprungsserver muss ein www-authenticate-Header-Feld (Abschnitt 4.4) senden, der mindestens eine für die Zielressource gilt für die Zielressource enthält. Wenn die Anfrage Authentifizierungsanmeldeinformationen enthielt, zeigt die Antwort von 401 an, dass die Genehmigung für diese Anmeldeinformationen abgelehnt wurde.Der Client kann die Anfrage mit einem neuen oder ersetztem Autorisierungs -Header -Feld (Abschnitt 4.1) wiederholen.Wenn die Antwort 401 die gleiche Herausforderung wie die vorherige Antwort enthält und der Benutzeragent bereits mindestens einmal eine Authentifizierung versucht hat, sollte der Benutzeragent dem Benutzer die beigefügte Darstellung vorlegen, da sie normalerweise relevante diagnostische Informationen enthält.

Die Semantik von 403 (und 404) hat sich im Laufe der Zeit geändert.Dies ist aus dem Jahr 1999 (RFC 2616):

10.4.4 403 Verboten

Der Server hat die Anfrage verstanden, weigert sich jedoch, sie zu erfüllen.
Eine Autorisierung wird nicht helfen und die Anfrage SOLLTE NICHT wiederholt werden.
Wenn die Anforderungsmethode nicht HEAD war und der Server dies wünscht
Öffentlich, warum die Anfrage nicht erfüllt wurde, sollte der Grund für die Ablehnung des Unternehmens beschreiben.Wenn der Server diese Informationen nicht dem Client zur Verfügung stellen möchte, ist der Statuscode 404
(Nicht gefunden) kann stattdessen verwendet werden.

Im Jahr 2014 RFC 7231 (Hypertext Transfer Protocol (HTTP/1.1):Semantik und Inhalt) hat die Bedeutung von 403 geändert:

6.5.3.403 Verboten

Der Statuscode von 403 (verboten) zeigt an, dass der Server die Anforderung verstanden hat, ihn jedoch weigert, ihn zu autorisieren.Ein Server, der öffentlich machen möchte, warum die Anfrage verboten wurde, kann diesen Grund in der Antwortnutzlast (falls vorhanden) beschreiben.

Wenn in der Anfrage Authentifizierungsdaten angegeben wurden, wird die
Der Server hält sie für unzureichend, um Zugriff zu gewähren.Der Kunde
SOLLTE die Anfrage NICHT automatisch wiederholen
Referenzen.Der Client kann die Anfrage mit neuen oder verschiedenen Anmeldeinformationen wiederholen.Eine Anfrage kann jedoch aus bestimmten Gründen untersagt werden
hat nichts mit den Zeugnissen zu tun.

Ein Ursprungsserver, der die aktuelle Existenz von a „verbergen“ möchte
Die verbotene Zielressource KANN stattdessen mit dem Statuscode antworten
404 Nicht gefunden).

Somit könnte eine 403 (oder eine 404) nun alles Mögliche bedeuten.Die Bereitstellung neuer Anmeldeinformationen könnte hilfreich sein ...oder vielleicht auch nicht.

Ich glaube, der Grund, warum sich dies geändert hat, ist, dass RFC 2616 davon ausgeht, dass die HTTP-Authentifizierung verwendet wird, während die heutigen Web-Apps in der Praxis benutzerdefinierte Authentifizierungsschemata erstellen, die beispielsweise Formulare und Cookies verwenden.

  • 401 nicht Autorisiert:Ich weiß nicht, wer du bist. Dies ist ein Authentifizierungsfehler.
  • 403 Verboten:Ich weiß, wer Sie sind, aber Sie haben keine Berechtigung, auf diese Ressource zuzugreifen. Dies ist ein Autorisierungsfehler.

Dies ist eine ältere Frage, aber eine Option, die nie wirklich zur Sprache kam, war die Rückgabe einer 404.Aus Sicherheitsgründen leidet die am höchsten bewertete Antwort unter einem Potenzial Schwachstelle durch Informationslecks.Nehmen wir zum Beispiel an, dass es sich bei der betreffenden sicheren Webseite um eine Systemadministrationsseite oder, was noch häufiger vorkommt, um einen Datensatz in einem System handelt, auf den der Benutzer keinen Zugriff hat.Im Idealfall möchten Sie nicht, dass ein böswilliger Benutzer überhaupt erfährt, dass es dort eine Seite/einen Datensatz gibt, geschweige denn, dass er keinen Zugriff darauf hat.Wenn ich so etwas erstelle, versuche ich, nicht authentifizierte/nicht autorisierte Anfragen in einem internen Protokoll aufzuzeichnen, gebe aber eine 404 zurück.

OWASP hat einige Mehr Informationen darüber, wie ein Angreifer diese Art von Informationen im Rahmen eines Angriffs nutzen könnte.

Diese Frage wurde schon vor einiger Zeit gestellt, aber das Denken der Menschen geht weiter.

Abschnitt 6.5.3 In diesem Entwurf (verfasst von Fielding und Reschke) erhält der Statuscode 403 eine etwas andere Bedeutung als der in dokumentierte RFC 2616.

Es spiegelt wider, was bei Authentifizierungs- und Autorisierungsschemata passiert, die von einer Reihe beliebter Webserver und Frameworks verwendet werden.

Ich habe den Teil hervorgehoben, der meiner Meinung nach am hervorstechendsten ist.

6.5.3.403 Verboten

Der Statuscode 403 (Verboten) zeigt an, dass der Server die Anfrage verstanden hat, sich jedoch weigert, sie zu autorisieren.Ein Server, der öffentlich machen möchte, warum die Anfrage verboten wurde, kann diesen Grund in der Antwortnutzlast (falls vorhanden) beschreiben.

Wenn in der Anfrage Authentifizierungsdaten angegeben wurden, geht der Server davon aus, dass diese nicht ausreichen, um Zugriff zu gewähren. Der Client SOLLTE die Anfrage NICHT mit denselben Anmeldeinformationen wiederholen.Der Kunde KANN die Anfrage mit neuen oder anderen Anmeldeinformationen wiederholen. Eine Anfrage kann jedoch aus Gründen, die nichts mit den Anmeldeinformationen zu tun haben, abgelehnt werden.

Ein Ursprungsserver, der die aktuelle Existenz einer verbotenen Zielressource „verbergen“ möchte, antwortet möglicherweise stattdessen mit dem Statuscode 404 (Nicht gefunden).

Unabhängig davon, welche Konvention Sie verwenden, ist es wichtig, für Einheitlichkeit auf Ihrer Website/API zu sorgen.

TL;DR

  • 401:Eine Weigerung, die mit der Authentifizierung zu tun hat
  • 403:Eine Weigerung, die NICHTS mit der Authentifizierung zu tun hat

Praxisbeispiele

Wenn Apache erfordert eine Authentifizierung (über .htaccess), und du triffst Cancel, antwortet es mit einem 401 Authorization Required

Wenn Nginx findet eine Datei, hat aber keine Zugangsrechte (Benutzer/Gruppe) zum Lesen/Zugreifen, wird mit geantwortet 403 Forbidden

RFC (2616 Abschnitt 10)

401 Nicht autorisiert (10.4.2)

Bedeutung 1: Authentifizierung erforderlich

Die Anfrage erfordert eine Benutzerauthentifizierung....

Bedeutung 2: Authentifizierung unzureichend

...Wenn die Anfrage bereits Autorisierungsanmeldeinformationen enthielt, zeigt die 401-Antwort an, dass die Autorisierung für diese Anmeldeinformationen verweigert wurde....

403 Verboten (10.4.4)

Bedeutung: Hat nichts mit der Authentifizierung zu tun

...Autorisierung wird nicht helfen ...

Mehr Details:

  • Der Server hat die Anfrage verstanden, weigert sich jedoch, sie zu erfüllen.

  • Es SOLLTE der Grund für die Ablehnung im Unternehmen beschrieben werden

  • Stattdessen kann der Statuscode 404 (Nicht gefunden) verwendet werden

    (Wenn der Server diese Informationen vom Client fernhalten möchte)

Sie sind nicht angemeldet oder gehören nicht zur richtigen Benutzergruppe

Sie haben zwei verschiedene Fälle genannt;Jeder Fall sollte eine andere Antwort haben:

  1. Wenn sie überhaupt nicht angemeldet sind, sollten Sie zurückkehren 401 nicht Autorisiert
  2. Wenn sie angemeldet sind, aber nicht zur richtigen Benutzergruppe gehören, sollten Sie zurückkehren 403 Verboten

Hinweis zum RFC basierend auf den zu dieser Antwort eingegangenen Kommentaren:

Wenn der Benutzer nicht angemeldet ist, ist er nicht authentifiziert. Das HTTP-Äquivalent davon ist 401 und wird im RFC irreführend als „Nicht autorisiert“ bezeichnet.Als Abschnitt 10.4.2 Staaten für 401 nicht Autorisiert:

„Für die Anfrage ist ein Benutzer erforderlich Authentifizierung."

Wenn Sie nicht authentifiziert sind, ist 401 die richtige Antwort.Wenn Sie jedoch nicht autorisiert sind, ist 403 im semantisch korrekten Sinne die richtige Antwort.

Auf Englisch:

401

Sie dürfen potenziell Zugang zugelassen, aber aus irgendeinem Grund wurden Ihnen auf diese Anfrage abgelehnt.Zum Beispiel ein falsches Passwort?Versuchen Sie es erneut, mit der richtigen Anfrage erhalten Sie stattdessen eine Erfolgsantwort.

403

Das ist Ihnen niemals erlaubt.Ihr Name steht nicht auf der Liste, Sie werden niemals hineinkommen, weggehen, keine Auftriebsanfrage senden, sie wird immer abgelehnt.Geh weg.

Dies sind die Bedeutungen:

401:Der Benutzer ist nicht (korrekt) authentifiziert. Die Ressource/Seite erfordert eine Authentifizierung

403:Der Benutzer hat sich authentifiziert, aber seine Rolle oder Berechtigungen erlauben keinen Zugriff auf die angeforderte Ressource, z. B. ist der Benutzer kein Administrator und die angeforderte Seite ist für Administratoren bestimmt

Das ist in meinem Kopf einfacher als irgendwo hier, also:

401:Um dies anzuzeigen, benötigen Sie eine HTTP-Basisauthentifizierung.

403:Sie können dies nicht sehen und die HTTP-Basisauthentifizierung hilft nicht.

Wenn sich der Benutzer lediglich mit dem Standard-HTML-Anmeldeformular Ihrer Site anmelden muss, wäre 401 nicht geeignet, da es sich speziell auf die HTTP-Basisauthentifizierung bezieht.

Ich empfehle nicht, 403 zu verwenden, um den Zugriff auf Dinge wie zu verweigern /includes, denn soweit es das Web betrifft, existieren diese Ressourcen überhaupt nicht und sollten daher 404 sein.

Dies führt dazu, dass 403 als „Sie müssen angemeldet sein“ angezeigt wird.

Mit anderen Worten bedeutet 403 „Diese Ressource erfordert eine andere Form der Authentifizierung als die HTTP-Basisauthentifizierung“.

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2

Ich denke, es ist wichtig zu bedenken, dass 401 für einen Browser einen Authentifizierungsdialog initiiert, in dem der Benutzer neue Anmeldeinformationen eingeben kann, während dies bei 403 nicht der Fall ist.Browser gehen davon aus, dass sich der Benutzer erneut authentifizieren sollte, wenn eine 401 zurückgegeben wird.401 steht also für eine ungültige Authentifizierung, während 403 für eine fehlende Berechtigung steht.

Hier sind einige Fälle aufgeführt, in denen nach dieser Logik ein Fehler von der Authentifizierung oder Autorisierung zurückgegeben wird, wobei wichtige Ausdrücke fett gedruckt sind.

  • Eine Ressource erfordert jedoch eine Authentifizierung keine Zeugnisse war angegeben.

401:Der Client sollte Anmeldeinformationen angeben.

  • Die angegebenen Anmeldeinformationen befinden sich in einem ungültiges Format.

400:Das ist weder 401 noch 403, da Syntaxfehler immer 400 zurückgeben sollten.

  • Die angegebenen Anmeldeinformationen verweisen auf a Benutzer welche ist nicht vorhanden.

401:Der Client sollte gültige Anmeldeinformationen angeben.

  • Die angegebene Referenzen Sind ungültig Geben Sie jedoch einen gültigen Benutzer an (oder geben Sie keinen Benutzer an, wenn ein angegebener Benutzer nicht erforderlich ist).

401:Auch hier sollte der Client gültige Anmeldeinformationen angeben.

  • Die angegebene Referenzen haben Abgelaufen.

401:Dies ist praktisch dasselbe wie ungültige Anmeldeinformationen im Allgemeinen, daher sollte der Client gültige Anmeldeinformationen angeben.

  • Die angegebenen Anmeldeinformationen sind vollständig gültig, jedoch nicht genügen das Besondere Ressource, obwohl es möglich ist, dass Anmeldeinformationen mit mehr Berechtigungen dies tun könnten.

403:Die Angabe gültiger Anmeldeinformationen würde keinen Zugriff auf die Ressource gewähren, da die aktuellen Anmeldeinformationen bereits gültig sind, aber keine Berechtigung haben.

  • Das Besondere Ressource Ist nicht zugänglich unabhängig von der Qualifikation.

403:Dies gilt unabhängig von den Anmeldeinformationen, daher kann die Angabe gültiger Anmeldeinformationen nicht hilfreich sein.

  • Die angegebenen Anmeldeinformationen sind vollständig gültig, aber die einzelnen Klient Ist verstopft davon ab, sie zu benutzen.

403:Wenn der Client blockiert ist, hat die Angabe neuer Anmeldeinformationen keine Auswirkung.

Angesichts der neuesten RFCs zu diesem Thema (7231 Und 7235) Der Anwendungsfall scheint ziemlich klar zu sein (Kursivschrift hinzugefügt):

  • 401 ist für nicht authentifiziert („es fehlt eine gültige Authentifizierung“);d.h.„Ich weiß nicht, wer Sie sind, oder ich vertraue nicht darauf, dass Sie der sind, für den Sie sich ausgeben.“

401 nicht Autorisiert

Der Statuscode von 401 (nicht autorisiert) gibt an, dass die Anforderung nicht angewendet wurde, weil er Es fehlt eine gültige Authentifizierung Anmeldeinformationen für die Zielressource.Der Server, der eine Antwort von 401 erzeugt, muss ein Feldzeilenfeld www-Authenticate (Abschnitt 4.1) mit mindestens eine für die Zielressource geltende Herausforderung senden.

Wenn die Anfrage Authentifizierungsanmeldeinformationen enthielt, zeigt die Antwort 401 an, dass die Genehmigung für diese Anmeldeinformationen abgelehnt wurde.Der Benutzeragent kann die Anforderung mit einem neuen oder ersetztem Autorisierungs -Header -Feld (Abschnitt 4.2) wiederholen.Wenn die Antwort 401 die gleiche Herausforderung wie die vorherige Antwort enthält und der Benutzeragent bereits mindestens einmal eine Authentifizierung versucht hat, sollte der Benutzeragent dem Benutzer die beigefügte Darstellung vorlegen, da sie normalerweise relevante diagnostische Informationen enthält.

  • 403 ist für nicht autorisiert („verweigert die Genehmigung“);d.h.„Ich weiß, wer Sie sind, aber Sie haben keine Berechtigung, auf diese Ressource zuzugreifen.“

403 Verboten

Der Statuscode von 403 (verboten) zeigt an, dass der Server die Anforderung jedoch verstanden hat, aber verweigert die Genehmigung Es.Ein Server, der öffentlich machen möchte, warum die Anfrage verboten wurde, kann diesen Grund in der Antwortnutzlast (falls vorhanden) beschreiben.

Wenn in der Anfrage Authentifizierungsanmeldeinformationen angegeben wurden, berücksichtigt der Server sie nicht aus, den Zugriff zu gewähren.Der Client sollte die Anfrage nicht automatisch mit denselben Anmeldeinformationen wiederholen.Der Client kann die Anfrage mit neuen oder verschiedenen Anmeldeinformationen wiederholen.Eine Anfrage könnte jedoch aus Gründen verboten sein, die nicht mit den Anmeldeinformationen zu tun haben.

Ein Ursprungsserver, der die aktuelle Existenz einer verbotenen Zielressource "verbergen" möchte, kann stattdessen mit einem Statuscode von 404 reagieren (nicht gefunden).

Im Fall 401 vs. 403 wurde dies schon oft beantwortet.Dabei handelt es sich im Wesentlichen um eine Debatte über die „HTTP-Anforderungsumgebung“, nicht um eine Debatte über die „Anwendung“.

Es scheint eine Frage zum Thema Roll-Your-Own-Login (Anwendung) zu geben.

In diesem Fall reicht es nicht aus, einfach nicht angemeldet zu sein, um eine 401 oder eine 403 zu senden, es sei denn, Sie verwenden HTTP Auth anstelle einer Anmeldeseite (nicht an die Einstellung von HTTP Auth gebunden).Es hört sich so an, als ob Sie nach „201 erstellt“ suchen, mit einem Roll-Your-Own-Login-Bildschirm (anstelle der angeforderten Ressource) für den Zugriff auf eine Datei auf Anwendungsebene.Hier steht:

„Ich habe dich gehört, es ist hier, aber versuche stattdessen dies (du darfst es nicht sehen)“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top