web-dev-qa-db-de.com

Was ist der Zweck eines "Refresh Token"?

Ich habe ein Programm, das in die YouTube Live Streaming API integriert ist. Es läuft auf Timern, daher war es für mich relativ einfach, alle 50 Minuten ein neues Zugriffstoken mit einem Aktualisierungstoken abzurufen. Meine Frage ist, warum?

Als ich mich bei YouTube authentifizierte, gab es mir ein Aktualisierungstoken. Ich verwende dieses Aktualisierungstoken dann, um ungefähr einmal pro Stunde ein neues Zugriffstoken zu erhalten. Wenn ich das Aktualisierungstoken habe, kann ich es IMMER verwenden, um ein neues Zugriffstoken zu erhalten, da es nie abläuft. Ich sehe also nicht, wie dies sicherer ist, als mir von Anfang an nur ein Zugriffstoken zu geben und mich nicht um das gesamte Refresh-Token-System zu kümmern.

57
Jason Axelrod

Grundsätzlich werden Aktualisierungstoken verwendet, um neue Zugriffstoken zu erhalten.

Um diese beiden Token klar zu unterscheiden und Verwechslungen zu vermeiden, finden Sie hier ihre Funktionen in The OAuth 2.0 Authorization Framework :

  • Zugriffstoken werden von einem Autorisierungsserver mit Genehmigung des Ressourcenbesitzers an Clients von Drittanbietern ausgegeben. Der Client verwendet das Zugriffstoken, um auf die geschützten Ressourcen zuzugreifen, die vom Ressourcenserver gehostet werden.
  • Aktualisierungstoken sind Anmeldeinformationen, mit denen Zugriffstoken abgerufen werden. Aktualisierungstoken werden vom Autorisierungsserver an den Client ausgegeben und werden verwendet, um ein neues Zugriffstoken zu erhalten, wenn das aktuelle Zugriffstoken ungültig wird oder abläuft, oder um zusätzliche Zugriffstoken mit identischem oder engerem Umfang zu erhalten.

Um Ihre Frage zu beantworten, warum Ihnen immer noch ein Aktualisierungstoken ausgestellt wurde, anstatt nur ein Zugriffstoken zu sichern, lautet der Hauptgrund, den die Internet Engineering Task Force in Aktualisierungstoken angegeben hat:

Es gibt einen Sicherheitsgrund, den refresh_token wird immer nur mit dem Autorisierungsserver ausgetauscht, während das access_token wird mit Ressourcenservern ausgetauscht. Dies verringert das Risiko, dass ein langlebiges access_token im "ein Zugriffstoken, das eine Stunde lang gültig ist, mit einem Aktualisierungstoken, das ein Jahr lang gültig oder bis zum Widerruf gültig ist" im Vergleich zu "einem Zugriffstoken, das bis zum Widerruf ohne Aktualisierung gültig ist" leckt Zeichen."

Für detailliertere und vollständigere Informationen zu OAuth 2.0 Flow) gehen Sie bitte die folgenden Referenzen durch:

35
Teyam

@Teyam Erwähnung SO post Warum hat OAuth v2 sowohl Zugriffs- als auch Aktualisierungstoken? Aber ich bevorzuge die andere Antwort dort: https: // stackoverflow.com/a/12885823/254109

TL; DR refresh_token bringt keine erhöhte Sicherheit. Es dient dem Zweck, die Skalierbarkeit und Leistung zu verbessern. Dann, access_token kann nur in einem schnellen, temporären Speicher (wie Speicher) gespeichert werden. Es ermöglicht auch die Autorisierung und die Trennung von Ressourcenservern.

4
xmedeko