Entwicklertools · JWT Decoder
JWT exp, iat und nbf: NumericDate ist Sekunden, nicht Millisekunden
· Wie es funktioniert
jwt Zeitstempel Debugging
JavaScript gibt Ihnen Millisekunden und JWT möchte Sekunden, sodass Zeitstempel um den Faktor tausend falsch sind. Dieser Beitrag erklärt NumericDate und wie man die drei Zeitangaben richtig liest.
Token, die niemals ablaufen oder vor ihrer Ankunft ablaufen – die beiden Symptome eines Einheitenfehlers
Ein Fehler um den Faktor eintausend führt zu dramatischen Symptomen. Die Bereitstellung von JavaScript-Millisekunden, während ein Token-Produzent Epochensekunden erwartet, kann einen Ablauf um Tausende von Jahren hinauszögern. Durch erneutes Teilen eines Sekundenwerts kann dieser in die Nähe von 1970 gebracht werden, sodass ein neu ausgestelltes Token vor seiner ersten legitimen Anforderung als abgelaufen erscheint.
Ein Decoder hilft bei der Darstellung des Maßstabs, indem er die numerische Angabe neben einem ISO-Wert anzeigt. Diese Anzeige dient nur der Diagnose. Ein Angreifer kann jede `exp`-, `iat`- oder `nbf`-Nummer in eine nicht signierte oder gefälschte Nutzlast schreiben, sodass die konvertierte Uhrzeit erst nach Signatur und Richtlinienvalidierung an anderer Stelle Autorität hat.
NumericDate in RFC 7519 – Sekunden seit der Unix-Epoche, als JSON-Zahl, wobei Brüche erlaubt, aber selten verwendet werden
JWT Zeitansprüche verwenden eine NumericDate-Darstellung: eine JSON Zahl, die Sekunden ab der Unix-Epoche zählt. Bruchzahlen können Sekundenbruchteile darstellen, da die Implementierung den Wert mit 1,000 multipliziert, bevor ein Datum erstellt wird. Eine gültige endliche Zahl wird nicht zuerst auf eine ganze Zahl gerundet.
ToolAcre erkennt `exp`, `nbf`, `iat`, `auth_time` und `updated_at` als zeitförmige Felder zur Anzeige. Nur die ersten drei gehören zu den Beschreibungen der eingetragenen Ansprüche. Nicht numerische, unendliche oder ungültige Datumsergebnisse werden weggelassen und nicht als aussagekräftige Zeiten gerendert, wodurch verhindert wird, dass eine Zeichenfolge wie „bald“ als Zeitstempel getarnt wird.
Date.now() ist Millisekunden – die JavaScript-Gewohnheit, die zu Abläufen in ferner Zukunft führt
`Date.now()` gibt Millisekunden zurück, während ein NumericDate-Wert in Sekunden ausgedrückt wird. Ein Produzent, der einen Anspruch aus der Browseruhr ableitet, benötigt daher eine explizite Skalierungskonvertierung, üblicherweise eine Division durch 1,000, bevor er seine eigene Rundungsrichtlinie anwendet. Der ToolAcre-Lesepfad führt die inverse Multiplikation ausschließlich zur Anzeige durch.
Halten Sie die Einheitenumrechnung in der Codeüberprüfung sichtbar. Ein dreizehnstelliger Wert in `exp` ist ein nützliches Warnzeichen, aber das Zählen der Ziffern stellt keine Überprüfung dar und kann den Vertrag des Herstellers nicht ersetzen. Der Decoder versucht, jede endliche numerische Behauptung darzustellen, die JavaScript Date darstellen kann; Millisekunden werden nicht stillschweigend in Sekunden uminterpretiert.
exp, nbf und iat – läuft ab, nicht vor und ausgestellt am, und wie ein Prüfer sie jeweils anwendet
`exp` benennt die Zeit, nach der ein Verifizierer einen Token gemäß seiner Richtlinie nicht mehr akzeptieren sollte. `nbf` benennt eine Grenze, vor der es nicht akzeptiert werden soll. `iat` zeichnet einen Ausstellungszeitpunkt auf. ToolAcre kennzeichnet diese Bedeutungen und vergleicht nur `exp` und `nbf` mit der bereitgestellten Referenzuhr.
Der zurückgegebene Status ist `expired`, wenn der dekodierte Ablauf früher als jetzt liegt, `future`, wenn das Nicht-Vorher später als jetzt liegt, und `past` für die anderen angezeigten Zeitansprüche. Bei diesen Bezeichnungen handelt es sich um Beobachtungen zur Nutzlastarithmetik. Sie stellen keine Authentifizierungsentscheidung dar und bewerten weder Aussteller noch Zielgruppe, Schlüssel oder Signatur.
Taktunterschiede und Spielraum liegen beim Prüfer; Dieser Decoder definiert weder das eine noch das andere
In der Gliederung wurde gefragt, wie viel Taktversatz sinnvoll ist, aber weder die JWT-Decoderkonfiguration noch die Implementierung definieren einen Spielraum. Diese Nummer gehört dem Verifizierer und seinen Bereitstellungsanforderungen. Die Erfindung einer Standardeinstellung würde einen Inspektionsartikel in eine undokumentierte Sicherheitsrichtlinie verwandeln, weshalb dieser Abschnitt absichtlich keine enthält.
Wenn ein Dienst ein Token in der Nähe einer Grenze ablehnt, vergleichen Sie die Dienstuhr, die Ausstelleruhr und die konfigurierte Prüfrichtlinie mithilfe vertrauenswürdiger Protokolle. ToolAcre löst Ansprüche gegen das aktuelle Datum des Browsers ohne Toleranzfenster auf. Das Ergebnis kann daher von einem Server abweichen, der absichtlich Spielraum einräumt, selbst wenn beide die gleiche Zahl analysieren.
Funktioniertes Beispiel – Konvertieren eines Beispiel-Exp-Werts in eine für Menschen lesbare Zeit und Vergleichen mit iat
Angenommen, eine synthetische Nutzlast enthält `iat: 1717243200` und `exp: 1717246800`. Die Multiplikation mit 1,000 ergibt die ISO-Momente `2024-06-01T12:00:00.000Z` und `2024-06-01T13:00:00.000Z`. Das Subtrahieren der rohen Sekundenwerte ergibt ein einstündiges Intervall, ohne Browser-Millisekunden in die Berechnung einzubeziehen.
Diese Arithmetik beschreibt, was die Nutzlast sagt. Es zeigt nicht, dass der Emittent diese Werte gewählt hat oder dass eine Stunde für irgendeine Anwendung geeignet ist. ToolAcre druckt die Zahlen hübsch aus, generiert UTC-Zeilen und nennt den Ablauf möglicherweise alt im Vergleich zum heutigen Tag. Ein Verifizierer muss seine eigenen Akzeptanzregeln unabhängig authentifizieren und durchsetzen.
Was dies nicht abdeckt – ob ein bestimmter Server das Token akzeptiert, was von seiner Uhr und seinem Spielraum abhängt; Ein Decoder zeigt die Werte an, nicht das Urteil
Ein Decoder kann nicht vorhersagen, ob ein bestimmter Server das Token akzeptiert. Der Server verwendet möglicherweise eine andere Uhr, eine konfigurierte Toleranz, ein strengeres Anspruchsschema oder zusätzliche Emittenten- und Zielgruppenprüfungen. Allein ein Signaturfehler kann ein Token ablehnen, dessen angezeigte NumericDates völlig normal aussehen.
Umgekehrt macht ein in der Zukunft liegendes Ablaufdatum einen nicht verifizierten Token nicht gültig. Nutzen Sie den Zeitplan als eine Möglichkeit, wahrscheinliche Gerätefehler zu erkennen und Beweise für die Fehlerbehebung zu sammeln. Das eigentliche Urteil gehört in Serverprotokolle oder einen kontrollierten Verifizierungstest mit dem erwarteten Schlüssel und der erwarteten Richtlinie, niemals in das Dekodierfeld.
Fazit: Lesen Sie die Behauptungen, rechnen Sie – der ToolAcre JWT-Decoder zeigt exp, iat und nbf an, sodass Sie die Einheiten selbst überprüfen können
Lesen Sie die Ansprüche und führen Sie die Skalierungsarithmetik bewusst durch: NumericDate-Sekunden werden nur an der Datumsgrenze zu JavaScript-Millisekunden. ToolAcre macht diese Multiplikation in der Quelle explizit und zeigt den resultierenden ISO-Wert an, während fehlerhafte Zeittypen ignoriert werden, anstatt zu erraten, was ihre Autoren beabsichtigt haben.
Halten Sie die Sicherheitsunterscheidung gleichermaßen explizit. Eine `exp`-Anzeige ist keine Ablaufdurchsetzung, eine `nbf`-Anzeige ist keine Zugangskontrolle und `iat` ist kein Ausstellungsnachweis. Nachdem Sie einen Wegwerf-Token überprüft haben, verwenden Sie den vertrauenswürdigen Verifizierer, um ihn zu authentifizieren und die Echtuhr- und Anspruchsrichtlinie des Dienstes anzuwenden.