Comment puis-je décoder la charge utile de JWT en utilisant JavaScript? Sans bibliothèque. Ainsi, le jeton renvoie simplement un objet de charge utile qui peut être consommé par mon application frontale.
Exemple de jeton: xxxxxxxxx.XXXXXXXX.xxxxxxxx
Et le résultat est la charge utile:
{exp: 10012016 name: john doe, scope:['admin']}
javascript
jwt
Chrisk8er
la source
la source
Réponses:
Fonction d'analyseur JWT de texte unicode de travail:
la source
JSON.parse(window.atob(base64))
pour que cela fonctionne. Justereturn JSON.parse(atob(base64));
après,postman.setEnvironmentVariable("userId", parseJwt(jsonData.access_token));
"access_token" est dans mon cas la clé de la valeur du token en réponse (peut différer dans votre cas).var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
jwt-decode
module car il est petit mais offre une meilleure gestion.Fonction simple avec try - catch
Merci!
la source
atob
a connu des problèmes UnicodeVous pouvez utiliser jwt-decode , vous pouvez donc écrire:
la source
vous pouvez utiliser la
atob()
fonction javascript pur pour décoder le jeton en une chaîne:ou l'analyser directement dans un objet json:
lire
atob()
etbtoa()
fonctions javascript intégrées Encodage et décodage Base64 - API Web | MDN .la source
@Peheje fonctionnera, mais vous aurez un problème avec unicode. Pour le corriger, j'utilise le code sur https://stackoverflow.com/a/30106551/5277071 ;
la source
Comme l'objet "window" n'est pas présent dans l'environnement nodejs, nous pourrions utiliser les lignes de code suivantes:
Cela fonctionne parfaitement pour moi. J'espère que ça aide.
la source
Si vous utilisez un nœud, vous devrez peut-être utiliser un package de tampon:
la source
J'utilise cette fonction pour obtenir la charge utile, l'en-tête, exp (heure d'expiration), iat (émis à) en fonction de cette réponse
la source
toutes les fonctionnalités de jwt.io ne prennent pas en charge toutes les langues. Dans NodeJs, vous pouvez utiliser
la source
J'ai trouvé ce code sur jwt.io et cela fonctionne bien.
Dans certains cas (certaines plates-formes de développement),
la meilleure réponse (pour l'instant) fait face à un problème de longueur de base64 non valide.
Donc, j'avais besoin d'un moyen plus stable.
J'espère que ça t'aidera.
la source
Guy et Peheje ont déjà répondu à la question. Pour un débutant total comme moi, il était utile d'avoir également défini la ligne d'importation dans l'exemple.
De plus, il m'a fallu quelques minutes pour comprendre que le jeton est l'ensemble complet des informations d'identification qui sont publiées (le jeton JWT entier, pas seulement la partie idToken). Simple une fois que vous le savez ..
la source
Solution NodeJS simple pour décoder un jeton Web JSON (JWT)
la source
Réponse basée sur GitHub - auth0 / jwt-decode . Modification de l'entrée / sortie pour inclure le fractionnement de chaîne et l'objet de retour {en-tête, charge utile, signature} afin que vous puissiez simplement passer tout le jeton.
la source
Voici une solution plus riche en fonctionnalités que je viens de faire après avoir étudié cette question:
Voici quelques exemples d'utilisation:
Je n'ai pas pu rendre ce fichier exécutable dans l'outil d'extrait de code StackOverflow, mais voici approximativement ce que vous verriez si vous exécutiez ce code:
J'ai fait que la
parseJwt
fonction retourne toujours un objet (dans une certaine mesure pour des raisons de typage statique).Cela vous permet d'utiliser une syntaxe telle que:
Ensuite, vous pouvez tester au moment de l'exécution des types d'erreurs spécifiques et éviter toute collision de noms.
Si quelqu'un peut penser à un faible effort, à des modifications de grande valeur de ce code, n'hésitez pas à modifier ma réponse au profit de
next(person)
.la source
Basé sur les réponses ici et ici :
la source
En exécutant Javascript node.js express, j'ai d'abord dû installer le package comme suit:
puis dans mon code app.js récupérez le package:
Exécutez ensuite le code:
Puis la magie:
la source