2015-06-14 16 views
18

Meine mobile iOS-App verwendet Dienste, die mit dem OAuth2.0-Protokoll implementiert werden. Das OAuth-Zugriffstoken wird zusammen mit einem Aktualisierungstoken und einem expires_in-Feld geliefert. Ich habe das Aktualisierungs-Token gespeichert und in meiner App auf die Token-Ablaufzeit zugegriffen, habe aber keine gute Idee, wann ich sie verwenden soll.Wie kann festgestellt werden, ob das OAuth-Token abgelaufen ist?

  • Also was ist die übliche und beste Praxis der Verwendung dieser expires_in?
  • Wie kann ich feststellen, dass mein Zugriffstoken abgelaufen ist?
  • Gibt es ein gemeinsames Web-Service-Fehlerformat, das besagt, dass mein Zugriffstoken abgelaufen ist?

Antwort

29

Hier finden Sie Informationen zur Aktualisierung des OAuth 2.0-Tokens.

Ablaufdatum in der Definition

Der OAuth 2.0-Standard, RFC 6749, das expires_in Feld als die Anzahl der Sekunden bis Ablauf definiert:

expires_in: Empfohlene. Die Lebensdauer des Zugriffstokens in Sekunden. Der Wert "3600" bedeutet beispielsweise, dass das Zugriffstoken in einer Stunde ab dem Zeitpunkt abläuft, zu dem die Antwort generiert wurde. Wenn sie weggelassen wird, SOLLTE der Autorisierungsserver die Ablaufzeit auf andere Weise angeben oder den Standardwert dokumentieren.

Token Refresh Handhabung: Methode 1

Nach einer gültigen access_token, Empfangen expires_in Wert, refresh_token, etc., können Clients dieser Prozess durch eine Ablaufzeit zu speichern und sie auf jede Anforderung zu überprüfen. Dies kann mit den folgenden Schritten erfolgen:

  1. convert expires_in zu einer Zeit ablaufen (Epoche, ISO Datetime, etc.)
  2. speichert die Zeit
  3. auf jeder Ressourcenanforderung abläuft, überprüfen Sie die aktuelle Zeit vor die Zeit abläuft und ein Token Auffrischanforderung vor der Ressourcenanforderung machen, wenn die access_token

Zusätzlich abgelaufen hat einen neuen access_token zu empfangen, können Sie einen neuen refresh_token mit einer Ablaufzeit f erhalten Weiter in der Zukunft. Wenn Sie dies erhalten, sollten Sie das neue refresh_token speichern, um die Lebensdauer Ihrer Sitzung zu verlängern.

Token Refresh Handhabung: Methode 2

Eine andere Methode der Token refresh Handhabung manuell zu aktualisieren, nachdem eine ungültige Token Fehler empfängt. Dies kann mit dem vorherigen Ansatz oder von alleine erfolgen.

Wenn Sie versuchen, eine abgelaufene access_token zu verwenden und einen ungültigen Token-Fehler erhalten, sollten Sie eine Token-Aktualisierung durchführen (wenn Ihr Aktualisierungstoken noch gültig ist). Da verschiedene Dienste unterschiedliche Fehlercodes für abgelaufene Token verwenden können, können Sie entweder den Code für jeden Dienst verfolgen oder eine einfache Methode zum Aktualisieren von Token zwischen verschiedenen Diensten besteht darin, bei einem 4xx-Fehler einfach eine einzelne Aktualisierung durchzuführen.

Ungültige Zugriffstoken Fehler

Im Folgenden sind einige Fehlercodes von beliebten Dienstleistungen:

  1. Facebook: Error 467 Invalid access token - Zugriffstoken ist abgelaufen, widerrufen wurde oder anderweitig ungültig - Griff abgelaufene Zugriffstoken.
  2. LinkedIn: Error 401 Unauthorized.
  3. PayPal: Error 401 Unauthorized.

Refresh Token Verfall

Wenn Ihr refresh_token ebenfalls abgelaufen, müssen Sie durch den Autorisierungsprozess wieder gehen.

+0

Hallo, vielen Dank für Ihre Antwort! Wie sieht es beim Überprüfen der Ablaufzeit aus, wenn der Benutzer die Gerätezeit ändert? Wird es nicht dazu führen, dass das Zugriffstoken zu oft aktualisiert wird? Und haben Sie bezüglich des Überprüfens des ungültigen Tokenfehlers eine Idee über den Antwortcode und das Fehlerformat, das der oAuth-Server zurückgeben wird? Und wird diese Fehlerantwort für alle oAuth-Server gleich sein? – XiOS

+0

Was sind einige Anwendungsfälle für häufig auftretende Änderungen der Gerätezeit? Zeitzonenänderungen sollten automatisch behandelt werden. Da ein ungültiger Token-Fehlercode im Standard nicht definiert ist, haben verschiedene Dienste verschiedene Fehlercodes ausgewählt, die oben aufgeführt sind. Ein einfacher Refresh-Ansatz kann sein, eine einzelne Aktualisierung bei einem 4xx-Fehler wie erwähnt zu versuchen. – Grokify

Verwandte Themen