2016-08-08 50 views
8

Ich bin mit OAuth als:Speichern von Zugriffstoken und Umgang mit ihren Exspirationen

  1. eine sekundäre Methode Benutzer anmelden in meiner Web-Anwendung (anstatt manuell die Bereitstellung ihren Namen, E-Mail und Passwort)
  2. einen Weg empfangen, um Benutzerdaten auf der gesamten Website zu erhalten.

Was beste Praxis in Betracht gezogen werden würde, wenn Zugriffstoken zu speichern? Ich habe zwei Möglichkeiten:

  1. Shop Zugriffstoken in Cookies
  2. Shop Zugriffstoken in einer Datenbank

Was sind die Vor- und Nachteile der beiden Wahl?


In Bezug auf Token Abläufe, was sollte getan werden, um damit umzugehen?

Eine Möglichkeit, die ich damit umgehen könnte, besteht darin, zu prüfen, ob beim Aufruf der API ein Fehler aufgetreten ist, also ein neues Token anzufordern und dann die API erneut aufzurufen. Wird der Benutzer bei der Anforderung eines neuen Tokens aufgefordert, sich erneut anzumelden? Ich könnte mir vorstellen, dass dies ein Problem wäre, wenn eine Seite auf meiner Website Daten von Facebook benötigt, aber um sie wiederzuerlangen, müssen sich die Benutzer wieder einloggen.

Ich kann nicht verstehen, wie andere Websites den Zugang zu Facebook aufrechterhalten, Google- oder Twitter-APIs, ohne dass ich mich erneut anmelden muss, insbesondere wenn ich auf einem anderen Gerät bin, auf dem ich mich nicht einmal bei Facebook, Twitter oder Google angemeldet habe. Wie machen sie das? Vielen Dank.

Antwort

4

Wenn die Authentifizierung mit Google OAuth2.0 erfolgt. Google stellt zwei Token zur Verfügung, nämlich Access Token und Refresh Token.

Zugriffstoken haben eine begrenzte Lebensdauer von 3600 Sekunden, aber Aktualisierungstoken sind für einen längeren Zeitraum gültig.

Refresh-Token auch ablaufen. Lesen "Token Ablauf" des Google OAuth2.0 Link

Man kann ohne erneute Anmeldung neue Zugriffstoken von Aktualisierungs-Token erhalten. ReST api

So kann man Logik implementiert haben, um die verstrichene Zeit zu überprüfen, nachdem das Zugriffstoken generiert wurde, und vorbeugende Schritte für die Generierung neuer Zugriffstoken zu unternehmen. Google-Token verfallen in 3600 Sekunden, so dass man nach etwa 3500 Sekunden Zugriff auf das Token erhalten kann und das ältere, mit neuen gespeicherten Token zur weiteren Verwendung aktualisiert. Auch eine andere Art und Weise könnte sein, Aktualisierungs-Token in GoogleCredential zu setzen, die als Parameter übergeben wird (httpRequestInitializer) während der Erstellung der Zustellung einer api. (Zum Beispiel sucht Drive.Builder)

Wenn Sie keine Aktualisierungs-Token zu speichern, von dem Zugang Token kann neu generiert werden, Sie müssen sich erneut authentifizieren, um ein neues Token zu erhalten.