Welcome to Our Website

JSON Web Token (JWT) explained (Français)

JSON Web Token est un standard utilisé pour créer des jetons d’accès pour une application.

cela fonctionne de cette façon: le serveur génère un jeton qui certifie l’identité de l’utilisateur, et l’envoie au client.

le client renverra le jeton au serveur pour chaque requête suivante, afin que le serveur sache que la requête provient d’une identité particulière.

cette architecture s’avère très efficace dans les applications Web modernes, où après l’authentification de l’utilisateur, nous effectuons des requêtes D’API soit vers une API REST soit vers une API GraphQL.

qui utilise JWT?, Google, par exemple. Si vous utilisez les API Google, vous utiliserez JWT.

un JWT est signé cryptographiquement (mais pas crypté, donc l’utilisation de HTTPS est obligatoire lors du stockage des données utilisateur dans le JWT), il y a donc une garantie que nous pouvons lui faire confiance lorsque nous le recevons, car aucun intermédiaire ne peut l’intercepter et le modifier, ou les données qu’il contient, sans l’invalider.

cela dit, Les JWT sont souvent critiqués pour leur utilisation excessive, et surtout pour leur utilisation lorsque des solutions moins problématiques peuvent être utilisées.

Vous devez vous faire une opinion sur le sujet., Je ne plaide pas pour une technologie plutôt qu’une autre, je présente simplement toutes les opportunités et tous les outils que vous avez à votre disposition.

à Quoi servent-elles? Principalement L’authentification API et l’autorisation de serveur à serveur.

comment un jeton JWT est-il généré?

l’Aide d’un Noeud.,js vous pouvez générer la première partie du jeton en utilisant ce code:

const header = { "alg": "HS256", "typ": "JWT" }const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64')

Nous définissons l’algorithme de signature sur HMAC SHA256 (JWT prend en charge plusieurs algorithmes), puis nous créons un tampon à partir de cet objet, et nous l’encodons en utilisant Base64.

Le résultat partiel est eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

ensuite, nous ajoutons la charge utile, que nous pouvons personnaliser avec n’importe quel type de données., Il existe des clés réservées, notamment iss Et exp qui identifient l’émetteur et l’heure d’expiration du jeton.

Vous pouvez ajouter vos propres données pour le jeton à l’aide d’un objet:

const payload = { username: 'Flavio' }

Nous convertir cet objet, JSON-codée, d’une mémoire Tampon et on encode le résultat à l’aide de base64, comme nous l’avons fait avant:

const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64')

Dans ce cas, le résultat partiel est eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

ensuite, nous obtenons une signature de l’en-tête et du contenu de la charge utile, ce qui garantit que notre contenu ne peut pas être modifié même s’il est intercepté car notre signature sera invalidée. Pour ce faire, nous utiliserons le module de nœudcrypto:

Nous utilisons la clé secrètesecretKey et créerons une représentation codée en base64 de la signature cryptée.,

La valeur de la signature dans notre cas

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Nous avons presque terminé, nous avons juste besoin de concaténer les 3 parties de la tête, la charge utile et la signature en les séparant par un point:

const jwt = `${encodedHeader}.${encodedPayload}.${signature}`

l’API d’authentification

C’est probablement la seule façon rationnelle de l’utilisation de JWT.

un scénario courant est le suivant: vous vous inscrivez à un service et téléchargez un JWT à partir du tableau de bord du service. C’est ce que vous utiliserez désormais pour authentifier toutes vos demandes auprès du serveur.,

Un autre cas d’utilisation, qui est le contraire, envoie le JWT lorsque vous gérez L’API et que les clients se connectent à vous, et vous voulez que vos utilisateurs envoient des demandes ultérieures en passant simplement le jeton.

Dans ce cas, le client doit stocker le jeton quelque part. Où est le meilleur endroit? Dans un cookie HttpOnly. Les autres méthodes sont toutes sujettes aux attaques XSS et en tant que telles, elles doivent être évitées. Un cookie HttpOnly n’est pas accessible depuis JavaScript et est automatiquement envoyé au serveur d’origine à chaque demande, il convient donc parfaitement au cas d’utilisation.,

choisissez la meilleure bibliothèque JWT

selon la langue et l’environnement que vous utilisez, vous pouvez choisir parmi un certain nombre de bibliothèques. Les plus populaires sont répertoriés dans le jwt.io site web.

N’utilisez pas JWTs comme jetons de session

Vous ne devez pas utiliser JWTs pour les sessions. Utilisez un mécanisme de session côté serveur régulier, car il est beaucoup plus efficace et moins sujet à l’exposition des données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *