Si tu n'es pas à l'aise avec le concept d'authentification, j'ai concocté il y a quelques mois un article qui explique comment ça fonctionne de manière simple et claire !

🔓 C’est quoi l’authentification ?
Petit disclaimer: si tu n’es pas à l’aise avec les concepts de requêtes HTTP je te conseille de commencer par lire la mini-série “Comment fonctionne une web-app”. Bonne lecture ! 🤩 L’Authentification est la première pierre fondatrice de toute web-application.En anglais, on utilise le terme “auth…

Dans cet article on voit ce qu'est le concept d'authentification et comment fonctionne la "basic auth".

Aujourd'hui la plupart des sites n'utilise plus la "basic auth" mais l'authentification basée sur les tokens !

Alors maintenant que tu maitrises l'authentification, on va voir ensemble à quoi servent les tokens d'accès !

💡 Récap: Pourquoi s'authentifier ?

Quand tu réalises une action sur un site, comme publier un post linkedin, il est nécessaire pour linkedin de vérifier que c'est bien toi "Jean-Michel Dubois" qui écrit le post. Sinon n'importe qui pourrait écrire des posts à la place d'autres personnes ...

C'est pour cela que chaque requête doit être authentifiée. Comme quand tu passes la douane, ton passeport permet de savoir que tu es bien "Jean-Michel Dubois".

Le flow d'authentification

🛃 Etape 1: envoyer ses credentials

La première étape pour s'authentifier c'est de remplir tes "credentials", c'est à dire envoyer au site ton email + mot de passe.

Le site vérifie que le mot de passe envoyé correspond bien au mot de passe de ton compte.

Et si cela correspond, tu vas avoir le droit d'accéder au site et de réaliser des actions avec ton compte.

Mais il est impensable que tu doives remplir ce formulaire à chaque fois que tu fais un clic sur le site !

C'est donc à ce moment que le site va te renvoyer un token d'accès que tu pourras utiliser ensuite.

Etape 2: obtenir un token d'accès

Tes credentials ( email + mot de passe ) c'est ton passeport, il a une durée illimitée mais c'est un document très sensible. Si tu te le fais piquer c'est la catastrophe. Donc il faut éviter au maximum d'envoyer tes credentials au site et de les stocker sur ton ordinateur via le navigateur.

Donc pour éviter ça tout en permettant d'authentifier toutes tes requêtes, quand tu te connectes au site, il va te renvoyer un token d'accès, qui est un laisser-passer temporaire.

Ce token d'accès te donne les mêmes droits que ton passeport mais pendant un temps limité.

Il y a quoi dans un access token ?

Souvent les access token sont des JWT, des Json Web Token.

C'est un format un peu particulier mais très pratique !

Un JWT est une chaîne de caractères comme ceci:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Ce JWT n'est pas lisible quand il est encodé, mais quand il est décodé il y a des informations à l'intérieur:

{
  "id_utilisateur": "1234567890",
  "name": "jean-Michel Dubois",
  "token_will_expire_at": 1516239022 // = 22 novembre 2023 14h:00:00
}

Et là on comprends tout !

Il y a deux informations cruciales:

  • ton ID utilisateur qui permet au backend du site de savoir QUI tu es !
  • la date d'expiration de ce token !

Voilà!

Je ne vais pas rentrer plus ici dans les détails techniques, mais voici donc le système de "visa temporaire" utilisé sur tous les sites et apps !

C'est quoi le rapport entre les tokens d'accès et les cyberattaques ?

Tu l'as bien compris, tes access tokens pour accéder à tes sites sont stockés sur ton ordinateur, dans ton navigateur.

Ce sont tes visa pour visiter tes sites sans envoyer tes credentials.

Donc si quelqu'un te vole tes tokens d'accès, cette personne peut agir à ta place sur le site.

C'est pourquoi le vol de tokens est une technique de cyberattaque extrêmement répandue, et c'est ce qu'on verra toute cette semaine, dès demain !

Pour ne rien rater tu peux t'inscrire pour recevoir chaque article directement par mail ! Tu peux aussi t'abonner sur Linkedin 😎

License

Toute cette mini-série est open-source. ( ouaip il y a pas que le code qui peut être open-source ! )

La license choisie signifie que tu peux faire ce que tu veux avec son contenu tant que tu me crédites 😎. royal au bar j'ai dit !

Tech me about it: "comment se protéger des cyberattaques | pour startups et PME" © 2022 by Tancrède Simonin is licensed under Attribution 4.0 International