Leitfaden: Autorisierung verwalten

Übersicht

Dieser Leitfaden beschreibt die Vorgehensweisen zur Verwaltung von Geräteautorisierungstoken in Frame.io, einschließlich der Aktualisierung und Sperrung von Token sowie der sicheren Speicherung.

Voraussetzungen

Bitte lesen Sie den Leitfaden C2C implementieren: Einrichtung, um eine korrekte Konfiguration sicherzustellen.

Erforderliche wesentliche Komponenten:

Autorisierungstoken verstehen

Unser vorheriger Leitfaden zur Geräteauthentifizierung skizzierte den Prozess des Erhalts von anfänglichen Autorisierungstoken durch die Benutzerauthentifizierung.Zugriffstoken behalten die Funktionalität etwa 8 Stunden lang bei.Um häufiges erneutes Koppeln der Geräte zu vermeiden, nutzen wir den offline-Gültigkeitsbereich, um neben der Autorisierung auch einen Aktualisierungstoken zu erhalten.Dieser Aktualisierungstoken ermöglicht die Generierung neuer Zugriffstoken nach Ablauf.

Aktualisierungstoken bleiben 14 Tage lang gültig.Diese bewusste Begrenzung der Gültigkeitsdauer von Zugriffstoken erhöht die Sicherheit, indem sie potenzielle Sicherheitslücken durch kompromittierte Token minimiert.Beachten Sie, dass eine erneute Authentifizierung des Benutzenden erforderlich ist, wenn die Autorisierung nicht vor Ablauf des Aktualisierungstokens verlängert wird.

Zugriffstoken-Erneuerungsprozess

Nach Ablauf des Zugriffstokens erhalten API-Anfragen diese Antwort:

1{
2 "code": 401,
3 "errors": [
4 {
5 "code": 401,
6 "detail": "You are not allowed to access that resource",
7 "status": 401,
8 "title": "Not Authorized"
9 }
10 ],
11 "message": "Not Authorized"
12}

Führen Sie den folgenden Befehl aus, um einen neuen Token zu erhalten:

$curl -X POST https://api.frame.io/v2/auth/token \
> --header 'x-client-version: 2.0.0' \
> --form 'client_id=[client_id]' \
> --form 'client_secret=[client_secret]' \
> --form 'grant_type=refresh_token' \
> --form 'refresh_token=[refresh_token]' \
> | python -m json.tool
Spezifikation des API-Endpunkts

Eine ausführliche Dokumentation zu /v2/auth/token erhalten Sie hier

Diese Implementierung erfordert mehrere Authentifizierungsfaktoren, um die Sicherheit zu erhöhen.Ein Unbefugter müsste sowohl den refresh_token als auch das client_secret in seinen Besitz bringen, um sich erfolgreich als Ihre Integration auszugeben.

Eine erfolgreiche Verlängerung führt zu dieser Antwort:

1{
2 "access_token": "[access_token]",
3 "expires_in": 28800,
4 "refresh_token": "[refresh_token]",
5 "token_type": "bearer"
6}

Nach erfolgreicher Aktualisierung des Tokens werden Ihre vorherigen Anmeldedaten ungültig.Stellen Sie sicher, dass die neuen Autorisierungstoken ordnungsgemäß gespeichert werden.

Der Versuch, einen abgelaufenen Aktualisierungstoken erneut zu verwenden, führt zu:

1{
2 "error": "invalid_request"
3}

Dies zeigt an, dass der Token zuvor verarbeitet wurde und nicht mehr gültig ist.

401 während einer Aktualisierung erhalten

Der Empfang der Antwort 401 Not Authorized während der Tokenaktualisierung weist darauf hin, dass die Anmeldedaten ungültig werden, was einen neuen Autorisierungsprozess erfordert.

Fehlgeschlagene Aktualisierungsantworten verarbeiten

Da refresh_token-Werte nur einmal verwendet werden können, muss die gesamte Authentifizierungs- und Autorisierungssequenz neu gestartet werden, wenn die Aktualisierungsantwort nicht erfasst wird – sei es aufgrund einer Netzwerkunterbrechung oder eines Systemabsturzes.

Dieses Sicherheitsprotokoll mag zwar unter Umständen unbequem sein, ist jedoch für die Aufrechterhaltung der Systemintegrität unerlässlich.

Tokensperrprozess

Die Umstände können die Beendigung des Frame.io-Zugriffs, wie Projektabschluss oder Anwendungsrücksetzung, erfordern.Führen Sie bei der Aufhebung der aktuellen Autorisierung angemessene Widerrufsverfahren ein.

Führen Sie den folgenden Befehl aus, um die Autorisierung aufzuheben:

Erneute Autorisierung

Nach dem Widerruf müssen Sie den Authentifizierungs- und Autorisierungsprozess neu starten, wie im Leitfaden zur Authentifizierung und Autorisierung beschrieben.

$curl -X POST https://api.frame.io/v2/auth/revoke \
> --include \
> --header 'x-client-version: 2.0.0' \
> --form 'client_id=[client_id]' \
> --form 'client_secret=[client_secret]' \
> --form 'token=[refresh_token]'
Spezifikation des API-Endpunkts

Eine ausführliche Dokumentation zu /v2/auth/revoke erhalten Sie hier

Das System gibt Header ohne Payload zurück.Der Erfolg wird durch den Statuscode 200 angezeigt:

HTTP/2 200
...

Nach dem Widerruf geben Frame.io-Vorgänge, die eine Authentifizierung per access_token erfordern, den Fehler Not Authorized zurück.Um den Zugriff wiederherzustellen, muss das Gerät erneut mit dem Projekt gekoppelt werden.

Tokenspeicherimplementierung

Um die Autorisierung auch nach einem Neustart des Systems aufrechtzuerhalten, ist eine sichere Speicherung der Token erforderlich.Halten Sie sich an diese grundlegenden Richtlinien:

Benutzerzugriffskontrollen implementieren: Beschränken Sie die Sichtbarkeit von Token und den Zugriff ausschließlich auf Anwendungsprozesse.Speicherverschlüsselung aktivieren: Implementieren Sie die Verschlüsselung für gespeicherte Token, einschließlich client_secret und Autorisierungsanmeldedaten.Bewahren Sie Autorisierungsschlüssel niemals im Klartext auf.Anmeldedaten trennen: Während unsere Python-Demoanwendung die Speicherung konsolidiert, sollten Produktionsumgebungen Autorisierungstoken und client_secret voneinander trennen.Berücksichtigen Sie folgende Faktoren:

  • client_secret und client_id stehen für permanente Geräteanmeldeinformationen – ein Verlust führt zu einem dauerhaften Geräteausfall
  • Autorisierungstoken werden während des Gerätebetriebs regelmäßig aktualisiert
  • Durch die getrennte Speicherung wird sichergestellt, dass bei einer Beschädigung des Tokenspeichers nur eine erneute Kopplung des Geräts erforderlich ist, anstatt die Authentifizierung vollständig zurückzusetzen

SQLite bietet zwar optimale Tokenspeicherfunktionen, implementiert aber mindestens einen separaten Speicher für Autorisierungsdaten und Core-Anmeldedaten.

Nächste Schritte

Wir freuen uns über Ihre Fortschritte. Als Nächstes können Sie mit dem Leitfaden für Verbindungsstatus und Heartbeats fortfahren.Bei Fragen oder Bedenken wenden Sie sich bitte an unser Team.