IMPORTANT : Cette bibliothèque ne valide pas le jeton, tout JWT bien formé peut être décodé. Vous devez valider le jeton dans votre logique côté serveur en utilisant quelque chose comme express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer, etc.
Documentation - Mise en route - Commentaires
Installez avec NPM ou Yarn.
Exécutez npm install jwt-decode
ou yarn add jwt-decode
pour installer la bibliothèque.
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"
* }
*/
Remarque : Un jeton faux ou mal formé générera une erreur InvalidTokenError
; voir ci-dessous pour plus d’informations sur des erreurs spécifiques.
Cette bibliothèque s'appuie sur atob()
, qui est une fonction globale disponible sur tous les navigateurs modernes ainsi que sur tous les environnements de nœuds pris en charge.
Afin d'utiliser jwt-decode
dans un environnement qui n'a pas accès à atob()
(par exemple React Native), assurez-vous de fournir le polyfill correspondant dans votre application en utilisant core-js/stable/atob
:
import "core-js/stable/atob" ;
Alternativement, vous pouvez également utiliser vous-même base-64
et polyfill global.atob
:
import { decode } from "base-64" ;
global . atob = decode ;
Cette bibliothèque fonctionne avec des jetons Web JSON valides. Le format de base de ces jetons est
[part1].[part2].[part3]
Toutes les parties sont censées être un json codé en base64 (url) valide. En fonction de l'option { header: <option> }
, il décodera la partie 1 (uniquement si header: true est spécifié) ou la partie 2 (par défaut)
Le non-respect du format entraînera une InvalidTokenError
avec l'un des messages suivants :
Invalid token specified: must be a string
=> le jeton passé n'était pas une chaîne, cette bibliothèque ne fonctionne que sur les chaînes.Invalid token specified: missing part #
=> cela signifie probablement qu'il vous manque un point ( .
) dans le jetonInvalid token specified: invalid base64 for part #
=> la pièce n'a pas pu être décodée en base64 (le message doit contenir l'erreur donnée par le décodeur base64)Invalid token specified: invalid json for part #
=> la pièce a été correctement décodée en base64, cependant, la valeur décodée n'était pas un JSON valide (le message doit contenir l'erreur donnée par l'analyseur JSON) Le type de retour de la fonction jwtDecode
est déterminé par la propriété header
de l'objet passé en deuxième argument. S'il est omis (ou défini sur false), il utilisera JwtPayload
, s'il est vrai, il utilisera JwtHeader
. Si nécessaire, vous pouvez spécifier quel doit être le type de retour attendu en passant un argument de type à la fonction jwtDecode
.
Vous pouvez étendre JwtHeader
et JwtPayload
pour inclure des revendications ou des propriétés non standard.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
Copiez le fichier jwt-decode.js
de la racine du dossier build/esm
vers votre projet quelque part, puis importez jwtDecode
à partir de celui-ci dans une balise de script marquée type="module"
:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
Nous apprécions les commentaires et les contributions à ce dépôt ! Avant de commencer, veuillez consulter les éléments suivants :
Pour fournir des commentaires ou signaler un bug, veuillez signaler un problème sur notre outil de suivi des problèmes.
Veuillez ne pas signaler les failles de sécurité sur le système de suivi des problèmes public GitHub. Le programme de divulgation responsable détaille la procédure de divulgation des problèmes de sécurité.
Auth0 est une plateforme d'authentification et d'autorisation facile à mettre en œuvre et adaptable. Pour en savoir plus, consultez Pourquoi Auth0 ?
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus d'informations.