JSON Web Tokens (JWT) est une technologie standard ouverte (RFC 7519) qui permet l'échange sécurisé d'informations entre les parties sous la forme d'un objet JSON. Ces informations peuvent être vérifiées et fiables car elles sont signées numériquement. Les JWT peuvent être signés à l'aide d'un secret (avec l'algorithme HMAC) ou d'une paire de clés publique/privée utilisant RSA ou ECDSA.
Dans NodeJS, nous pouvons utiliser des packages comme jsonwebtoken pour travailler avec les JWT. Dans ce tutoriel, nous allons explorer comment générer un JWT dans NodeJS.
Installation
Pour commencer, nous devons installer le package jsonwebtoken. Vous pouvez le faire en utilisant npm (Node Package Manager) avec la commande suivante :
Une fois installé, vous pouvez l'importer dans votre fichier en utilisant :
Créer un JWT
Pour créer un JWT, nous utilisons la fonction sign() du package jsonwebtoken. Cette fonction accepte trois arguments :
- La charge utile, qui est un objet JSON contenant les revendications. Les revendications sont des déclarations sur une entité (généralement l'utilisateur) et des informations supplémentaires.
- Le secret, qui est une chaîne utilisée pour signer le jeton. Ce secret doit être gardé en sécurité et ne doit jamais être révélé.
- Les options, qui sont un objet contenant des options supplémentaires telles que l'algorithme de signature et la validité du jeton.
Voici un exemple :
Dans cet exemple, la charge utile contient trois revendications : id, name et admin. Le secret est « s3cr3t » et le jeton expire dans 2 heures.
Vérification d'un JWT
Une fois que vous avez créé un JWT, vous pouvez vérifier sa signature et décoder la charge utile à l'aide de la fonction verify() du package jsonwebtoken. Cette fonction accepte trois arguments :
- Le jeton, qui est la chaîne JWT que vous souhaitez vérifier.
- Le secret, qui est la même chaîne utilisée pour signer le jeton.
- Les options, qui sont un objet contenant des options supplémentaires, telles que l'algorithme de signature.
Voici un exemple :
Dans cet exemple, la fonction verify() renvoie la charge utile décodée si le jeton est valide. Si le jeton n'est pas valide (par exemple, si la signature ne correspond pas), la fonction générera une erreur.
Conclusion
Travailler avec des JWT dans NodeJS est simple et direct grâce au package jsonwebtoken. Ce package fournit des fonctions de création et de vérification de JWT, vous permettant de mettre en œuvre une authentification et une autorisation sécurisées dans vos applications NodeJS.
Il est important de se rappeler que les JWT sont aussi sécurisés que le secret utilisé pour les signer. Assurez-vous donc de garder votre secret en sécurité et de ne jamais le révéler. De plus, les JWT sont codés et non chiffrés, ce qui signifie que toute personne obtenant le jeton pourra décoder la charge utile. Par conséquent, ne placez jamais d'informations sensibles dans la charge utile d'un JWT.