it-swarm.com.de

Token abgelaufen - JSON REST API - Fehlercode

Ich habe eine JSON REST API. Es gibt einen Handshake, mit dem Sie ein Token erhalten, das 15 Minuten lang gültig ist. Alle Anrufe, die Sie innerhalb dieser 15 Minuten tätigen, sollten funktionieren. Nach dem 15 Minuten Ich gebe ein Fehlerobjekt zurück (enthält Code, Nachricht, Erfolg = falsch), habe mich aber auch gefragt, welchen HTTP-Fehlercode ich zurückgeben soll und ob die Verwendung eines HTTP-Fehlercodes bestimmte Clients durcheinander bringt (HTML5, iPhone, Android). Was wird in diesem Szenario als Best Practice angesehen?

61
BuddyJoe

Sie sollten ein 401 Unauthorized Statuscode. Sie können auch Hypermedien bereitstellen, um das Token erneut zu erstellen

Überlegen Sie, was in einer Web-App passiert. Sie gehen, um eine Bankseite zu sagen. Wenn dies nicht der Fall ist, werden Sie zur Anmeldeseite weitergeleitet. Dann loggst du dich ein und es kann losgehen. Dann läuft es ab und der Zyklus wiederholt sich.

Nur ein Gedanke.

71
suing

gemäß der Spezifikation rfc6750 - "Das OAuth= 2.0 Authorization Framework: Verwendung von Inhaber-Token", https://tools.ietf.org/html/rfc675 , p. 8, Abschnitt 3.1, Ressourcenserver sollte 401 zurückgeben:>

invalid_token Das angegebene Zugriffstoken ist abgelaufen, widerrufen, fehlerhaft oder aus anderen Gründen ungültig. Die Ressource SOLLTE mit dem Statuscode HTTP 401 (Unauthorized) antworten. Der Client KANN ein neues Zugriffstoken anfordern und die Anforderung für geschützte Ressourcen wiederholen.

28
Louis

FWIW Facebook verwendet 400 mit einer benutzerdefinierten JSON-Antwort. Ich persönlich würde 401 mit angepasster JSON-Antwort bevorzugen.

Hier ist der Antworttext von FB:

{
  "error": {
    "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463
  }
}
10
rynop

Ich habe die OAuth 2-Spezifikation durchsucht und konnte nur feststellen, dass sie nach Ablauf einen "Invalid Token Error" (Ungültiger Token-Fehler) zurückgeben. Es wird nicht erwähnt, welchen HTTP-Code sie verwenden Ich würde jedoch sagen, dass Ihre sicherste Wette die Verwendung einer 400 ist.

2
Darrel Miller