HTTP definiert den Status 401 Unauthorized für fehlende Authentifizierung, aber dieser Status gilt nur für die HTTP-Authentifizierung. Welchen Status sollte ich mit einem Session-Cookie-basierten System zurückgeben, wenn eine nicht autorisierte Anfrage erfolgt?HTTP-Statuscode für fehlende Authentifizierung
Antwort
Formal ist 403 Verboten die richtige Antwort. Es ist definiert als
Autorisierung wird nicht helfen und die Anfrage sollte nicht wiederholt werden.
Das verwirrende Teil sein kann „Authorization wird nicht helfen“, aber sie wirklich bedeuten „HTTP-Authentifizierung“ (WWW-Authenticate)
403 Ich glaube, technisch korrekt ist (und wahrscheinlich am effektivsten, wenn Sie implementieren eine benutzerdefinierte API/Protokoll).
401 ist nicht geeignet, da es sich auf die Autorisierung mit einem WWW-Authenticate-Header bezieht, was ein Sitzungscookie nicht ist.
Wenn es sich um eine öffentlich zugängliche Website handelt, auf der Sie versuchen, den Zugriff aufgrund eines Sitzungscookies zu verweigern, 200 mit einer geeigneten Stelle, um anzugeben, dass eine Anmeldung erforderlich ist, oder eine 302 temporäre Weiterleitung zu einer Anmeldeseite ist am besten.
Dies wäre fixierbar mein tatsächlich definieren ein Cookie-basierte HTTP-Authentifizierungsschema. –
@Julian Reschke - Gut Cookies haben per Definition nicht viel mit Authentifizierung zu tun; In erster Linie fügen sie einem "state less" -Protokoll, HTTP, eine gewisse Menge an "Status" hinzu. Cookies selbst authentifizieren nichts. Es handelt sich einfach um Informationen, die an einen Server gesendet werden, den der Server zuvor vom Browser angefordert hat. Ja, diese Informationen können verwendet werden, um festzustellen, ob Sie zuvor als Benutzer authentifiziert wurden (normalerweise über HTTP POST/GET). Es kann auch einfach verwendet werden, um anzuzeigen, ob Sie zuvor eine bestimmte Anzeige gesehen oder diese Website vor und wann besucht haben. – userx
Sie können die Verwendung einer Testbedingung machen und auf dem Code
Fehler passieren: 401.1-Anmeldung fehlgeschlagen. Der Anmeldeversuch ist nicht erfolgreich, wahrscheinlich aufgrund eines ungültigen Benutzernamens oder Kennworts.
Dies ist speziell für das falsche Passwort oder nicht übereinstimmenden Benutzernamen und Passwort verwendet. Hoffe das hilft dir.
401.1 scheint Microsoft spezifisch zu sein http://support.microsoft.com/kb/247593 – deamon
Ist gibt es einen RFC, der 401.1 definiert? – deamon
HTTP-Statuscodes bestehen aus drei Ziffern. Es gibt nicht so etwas wie NNN.N auf der Leitung (außer vielleicht in der * Nachricht *, die keine Bedeutung hat) –
- 1. HttpResponseException Annahme nicht Httpstatuscode
- 2. Benutzerdefinierter HttpStatusCode ohne Fehlermeldung (HttpActionResult)
- 3. Rückgabe HttpStatusCode in der Antwort
- 4. Getting a HttpStatusCode of 0
- 5. ASPnet MVC Identität - SendAsync Httpstatuscode
- 6. von int-Wert generieren Httpstatuscode
- 7. Rückgabe HttpStatusCode in API-Methode
- 8. Ausnahme für fehlende Daten
- 9. Fehlende Baugruppenreferenz für SqlConnection
- 10. XPath für fehlende Knoten
- 11. Fehlende Einheitentests für Mutationstests
- 12. Testen für fehlende erforderliche Zeichenfelder
- 13. Fehlende Spezifikationsdateien für RSpec generieren
- 14. AD Authentifizierung für ICINGA
- 15. API-Authentifizierung für Sinatra
- 16. Sails.js Authentifizierung für Modellaktionen
- 17. Erfordern Authentifizierung für Seite
- 18. IIS-Authentifizierung für Server
- 19. Java: Authentifizierung für OneDrive.
- 20. Authentifizierung für NeverBounce abrufen
- 21. Unit-Tests ApiController Methoden mit Statuscodes nicht in Httpstatuscode-Enumeration
- 22. Fehlende ASP.NET 5 Vorlagen
- 23. Wie kann ich Ausnahme von HttpResponseMessage (Httpstatuscode, Exception)
- 24. WeChat Authentifizierung für das Web
- 25. WSGI Middleware für OAuth-Authentifizierung
- 26. Authentifizierung für neo4j schlägt fehl
- 27. Client-Authentifizierung für WebAPI 2
- 28. Anwendungslogik (Platz für Authentifizierung/Autorisierung)
- 29. Swift - NSURLSession für Windows-Authentifizierung
- 30. RESTful Authentifizierung für Web-Anwendungen
Dies bedeutet, dass der Benutzer die Anfrage nie erneut versuchen sollte. Dies ist nicht angemessen. –
Technisch glaube ich, dass Sie richtig sind. Im Fall der praktischen Implementierung glaube ich, dass eine 200 mit einer HTML-basierten Fehlermeldung oder 302, die auf eine andere Seite umleitet, auf der eine sitzungsbasierte Anmeldung stattfinden kann, häufiger ist (und vielleicht sogar nützlicher ist). – userx
@Erik Philips - Das ist richtig, die Anfrage sollte nicht sein. Sobald die Header der Anfrage so geändert sind, dass sie einen korrekten Sitzungscookie haben (also nicht die SAME-Anfrage), wird der Zugriff gewährt. – userx