Wie kann ich die Nutzlast von JWT mit JavaScript dekodieren? Ohne Bibliothek. Das Token gibt also nur ein Nutzdatenobjekt zurück, das von meiner Front-End-App verwendet werden kann.
Beispiel-Token: xxxxxxxxx.XXXXXXXX.xxxxxxxx
Und das Ergebnis ist die Nutzlast:
{exp: 10012016 name: john doe, scope:['admin']}
javascript
jwt
Chrisk8er
quelle
quelle
Antworten:
JWT-Parserfunktion für Unicode-Text:
quelle
JSON.parse(window.atob(base64))
, damit es funktioniert. Inreturn JSON.parse(atob(base64));
diesempostman.setEnvironmentVariable("userId", parseJwt(jsonData.access_token));
Fall ist "access_token" in meinem Fall der Schlüssel für den Wert des Tokens als Antwort (kann in Ihrem Fall abweichen).var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
jwt-decode
Modul zu verwenden, weil es klein ist, aber etwas besser zu handhaben ist.Einfache Funktion mit try - catch
Vielen Dank!
quelle
atob
hat Unicode-ProblemeSie können jwt-decode verwenden , um dann zu schreiben:
quelle
Sie können die reine Javascript-
atob()
Funktion verwenden, um Token in eine Zeichenfolge zu dekodieren:oder analysieren Sie es direkt in ein JSON-Objekt:
lesen über
atob()
undbtoa()
Integrieren von Javascript-Funktionen Base64-Codierung und -Decodierung - Web-APIs | MDN .quelle
@ Peheje wird funktionieren, aber Sie werden Probleme mit Unicode haben. Um dies zu beheben, verwende ich den Code unter https://stackoverflow.com/a/30106551/5277071 ;
quelle
Da das "Fenster" -Objekt in der Umgebung von nodejs nicht vorhanden ist, können wir die folgenden Codezeilen verwenden:
Es funktioniert perfekt für mich. Ich hoffe es hilft.
quelle
Wenn Sie einen Knoten verwenden, müssen Sie möglicherweise ein Pufferpaket verwenden:
quelle
Ich benutze diese Funktion, um Nutzlast, Header, Exp (Ablaufzeit), iat (Issued At) basierend auf dieser Antwort zu erhalten
quelle
Alle Funktionen von jwt.io unterstützen nicht alle Sprachen. In NodeJs können Sie verwenden
quelle
Ich habe diesen Code bei jwt.io gefunden und er funktioniert gut.
In einigen Fällen (auf bestimmten Entwicklungsplattformen) ist
die beste Antwort (vorerst) mit einem Problem ungültiger base64-Länge konfrontiert.
Also brauchte ich einen stabileren Weg.
Ich hoffe es würde dir helfen.
quelle
Sowohl Guy als auch Peheje haben die Frage bereits beantwortet. Für einen Anfänger wie mich war es hilfreich, auch die Importzeile im Beispiel definiert zu haben.
Außerdem habe ich einige Minuten gebraucht, um herauszufinden, dass das Token der vollständige Satz von Anmeldeinformationen ist, die zurückgesendet werden (das gesamte JWT-Token, nicht nur der idToken-Teil davon). Einfach, sobald Sie es wissen ..
quelle
Einfache NodeJS-Lösung zum Dekodieren eines JSON-Web-Tokens (JWT)
quelle
Antwort basierend auf GitHub - auth0 / jwt-decode . Die Eingabe / Ausgabe wurde so geändert, dass sie das Teilen von Zeichenfolgen und das Rückgabeobjekt {Header, Payload, Signatur} enthält, sodass Sie einfach das gesamte Token übergeben können.
quelle
Hier ist eine funktionsreichere Lösung, die ich gerade nach dem Studium dieser Frage gemacht habe:
Hier sind einige Anwendungsbeispiele:
Ich war nicht in der Lage, dies im StackOverflow-Code-Snippet-Tool ausführbar zu machen, aber hier ist ungefähr das, was Sie sehen würden, wenn Sie diesen Code ausführen würden:
Ich habe das gemacht
parseJwt
Funktion immer ein Objekt zurückgibt (bis zu einem gewissen Grad aus Gründen der statischen Typisierung).Auf diese Weise können Sie folgende Syntax verwenden:
Anschließend können Sie zur Laufzeit auf bestimmte Fehlertypen testen und Namenskollisionen vermeiden.
Wenn sich jemand Änderungen mit geringem Aufwand und hohem Wert für diesen Code vorstellen kann, können Sie meine Antwort zum Nutzen von bearbeiten
next(person)
.quelle
Basierend auf Antworten hier und hier :
quelle
Mit Javascript node.js express musste ich das Paket zuerst wie folgt installieren:
dann in meinem app.js Code bekomme ich das Paket:
Führen Sie dann den Code aus:
Dann die Magie:
quelle