Exp und Iat für JWT können nicht korrekt gesetzt werden

8

Ich bin ein bisschen ratlos. Ich versuche ein gültiges JWT einzurichten. Ich verwende node.js mit der jsonwebtoken Middleware. Ich habe die Dokumentation auf dem Repo ( hier ) verfolgt, aber ich bekomme immer wieder das falsche Exp und Iat. Offensichtlich möchte ich das richtig machen, damit ich keine JWTs erlaube, die abgelaufen sind.

Als Test habe ich folgenden Code:

%Vor%

Die Ausgabe davon ist:

%Vor%

Wie bekomme ich den Zeitstempel, der nicht die Javascript-Epoche widerspiegelt, sondern die Zeit in 1 Stunde? (sowohl für die iat und exp.)

    
Ebbs 24.10.2015, 19:28
quelle

2 Antworten

2

Nach dem, was Krzysztof Sztompka geschrieben hat, konnte ich das Ext das korrekte Ablaufdatum anzeigen lassen. (meine ursprüngliche Anforderung war für 1 Stunde in der Zukunft)

Um die Änderung gegenüber früheren Fehlern im Auge zu behalten, werde ich den obigen Code nicht aktualisieren, daher habe ich Folgendes geändert:

%Vor%

Die console.logs zeigen jetzt, dass die Ext so ist, wie ich es wollte, jetzt + 1 Stunde.

Damit das Iat das korrekte Datum anzeigt (nachdem es in der sign -Funktion gesetzt und dann in der Funktion decode überprüft wurde), musste ich es als Teil der Payload setzen. Ich habe meine Antwort hier

erhalten

Damit das Iat endlich korrekt angezeigt wird, habe ich es wie hier gezeigt in die Payload eingefügt:

%Vor%

Dies ergibt eine Ausgabe von:

%Vor%

Dies ist das unverschlüsselte JWT, das ich an die Benutzer zurücksende, wenn sie sich erfolgreich angemeldet haben und es mir erlauben zu überprüfen, ob die JWT noch gültig ist und noch nicht abgelaufen ist.

    
Ebbs 25.10.2015, 09:20
quelle
10

Dies:

%Vor%

geben Sie Zeit in Millisekunden. Aber die Zeit in jwt token (iat, exp) ist in Sekunden, deshalb müssen wir das Ergebnis durch 1000 dividieren.

%Vor%

So erhalten Sie in Sekundenschnelle Zeit:

%Vor%

Wenn Sie in 1 Stunde brauchen:

%Vor%

weil 1h = 60min * 60s

Und in diesem Moment haben Sie Zeit in Sekunden von jwt token und berechnete Zeit in Sekunden. Sie sollten diese Werte nur vergleichen.

Genau in Ihrer Situation sollten Sie die Token-Zeit mit Ihrer tatsächlichen Zeit in Sekunden vergleichen. Wenn die Ablaufzeit des JWT-Tokens größer als die tatsächliche Zeit ist, bedeutet dies, dass sie noch gültig ist. Aus Dokumenten von JWT-Token:

  

Die Verarbeitung des Exp-Anspruchs setzt voraus, dass das aktuelle Datum / die aktuelle Uhrzeit vor dem im Exp-Anspruch aufgeführten Ablaufdatum / -zeitpunkt liegen muss.

Bearbeiten:

Um das Coorect-Datum von iat zu erhalten, multiplizieren Sie den Wert mit 1000 und fügen Sie den neuen Date-Konstruktor hinzu:

%Vor%     
Krzysztof Sztompka 24.10.2015 20:08
quelle