Frage

Ich schreibe eine kleine Anwendung, die einen einfachen REST-ish HTTP API aussetzt. Ich bin fest versuchen, zu entscheiden, wie eine Störung zu signalisieren, aufgrund eines fehlenden Genehmigung.

Die App verfügt nicht über eine API für die Authentifizierung, sondern hängt von der Anwesenheit eines Cookies eine Session-Token vom Client über einen anderen Dienst enthält, erhalten. Die App prüft die Sitzung und verwendet die Identität durch den Verifikationsprozess erhalten app-spezifische Genehmigung auszuführen. Es gibt keine Möglichkeit für einen Kunden dieser App direkt zu authentifizieren.

Mein Problem ist, dass der offensichtliche HTTP-Statuscode nicht autorisierte Zugriffe für die Ablehnung, "401 Unauthorized", in Bezug auf dem "WWW-Authenticate" Header angegeben wird. Siehe RFC2616 sec 10.4.2 .

  

Die Antwort muss eine umfassen   WWW-Authenticate-Header-Feld (Abschnitt   14,47), die eine Herausforderung für die angeforderte Ressource enthält.

Ich kann nicht glauben, dass dies ein ungewöhnliches Problem. Ist es üblich, allgemeinere Anwendungen einfach 401 Überlastung schließen? Was über Browser Aufspringen Auth / e Dialoge (die übrigens habe ich nicht in meinen Tests gesehen, also vielleicht ist es nicht für POSTs geschieht)?

Fazit: es ist OK 401 ist in diesem Zusammenhang zu verwenden, oder gibt es eine bessere Lösung

?
War es hilfreich?

Lösung

Normalerweise werden Sie ein 401, wenn der Client senden kann, um das Problem authentifizieren und lösen, aber da Sie in der API nicht bieten eine Möglichkeit, zu authentifizieren, würde ich vorschlagen, einen 403 Fehler zurückgegeben (verboten) statt. Dies wird nicht den Header erfordern und an den Client anzeigt, dass es sich nicht auf den Dienst zuzugreifen.

Andere Tipps

Zurück etwas wie folgt aus:

HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top