Das Beste, was ich vorschlagen kann, ist ein HTTP 401-Statuscode mit einem WWW-Authenticate-Header.
Das Problem bei 403- Anforderungen ist, dass der RFC 2616 angibt, dass die Autorisierung nicht hilft und die Anforderung NICHT wiederholt werden sollte. (dh egal, ob Sie authentifiziert sind oder nicht, Sie werden niemals Zugriff auf diese Ressource erhalten).
Das Problem mit 401- Anfragen besteht darin, dass sie "ein WWW-Authenticate-Header-Feld enthalten MÜSSEN". Wie jemand bemerkt hat, scheint es nicht gegen die Spezifikation zu verstoßen, einen benutzerdefinierten Wert in einem WWW-Authenticate-Header zu verwenden.
Ich kann keinen Grund dafür sehen RFC 2617 warum ein HTTP 401-Status in Kombination mit einem benutzerdefinierten WWW-Authenticate-Header wie diesem nicht in Ordnung wäre:
WWW-Authenticate: MyAuthScheme realm="http://example.com"
Das oAuth-Spezifikation scheint genau dies zu tun, da sie dies empfiehlt (obwohl sie meiner Meinung nach eine seltsame Interpretation des RFC haben):
WWW-Authenticate: OAuth realm="http://server.example.com/"
Dies scheint vom RFC nicht speziell SANKTIONIERT zu sein, aber ich kann nicht sehen, dass es dadurch verboten ist (es scheint nicht im Widerspruch zu einer Bedingung zu stehen, die MUSS oder MUSS NICHT, SOLLTE oder SOLLTE NICHT).
Ich wünschte, es gäbe einen spezifischeren HTTP-Statuscode für Zeitüberschreitungen und für Dinge wie CSRF-Token, die ungültig sind, damit dies klarer wird.