Das Zugriffstoken ist abgelaufen


Aktualisierungstoken

Als Sie das Zugriffstoken ursprünglich erhalten haben, enthielt es möglicherweise ein Aktualisierungstoken sowie eine Ablaufzeit, wie im folgenden Beispiel.

{ "access_token": "AYjcyMzY3ZDhiNmJkNTY", "refresh_token": "RjY2NjM5NzA2OWJjuE7c", "token_type": "bearer", "expires": 3600 }

Das Vorhandensein des Aktualisierungstokens bedeutet, dass das Zugriffstoken abläuft und Sie ohne die Interaktion des Benutzers ein neues Token erhalten können.

Der Wert "expires_in" ist die Anzahl der Sekunden, die das Zugriffstoken gültig ist. Es liegt beim Dienst, den Sie verwenden, zu entscheiden, wie lange Zugriffstoken gültig sind, und kann von der Anwendung oder den eigenen Richtlinien der Organisation abhängen. Sie können diesen Zeitstempel verwenden, um Ihre Zugriffstoken präventiv zu aktualisieren, anstatt auf eine Anforderung mit einem abgelaufenen Token schlägt fehl. Einige Leute möchten ein neues Zugriffstoken kurz vor Ablauf des aktuellen erhalten, um eine HTTP-Anfrage eines fehlgeschlagenen API-Aufrufs zu speichern. Das ist zwar eine völlig gute Optimierung, hindert Sie aber nicht daran, sich immer noch um den Fall kümmern zu müssen, dass ein API-Aufruf fehlschlägt, wenn ein Zugriffstoken vor der erwarteten Zeit abläuft. Zugriffstoken können aus vielen Gründen ablaufen, z. B. wenn der Benutzer eine App widerruft oder wenn der Autorisierungsserver alle Token ablaufen lässt, wenn ein Benutzer sein Kennwort ändert.

Wenn Sie eine API-Anfrage stellen und das Token bereits abgelaufen ist, erhalten Sie eine entsprechende Antwort. Sie können nach dieser speziellen Fehlermeldung suchen, dann das Token aktualisieren und die Anforderung erneut versuchen.

Wenn Sie eine JSON-basierte API verwenden, wird wahrscheinlich eine JSON-Fehlerantwort mit dem Fehler zurückgegeben. In jedem Fall hat der Header auch den Fehlercode.

HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer error="invalid_token" error_description="Das Zugriffstoken abgelaufen" Content-type: application/json { "error": "invalid_token", "error_description": "Das Zugriffstoken abgelaufen" }

Wenn Ihre Anwendung diesen speziellen Fehler erkennt, kann sie eine Anfrage an den Tokenendpunkt mit dem zuvor empfangenen Aktualisierungstoken senden. und erhält ein neues Zugriffstoken zurück, mit dem es die ursprüngliche Anforderung wiederholen kann.

Um das Aktualisierungstoken zu verwenden, senden Sie eine POST-Anforderung an den Tokenendpunkt des Diensts mit und schließen Sie bei Bedarf das Aktualisierungstoken sowie die Clientanmeldeinformationen ein.

POST /oauth/token HTTP/1.1 Host: authorization-server.com grant_type=refresh_token &refresh_token=xxxxxxxxxxx &client_id=xxxxxxxxxx &client_secret=xxxxxxxxxx

Die Antwort ist ein neues Zugriffstoken und optional ein neues Aktualisieren Sie das Token, genau wie Sie es beim Austausch des Autorisierungscodes gegen ein Zugriffstoken erhalten haben.

{ "access_token": "BWjcyMzY3ZDhiNmJkNTY", "refresh_token": "Srq2NjM5NzA2OWJjuE7c", "token_type": "Bearer", "expires": 3600 }

Wenn Sie kein neues Aktualisierungstoken zurückerhalten, bedeutet dies, dass Ihr vorhandenes Aktualisierungstoken weiterhin funktioniert, wenn das neue Zugriffstoken abläuft.

Die sicherste Option besteht darin, dass der Autorisierungsserver bei jeder Verwendung ein neues Aktualisierungstoken ausstellt. Dies ist die Empfehlung in der neuesten Security Best Current Practice, die es Autorisierungsservern ermöglicht, zu erkennen, ob ein Aktualisierungstoken gestohlen wird. Dies ist besonders wichtig für Clients, die nicht über einen geheimen Clientschlüssel verfügen, da das Aktualisierungstoken das einzige Element ist, das zum Abrufen neuer Zugriffstoken benötigt wird.

Wenn sich das Aktualisierungstoken nach jeder Verwendung ändert, wenn das Symbol Der Autorisierungsserver erkennt jemals, dass ein Aktualisierungstoken zweimal verwendet wurde, was bedeutet, dass es wahrscheinlich kopiert wurde und von einem Angreifer verwendet wird, und der Autorisierungsserver kann alle Zugriffstoken und Aktualisierungstoken, die ihm zugeordnet sind, sofort widerrufen.

Beachten Sie, dass der Benutzer eine Anwendung jederzeit widerrufen kann, sodass Ihre Anwendung in der Lage sein muss, den Fall zu behandeln, wenn die Verwendung des Aktualisierungstokens ebenfalls fehlschlägt. An diesem Punkt müssen Sie den Benutzer erneut zur Autorisierung auffordern und einen neuen OAuth-Ablauf von Grund auf neu starten.

Möglicherweise stellen Sie fest, dass sich die Eigenschaft "expires_in" auf das Zugriffstoken und nicht auf das Aktualisierungstoken bezieht. Die Ablaufzeit des Aktualisierungstokens wird dem Client absichtlich nie mitgeteilt. Dies liegt daran, dass der Client über keine umsetzbaren Schritte verfügt, die er ausführen kann, selbst wenn er wissen könnte, wann das Aktualisierungstoken ablaufen würde. Es gibt auch viele Gründe, warum Aktualisierungstoken ablaufen können, bevor auch die erwartete Lebensdauer von ihnen.

Wenn ein Aktualisierungstoken aus irgendeinem Grund abläuft, besteht die einzige Aktion, die die Anwendung ausführen kann, darin, den Benutzer aufzufordern, sich erneut anzumelden und einen neuen OAuth-Ablauf von Grund auf neu zu starten, der ein neues Zugriffstoken und ein neues Aktualisierungstoken für die Anwendung ausstellt. Aus diesem Grund spielt es keine Rolle, ob die Anwendung die erwartete Lebensdauer des Aktualisierungstokens kennt, denn unabhängig davon, aus welchem Grund es abläuft, ist das Ergebnis immer dasselbe.