Qu’est-ce que les Json Web Token (JWT) et pourquoi les utiliser ?

grand stratège gaulois
3 min readApr 1, 2021

--

Qu’est ce qu’un JWT ?

Un json web token est composé de 3 chaînes de caractère séparées par des points et encodées qui correspondent à 3 objets en json une fois décodées. La structure de ces objets est standardisée. Le premier objet correspond au header, il contient les méta datas du token, une clef pour l’algorithme utilisé et une clef pour le type (ici JWT). Le second objet correspond au payload, c’est à dire aux données que l’on veut faire passer à travers le token par exemple des informations utilisateurs. Le troisième objet correspond à la signature, c’est une sécurité utilisée pour vérifier que les informations du token n’ont pas été compromises.

json web token exemple

Pourquoi utiliser un JWT ?

Le client n’est pas obligé de repasser par le serveur à chaque fois qu’il a besoin de vérifier l’identité ou l’autorisation que contient le token. Il lui suffit de décoder la signature.

Pour expliquer plus en détail l’intérêt des JWT nous allons observer une situation qui utilise un système d’authentification avec des tokens simples sans signature.

token simple

Dans cette situation l’utilisateur se connecte et reçoit un token depuis le serveur d’authentification. Ce token est ensuite envoyé au front. Le front devra ensuite faire une requête au serveur d’authentification pour vérifier que le token correspond à un utilisateur à chaque fois qu’il veut faire une opération sensible.

Cette architecture est problématique car elle nécessite beaucoup d’appels au serveur d’authentification, plus le nombre d’utilisateur augmente plus ces appels représenteront une charge pour le serveur d’authentification.

Pour éviter ces appels inutiles, nous allons encoder le token à l’aide d’une signature et lui donner une date de péremption. De cette manière le front n’aura pas besoin de faire d’appel au serveur et pourra vérifier par lui même la validité du token en vérifiant sa signature.

Json Web Token

Sécurité et JWT

  • Il est préférable d’opter dans la mesure du possible pour une signature asymétrique utilisant une paire de clef publique et privée afin d’éviter de diffuser une clef secrète dans le front pourrait être utilisée pour générer des tokens valide à la volée.
  • Il est recommandé d’utiliser un système permettant de faire tourner les clefs et de ne pas utiliser les mêmes trop souvent.
  • Il faut vérifier et utiliser toutes les autres propriétés de sécurité lié au token : définir des dates d’expiration pas trop longue et les vérifier (“exp”), vérifier l’identité de l’entité délivrant le token (“iss”), vérifier l’identité de l’entité recevant le token (“aud”), (“iat”, “nbf”, …)
  • Ne pas utiliser les JWT en tant qu’objet de session. (http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/)

Technical specification

--

--

grand stratège gaulois
grand stratège gaulois

Written by grand stratège gaulois

0 Followers

javascript full stack

No responses yet