2017-08-01 2 views
1

Ich versuche zu verstehen, wie JWT-Token-Authentifizierung in meiner App zu implementieren.App mit JWT (oauth?) Flow

Wie ich verstehe, Eingaben Benutzer Anmeldeinformationen (Benutzer + Passwort) in Login-Anfrage und erhält sowohl Access-Token (sagen 30 Minuten) und Refresh-Token (sagen 60 Tage).

Immer wenn das Access Token abläuft, benutze ich username + refreshtoken, um ein neues Access Token zu erstellen.

1) Erste Frage: ist es normal, dass, wenn dies geschieht, sind alle meine Anfragen Home-Bildschirm schlagen fehl, bis ich den neuen Inhalt bekommen und dann Ich muss die Anforderungen mit dem neuen neu senden Zugangstoken?. Oder sollte ich die Token-Validierung in einem Begrüßungsbildschirm vor jedem anderen App-Flow tun?

Dies wird so lange fortgesetzt, bis 60 Tage vergangen sind und das Aktualisierungstoken abgelaufen ist. Was geschieht hier?

Ich kann mich nicht erinnern, jemals Facebook oder (fast) jede App meine Anmeldedaten erneut anfordern.

2) Ist das Passwort gespeichert, damit die App erneut eine Hintergrundanmeldung durchführen kann? , um beide Tokens abzurufen? (Ich will nicht das Kennwort speichern in irgendeiner Weise)

-

3) Oder ist die Refresh-Token someway aktualisiert, bevor es abläuft? (Es ist zum Beispiel aufgefrischt, solange halten Nutzer die App 60 Tage vor Eröffnung)

+1

Frage3 - JWT (JSON Web Token) automatische Verlängerung des Ablaufs: https://Stackoverflow.com/a/26834685/2124535 Aufschlussreiche Kommentare von Auth0 dev – nathan

Antwort

0

1) erster Weg ist OK, falls Sie glatte Erfahrung Benutzer - z.B. Sie können den JWT-Ablauffehler von jedem anderen Fehler unterscheiden und die Aktualisierung des Zugriffstokens durchführen, ohne einen Fehler anzuzeigen. Der zweite Weg wird ebenfalls verwendet, bitte beziehen Sie sich auf das sogenannte "JWT Sliding Expiration" und betrachten Sie seine Vor- und Nachteile. Die Hauptsache ist - ist es in Ordnung, dass viele gültige Zugriffstoken in Ihrer Autorisierungsserver (AS) -Datenbank existieren?

2) z. B. irgendwie verwandt RFC besagt nicht, dass solch ein Hintergrund JWT Update-Flow auf diese Weise nicht empfohlen wird. In Anbetracht dessen, dass eine solche Entität als Aktualisierungstoken verwendet werden könnte, um neue Zugriffstoken zu erhalten, kann ihre Kompromittierung zu ernsteren Konsequenzen führen. Daher kann das Anfordern einer Art von Benutzeraktion vor Aktualisierung des Aktualisierungs-Tokens als eine bessere Vorgehensweise bewertet werden.

3) Natürlich sollten Sie den Fall in Betracht ziehen, wenn AS den Fehler "Refresh Token Expiration" auslöst. Nehmen wir an, Sie haben Zugriff Token + Refresh-Token-Paket, Sie haben zwei Arten von Fehlern, nur um sie zu unterscheiden - "Token-Validierungsfehler" (allgemein, Sie wissen nicht, was mit Ihrem Token falsch ist) und allgemeine "Fehler "(was eindeutig nicht mit Tokens zusammenhängt).

  1. Sie führen eine Anfrage aus. Die Antwort lautet "Token-Validierungsfehler". Sie schlagen vor, dass das Zugriffstoken abgelaufen ist, und führen Sie den Aktualisierungsfluss für den Zugriffstoken mit Ihrem Aktualisierungstoken durch.
  2. Sie erhalten die Antwort "Token Validierungsfehler" erneut. Sie schlagen vor, dass Ihr Aktualisierungstoken veraltet ist, und starten Sie den Aktualisierungstoken für Aktualisierungstoken.

So einfacher Workflow mit JWT kann aussehen.

Verwandte Themen