Laufen Google-Aktualisierungstoken ab?

108

Ich habe das Aktualisierungstoken in kurzer Zeit mehrmals zu Testzwecken verwendet, frage mich jedoch, ob Google-Aktualisierungstoken jemals ablaufen. Kann ich dasselbe Aktualisierungstoken verwenden, um über einen längeren Zeitraum (eine Woche oder sogar Monate) immer wieder ein anderes Zugriffstoken zu erhalten?

Robin Carlo Katakutan
quelle
Verwenden Sie Ruby oder haben Sie ein Codebeispiel dafür?
Thufir

Antworten:

146

Der vom Google Auth-Server ausgegebene Aktualisierungstoken läuft nie ab - das ist der springende Punkt bei den Aktualisierungstoken. Das Aktualisierungstoken läuft ab (oder ich sollte sagen, dass es nicht autorisiert wird), wenn der Benutzer den Zugriff auf Ihre Anwendung widerruft.

In diesem Dokument wird die Funktion von Aktualisierungstoken klar angegeben.

Anstatt ein langlebiges Token auszugeben (normalerweise ein Jahr oder eine unbegrenzte Lebensdauer), kann der Server ein kurzlebiges Zugriffstoken und ein langlebiges Aktualisierungstoken ausstellen. Kurz gesagt, Sie können Aktualisierungstoken immer wieder verwenden, bis der Benutzer, der den Zugriff autorisiert hat, den Zugriff auf Ihre Anwendung widerruft.

Schatten
quelle
6
Der Teil "gut für ein Jahr" macht es nicht ganz so klar, wie Sie vorschlagen; Da dies in der Praxis jedoch keine Probleme zu verursachen scheint, gehe ich davon aus, dass das Aktualisierungstoken immergrün ist.
Mahemoff
54
Ablauf des Tokens Sie sollten Ihren Code schreiben, um die Möglichkeit zu antizipieren, dass ein gewährtes Token möglicherweise nicht mehr funktioniert. Ein Token funktioniert möglicherweise aus einem der folgenden Gründe nicht mehr: Der Benutzer hat den Zugriff widerrufen. Der Token wurde seit sechs Monaten nicht mehr verwendet. Das Benutzerkonto hat eine bestimmte Anzahl von Tokenanforderungen überschritten. Derzeit gibt es ein Limit von 25 Token pro Google-Benutzerkonto. Wenn ein Benutzerkonto über 25 gültige Token verfügt, ist die nächste Authentifizierungsanforderung erfolgreich, macht jedoch das älteste ausstehende Token ohne vom Benutzer sichtbare Warnung ungültig. (von developer.google.com/accounts/docs/OAuth2 )
Bazik
17
'langlebiges' Aktualisierungstoken ist etwas anderes als 'niemals ablaufen'.
Kapé
1
Wie kann Ihr Code prüfen, ob Ihr Aktualisierungstoken noch gültig ist?
SsjCosty
3
@Shadow Wenn das Aktualisierungstoken wie vorgeschlagen selten abläuft, warum stellt Google dann nicht einfach ein nicht ablaufendes Zugriffstoken aus? Soweit ich weiß, kann das mit oAuth 2.0 ausgestellte Zugriffstoken dann verwendet werden, um ein Aktualisierungstoken anzufordern. Warum nicht einfach ein permanentes Zugriffstoken haben und den zusätzlichen Aufruf für das Aktualisierungstoken ausschalten?
Charles Robertson
62

Dies ist ein sehr verwirrender Thread. Die erste Antwort scheint richtig zu sein, zitiert aber eigentlich nichts Autorisierendes von Google.

Die definitivste Antwort, die ich gefunden habe, ist tatsächlich auf dem Spielplatz des Entwicklers, auf dem Sie den Token erhalten. In Schritt 2 befindet sich unten eine Notiz mit der Aufschrift:

"Hinweis: Auf dem OAuth-Spielplatz werden keine Aktualisierungstoken gespeichert. Da Aktualisierungstoken jedoch nie ablaufen, sollte der Benutzer die Seite für den autorisierten Zugriff auf das Google-Konto aufrufen, wenn er sie manuell widerrufen möchte."

https://developers.google.com/oauthplayground/

Josh Hunter
quelle
2
Die beste Antwort hier - warum niemand upvoted hat, ist unglaublich - vielen Dank - behandeln Sie Aktualisierungstoken so, als ob sie niemals ablaufen. Bei der Anmeldeprüfung für eine neue, falls der Benutzer das Aktualisierungstoken widerruft, stellt Google in diesem Szenario ein neues Aktualisierungstoken bereit Bei der Anmeldung aktualisieren Sie einfach das Aktualisierungstoken
danday74
14

Ich denke nicht, dass das ganz richtig ist:

Beachten Sie, dass die Anzahl der ausgegebenen Aktualisierungstoken begrenzt ist. Ein Limit pro Client / Benutzer-Kombination und ein weiteres pro Benutzer für alle Clients. Sie sollten Aktualisierungstoken im Langzeitspeicher speichern und weiter verwenden, solange sie gültig bleiben. Wenn Ihre Anwendung zu viele Aktualisierungstoken anfordert, kann dies zu Einschränkungen führen. In diesem Fall funktionieren ältere Aktualisierungstoken nicht mehr.

