Aller au contenu

Express et JWT

JWT (JSON Web Token) permet d’authentifier un utilisateur lors de chaque appel d'un point d'interface logicielle.

  • Le jeton est généré par le serveur, qui s’assure que l’utilisateur est bien celui qu’il prétend.
  • Le jeton est envoyé au client et ce dernier le conserve dans un témoin pour l’utiliser à chaque appel d'un point d'interface logicielle.
  • Un intergiciel du côté du serveur valide chaque appel d'un point d'interface logicielle en vérifiant le jeton.
  • Si le jeton n’est pas valide, le point d'interface logicielle ne retourne pas de données.

Installer le module pour créer et valider les jetons

console
npm install jsonwebtoken @types/jsonwebtoken

La variable d'environnement dans dev

config/.env.development
{!api_avec_jwt_25/config/.env.development!}

Exposer la variable dans ENV

src/common/constants/ENV.ts
{!api_avec_jwt_25/src/common/constants/ENV.ts!}

Passer à ES2022

/tsconfig.json
{!api_avec_jwt_25/tsconfig.json!}

Le modèle User (Ajouter UserLogin)

src/models/User.ts
{!api_avec_jwt_25/src/models/User.ts!}

Le service de génération de jetons

src/services/JetonService.ts
{!api_avec_jwt_25/src/services/JetonService.ts!}

Le chemin pour les jetons

src/common/constants/Paths.ts
{!api_avec_jwt_25/src/common/constants/Paths.ts!}

La route

src/routes/JetonRoutes.ts
{!api_avec_jwt_25/src/routes/JetonRoutes.ts!}

Le Router

src/routes/index.ts
{!api_avec_jwt_25/src/routes/index.ts!}

L'intergiciel pour valider les jetons

src/services/authenticateToken.ts
{!api_avec_jwt_25/src/services/authenticateToken.ts!}

Ajouter l'intergiciel au serveur

src/server.ts
{!api_avec_jwt_25/src/server.ts!}

Configurer Bruno pour utiliser les jetons

  1. Créer variable de collection.
    Bruno - Créer une variable de collection

  2. Créer une requête GET pour obtenir un jeton. Bruno - Créer une requête GET pour obtenir un jeton

  3. Dans Script, ajouter le code suivant pour conserver le jeton dans une variable d'environnement.

    bru.setEnvVar("jwttoken", res.body.token)
    

  4. Dans la collection, ajouter la variable dans l'auth Bearer Token
    Bruno - Créer une requête GET pour obtenir un jeton

  5. Créer une requête GET pour obtenir les données. Bruno - Ajouter le jeton à la requête GET

  6. Exécuter la requête de génération avant celle du GET pour obtenir les données.