Aller au contenu

Exercice 11 : Tester une API avec JWT et Postman

Dans cet exercice, vous allez utiliser Postman pour tester une API qui nécessite une authentification par JSON Web Token (JWT). Nous utiliserons l'API publique DummyJSON pour observer comment les jetons sont transmis via les cookies et les en-têtes.

Objectifs

  • Observer l'automatisation de l'authentification via les cookies dans Postman.
  • Apprendre à gérer (consulter/effacer) les cookies dans un outil de test.
  • Configurer manuellement un jeton dans l'en-tête Authorization.

Étape 1 : Tenter l'accès sans authentification

Avant de vous connecter, essayez de récupérer vos informations de profil.

  1. Ouvrez Postman.
  2. Créez une nouvelle requête GET vers l'URL suivante :
    https://dummyjson.com/auth/me
  3. Cliquez sur Send.
  4. Résultat attendu : Vous devriez recevoir une erreur 401 Unauthorized ou un message indiquant que le jeton est manquant.

Étape 2 : Se connecter (Login)

Pour obtenir un JWT, vous devez envoyer vos identifiants à la route d'authentification.

  1. Créez une nouvelle requête POST vers :
    https://dummyjson.com/auth/login
  2. Allez dans l'onglet Body, sélectionnez raw et choisissez JSON.
  3. Entrez les identifiants de test suivants :
    {
      "username": "emilys",
      "password": "emilyspass"
    }
    
  4. Cliquez sur Send.
  5. Observation : En plus de l'objet JSON reçu, l'API DummyJSON envoie un cookie contenant le jeton.

Étape 3 : La "magie" des cookies

  1. Retournez sur votre première requête GET https://dummyjson.com/auth/me.
  2. Cliquez sur Send à nouveau (sans rien changer).
  3. Résultat attendu : Ça fonctionne ! Vous recevez les données de "Emily".
  4. Pourquoi ? Postman a automatiquement enregistré le cookie reçu lors du login et l'a renvoyé avec votre requête, exactement comme le ferait un navigateur web.

Étape 4 : Comment effacer les cookies dans Postman

Pour tester une déconnexion ou un comportement sans cookie, il faut savoir les supprimer.

  1. Dans Postman, juste en dessous du bouton Send, cliquez sur le lien bleu Cookies.
  2. Une fenêtre s'ouvre montrant les cookies stockés pour dummyjson.com.
  3. Cliquez sur le X à côté du cookie pour le supprimer, ou cliquez sur Clear all.
  4. Fermez la fenêtre.

Étape 5 : Tester à nouveau (Vérification)

  1. Cliquez à nouveau sur Send pour la requête GET /auth/me.
  2. Résultat attendu : Vous devriez être à nouveau bloqué avec une erreur 401.

Étape 6 : Ajout manuel du JWT dans l'en-tête

Parfois, les APIs n'utilisent pas les cookies (cas des applications mobiles ou de certains microservices). Il faut alors envoyer le jeton manuellement.

  1. Retournez dans la réponse de votre requête de Login (Étape 2) et copiez la valeur de l'accessToken.
  2. Retournez sur la requête GET /auth/me.
  3. Allez dans l'onglet Authorization.
  4. Dans le menu Type, choisissez Bearer Token.
  5. Collez votre jeton dans le champ Token.
  6. Cliquez sur Send.
  7. Résultat attendu : La requête fonctionne à nouveau ! Vous avez manuellement ajouté l'en-tête Authorization: Bearer <votre_jeton>.

Part 2 : Cas réel - Extraire un jeton de Microsoft Teams

Dans cette partie, vous allez extraire un jeton réel utilisé par votre navigateur pour communiquer avec les serveurs de Microsoft Teams.

Étape 1 : S'authentifier à Teams

  1. Ouvrez un nouvel onglet et connectez-vous à teams.microsoft.com.
  2. Une fois connecté, ouvrez les Outils de développement de votre navigateur (F12 ou clic droit > Inspecter).

Étape 2 : Chercher le jeton dans les cookies

  1. Allez dans l'onglet Application (Chrome/Edge) ou Stockage (Firefox).
  2. Dans le menu de gauche, déroulez Cookies et sélectionnez https://teams.microsoft.com (ou le domaine actif).
  3. Cherchez un cookie nommé authtoken.
  4. Sa valeur est une longue chaîne de caractères. Copiez cette valeur.

Étape 3 : Extraire et inspecter le JWT

  1. La valeur du cookie contient souvent des informations supplémentaires. Identifiez la partie qui ressemble à un JWT (partie1.partie2.partie3).
  2. Allez sur jwt.io et collez votre jeton.
  3. Observations :
  4. Remarquez que l'algorithme utilisé est RS256 (Asymétrique).
  5. Explorez les claims : vous devriez voir votre nom, votre courriel institutionnel et l'identifiant de l'organisation (tenant).

Étape 4 : Tester l'API de Teams avec Postman

Nous allons tenter d'appeler une route de l'API Teams qui donne des informations sur votre organisation.

  1. Dans Postman, créez une requête GET vers :
    https://teams.cloud.microsoft/api/mt/amer/beta/users/tenantsv2
  2. Cliquez sur Send.
  3. Résultat : Erreur 401 Unauthorized.
  4. Allez dans l'onglet Authorization, choisissez Bearer Token et collez votre jeton Teams.
  5. Cliquez sur Send.
  6. Résultat : Vous devriez maintenant voir des informations JSON sur votre "Tenant" (votre CÉGEP), confirmant que vous avez réussi à "usurper" l'identité de votre propre navigateur pour parler à l'API de Microsoft !