WICHTIG: Diese Bibliothek validiert das Token nicht, jedes wohlgeformte JWT kann dekodiert werden. Sie sollten das Token in Ihrer serverseitigen Logik validieren, indem Sie etwas wie express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer usw. verwenden.
Dokumentation – Erste Schritte – Feedback
Mit NPM oder Yarn installieren.
Führen Sie npm install jwt-decode
oder yarn add jwt-decode
aus, um die Bibliothek zu installieren.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJ0eXAiO.../// jwt token" ;
const decoded = jwtDecode ( token ) ;
console . log ( decoded ) ;
/* prints:
* {
* foo: "bar",
* exp: 1393286893,
* iat: 1393268893
* }
*/
// decode header by passing in options (useful for when you need `kid` to verify a JWT):
const decodedHeader = jwtDecode ( token , { header : true } ) ;
console . log ( decodedHeader ) ;
/* prints:
* {
* typ: "JWT",
* alg: "HS256"
* }
*/
Hinweis: Ein falsches oder fehlerhaftes Token löst den Fehler InvalidTokenError
aus. Weitere Informationen zu bestimmten Fehlern finden Sie weiter unten.
Diese Bibliothek basiert auf atob()
, einer globalen Funktion, die in allen modernen Browsern sowie in jeder unterstützten Knotenumgebung verfügbar ist.
Um jwt-decode
in einer Umgebung zu verwenden, die keinen Zugriff auf atob()
hat (z. B. React Native), stellen Sie sicher, dass Sie die entsprechende Polyfüllung in Ihrer Anwendung bereitstellen, indem Sie core-js/stable/atob
verwenden:
import "core-js/stable/atob" ;
Alternativ können Sie auch selbst base-64
und polyfill global.atob
verwenden:
import { decode } from "base-64" ;
global . atob = decode ;
Diese Bibliothek funktioniert mit gültigen JSON-Web-Tokens. Das Grundformat dieser Token ist
[part1].[part2].[part3]
Alle Teile müssen gültige Base64-(URL)-codierte JSON-Dateien sein. Abhängig von der Option { header: <option> }
wird Teil 1 (nur wenn header: true angegeben ist) oder Teil 2 (Standard) dekodiert.
Die Nichteinhaltung des Formats führt zu einem InvalidTokenError
mit einer der folgenden Meldungen:
Invalid token specified: must be a string
=> das übergebene Token war kein String, diese Bibliothek funktioniert nur mit Strings.Invalid token specified: missing part #
=> Dies bedeutet wahrscheinlich, dass Ihnen ein Punkt ( .
) im Token fehltInvalid token specified: invalid base64 for part #
=> das Teil konnte nicht mit Base64 dekodiert werden (die Nachricht sollte den Fehler enthalten, den der Base64-Decoder ausgegeben hat)Invalid token specified: invalid json for part #
=> das Teil wurde korrekt Base64-dekodiert, der dekodierte Wert war jedoch kein gültiger JSON (die Nachricht sollte den Fehler enthalten, den der JSON-Parser ausgegeben hat) Der Rückgabetyp der jwtDecode
-Funktion wird durch die header
Eigenschaft des als zweites Argument übergebenen Objekts bestimmt. Wenn es weggelassen wird (oder auf „false“ gesetzt ist), wird JwtPayload
verwendet, wenn es „true“ ist, wird JwtHeader
verwendet. Bei Bedarf können Sie den erwarteten Rückgabetyp angeben, indem Sie ein Typargument an die jwtDecode
-Funktion übergeben.
Sie können sowohl JwtHeader
als auch JwtPayload
erweitern, um nicht standardmäßige Ansprüche oder Eigenschaften einzuschließen.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
Kopieren Sie die Datei jwt-decode.js
aus dem Stammverzeichnis des Ordners build/esm
irgendwo in Ihr Projekt und importieren Sie dann jwtDecode
daraus in ein Skript-Tag, das mit type="module"
gekennzeichnet ist:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
Wir freuen uns über Feedback und Beiträge zu diesem Repo! Bevor Sie beginnen, lesen Sie bitte Folgendes:
Um Feedback zu geben oder einen Fehler zu melden, melden Sie bitte ein Problem in unserem Issue-Tracker.
Bitte melden Sie Sicherheitslücken nicht im öffentlichen GitHub-Issue-Tracker. Das Responsible Disclosure Program beschreibt detailliert das Verfahren zur Offenlegung von Sicherheitsproblemen.
Auth0 ist eine einfach zu implementierende, anpassbare Authentifizierungs- und Autorisierungsplattform. Weitere Informationen finden Sie unter Warum Auth0?
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.