von dieser Seite: https://developers.google.com/youtube/v3/guides/authentication#installed-apps

Das stammt aus den youTube-Dokumenten (die ich als viel besser empfinde als andere API-Dokumente), aber ich denke, dass sie für alle Google Apps gleich sind.

Roader
quelle
5

Sieh dir das an:

Aktualisierungstoken sind gültig, bis der Benutzer den Zugriff widerruft. Dieses Feld ist nur vorhanden, wenn access_type = offline in der Autorisierungscode-Anforderung enthalten ist.

in https://developers.google.com/accounts/docs/OAuth2WebServer

karl
quelle
5

Die Regeln haben sich irgendwann im Jahr 2017 geändert. Die beste Antwort ist meiner Meinung nach, dass dies vom Produkt abhängt. In der Google Mail-API läuft das Oauth 2.0-Aktualisierungstoken beispielsweise bei einer Kennwortänderung ab. Siehe diese https://support.google.com/a/answer/6328616?hl=de

Früher haben wir den API-Zugriff im Voraus eingerichtet und Aktualisierungstoken generiert, wenn wir NEUE Google Mail-Benutzer eingerichtet haben. Anschließend konnten wir ihre E-Mails archivieren (dies ist gesetzlich vorgeschrieben). Sobald sie jedoch ihr Kennwort ändern, wird das Aktualisierungstoken angezeigt wird widerrufen.

Vielleicht ist das Aktualisierungstoken für Youtube, Karten noch sehr langlebig, aber für Google Mail-API können Sie sich auf ein kurzes Token verlassen.

TonyE
quelle
Sieht so aus, als wäre es am 5. Oktober 2016 offiziell geworden. Developers.googleblog.com/2016/09/…
TonyE
2

Das Hauptkonzept des Aktualisierungstokens ist, dass es langlebig ist und niemals abläuft.

Das Zugriffstoken hat eine Ablaufzeit und es läuft ab. Sobald es abgelaufen ist, können wir das Aktualisierungstoken abrufen, das immer wieder verwendet wird, bis der Benutzer von seinem Konto zurücktritt.

Shiven Ojha
quelle
0

Lesen Sie dies unter: https://developers.google.com/identity/protocols/oauth2#expiration Sie müssen Ihren Code schreiben, um die Möglichkeit zu antizipieren, dass ein gewährtes Aktualisierungstoken möglicherweise nicht mehr funktioniert. Ein Aktualisierungstoken funktioniert möglicherweise aus einem der folgenden Gründe nicht mehr:

Der Benutzer hat den Zugriff Ihrer App widerrufen. Das Aktualisierungstoken wurde seit sechs Monaten nicht mehr verwendet. Der Benutzer hat die Kennwörter geändert und das Aktualisierungstoken enthält Google Mail-Bereiche. Das Benutzerkonto hat eine maximale Anzahl von gewährten (Live-) Aktualisierungstoken überschritten. Derzeit gibt es ein Limit von 50 Aktualisierungstoken pro Benutzerkonto und Client. Wenn das Limit erreicht ist, macht das Erstellen eines neuen Aktualisierungstokens das älteste Aktualisierungstoken automatisch ohne Warnung ungültig. Diese Begrenzung gilt nicht für Dienstkonten.

Es gibt auch eine größere Begrenzung für die Gesamtzahl der Aktualisierungstoken, die ein Benutzerkonto oder Dienstkonto auf allen Clients haben kann. Die meisten normalen Benutzer werden dieses Limit nicht überschreiten, das Testkonto eines Entwicklers jedoch möglicherweise.

Jos Luijten
quelle
-2

Ich habe weitere Nachforschungen angestellt und es scheint, dass das Google-Zugriffstoken zum Abrufen eines Aktualisierungstokens während der ersten "Offline" -Anforderung verwendet wird. Ab diesem Zeitpunkt wird das Aktualisierungstoken verwendet, um ein neues Zugriffstoken auszugeben. Die Idee ist, dass ein Zugriffstoken ein kurzfristiges Token ist, das jedoch durch ein langfristiges Aktualisierungstoken erneuert werden kann. Dadurch entfällt die Notwendigkeit, die URL-Codevariable anzufordern, die einen Zwei-Endpunkt-Ansatz erfordert und mithilfe einer referrerbasierten Anforderung initiiert werden muss:

http://www.jensbits.com/2012/01/09/google-api-offline-access-using-oauth-2-0-refresh-token/

Einige REST-API-Dienste wie Dropbox stellen Zugriffstoken aus, die für immer gültig sind, aber Google stellt kurzfristige Zugriffstoken aus. PayPal verwendet einen Kompromiss, mit dem Zugriffstoken ohne Durchsetzung des URI-Referrers abgerufen werden können. Dies bedeutet, dass Zugriffstoken abgerufen werden können, ohne auf einen Link klicken zu müssen, um den Prozess zu starten. Aufgrund der Google-Methodik sollten API-Routinen nur nach Bedarf aufgerufen werden. Im Wesentlichen werden Anrufe über verweisbasierte Verfahren initiiert. Dies wird durch die Ausgabe von kurzlebigen Zugriffstoken oder Zugriffstoken gesteuert, die in einer Kette aktualisiert werden müssen. Dies erfordert, dass Entwickler genauer überlegen, wie ein System ablaufen soll.

Charles Robertson
quelle