2016-08-04 71 views
1

Im Zusammenhang mit OAuth 2, wie geht man mit dem Ablauf von refresh_token um?Implementieren von OAuth-Aktualisierungstoken, die niemals ablaufen

Ich verwende JSON Web Token (JWTs) als access_token s mit einer kurzen Lebensdauer (läuft nach 20 Minuten ab). Von dem, was ich verstehe, bedeutet dies, dass ich die access_token nicht speichern, nur validieren muss (und konsumieren die vertrauenswürdigen Informationen innerhalb, wie Bereiche).

Allerdings frage ich mich, wie man refresh_token s implementiert. In meiner Forschung habe ich gesehen, dass Google und andere refresh_token s haben, die für immer gut sind, es sei denn, sie werden aus verschiedenen Gründen widerrufen. Ich nehme an, dies bedeutet, dass das System alle jemals ausgegebenen Aktualisierungstokens speichern muss, damit sie als widerrufen markiert werden können.

Ist das ein Problem, wenn es um die Aufbewahrung der Tokens geht? Es scheint, als ob Sie eine potentiell unendliche Menge von Tokens haben, die für immer gespeichert und zugänglich sein müssen.

Fehle ich etwas? Gibt es Best Practices für die Implementierung von Aktualisierungstoken? Sollten sie JWTs sein (oder NICHT sein)? Sollten die access_token auch bei Verwendung von JWTs gespeichert werden? Wenn ja, gibt es einen Grund, sie über ihre Verfallszeit hinaus zu behalten? Was ist mit JWT-Geheimnissen, die sich im Laufe der Zeit ändern?

Antwort

1

Es war eine gute Frage, und refresh_tokens gewohnt ist, in der Regel verfallen, so dass die Anwendung neue Zugriffstoken in regelmäßigen Abständen, ohne fragen die Benutzer erzeugen kann, muss

Aber die Anwendung neu zu authentifizieren Beschränkungen für die Anzahl der aktiven Durchsetzung Aktualisieren Sie Token für einen einzelnen Client. Beispiel:

Jeder OAuth-Client kann maximal 20 aktive refresh_token haben. Wenn dieses Limit erreicht wird, muss das älteste Token widerrufen werden und das neue Token muss gewährt werden, ohne die Anfrage abzulehnen.

Und auch wenn ein Refresh-Token für einen bestimmten Zeitraum (6 Monate) nicht verbraucht wird, dann muss auch das Token widerrufen werden.

Auf diese Weise, Sie Begrenzung auf refresh_token Verbrauch durchsetzen kann, und hier ist der Haken, das ist, wie Google auch tut,

Siehe Google OAuth2 Doc