44 lines
2.0 KiB
Markdown
44 lines
2.0 KiB
Markdown
|
# 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. ||
|
|||
|
|
|||
|
<div style="page-break-after:always"></div>
|
|||
|
|
|||
|
### 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
|