# TP - Implémentation de l'algorithme de génération d'un JWT en NodeJS ## Objectifs Implémenter **avec la librairie standard** (pas d'installation de modules supplémentaires) de NodeJS un algorithme permettant de générer un [JWT](https://jwt.io/introduction/) valide. ## Environnement technique - NodeJS LTS (v8.9.4) ## Critères d'évaluation du résultat | Critères | Bonus | |----------|-------| | Le script ne contient pas d'erreur de syntaxe. || | Le code est commenté. || | Soit un objet et un secret défini préalablement, le script doit afficher sur la sortie standard un JWS valide, vérifiable via [l'outil en ligne de débuggage](https://jwt.io/#debugger) | Le secret et les attributs à encoder dans le JWT sont passable par arguments au script. ||
### Super bonus (pour les plus rapides/motivés) Implémenter en installant le module [express](http://expressjs.com/en/starter/installing.html) et [body-parser](https://github.com/expressjs/body-parser) une micro-application web servant les routes suivantes: #### GET /login Affiche une simple page avec un formulaire de login/mot de passe. Ceux ci peuvent être en dur dans le code de l'application. #### POST /login Route recevant les paramètres `username` et `password` du formulaire précédent et générant un JWT avec les informations d'identification de l'utilisateur (un simple attribut `username` dans le `payload` est suffisant). Le JWT doit être affiché dans la page de réponse. #### GET /profile?jwt={token} Route affichant les éléments encodés dans le JWT passé en paramètre. L'absence de JWT valide devrait provoquer des erreurs 401/403 suivant les cas. ## Ressources documentaires - [Documentation JWT](https://jwt.io/introduction/) - [NodeJS LTS pour Windows](https://nodejs.org/en/download/) - [Créer une application NodeJS avec Visual Studio Code sur Windows](https://code.visualstudio.com/docs/runtimes/nodejs) - [Module `crypto`](https://nodejs.org/dist/latest-v6.x/docs/api/crypto.html) de NodeJS