JSON Web Tokens (JWT)

JSON Web Token (JWT) est un standard ouvert (RFC 7519) qui définit une manière compacte et autonome d'échanger des informations entre parties en tant qu'objet JSON. Ces informations peuvent être vérifiées et font confiance parce qu'elles sont signées numériquement. JWTs sont souvent utilisés pour l'authentification et l'échange d'informations sécurisées entre différentes parties.

Structure d'un JWT

Un JWT est composé de trois parties : l'en-tête (header), la charge utile (payload), et la signature. Chaque partie est séparée par un point (.).

        
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
        
    

Structure détaillée

1. En-tête (Header): Contient le type du jeton (JWT) et le type de l'algorithme de hachage utilisé pour signer le jeton.

        
{
  "alg": "HS256",
  "typ": "JWT"
}
        
    

2. Charge utile (Payload): Contient les revendications. Les revendications sont des déclarations sur une entité (généralement l'utilisateur) et des métadonnées additionnelles.

        
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
        
    

3. Signature: Utilise la clé secrète pour signer la combinaison de l'en-tête et de la charge utile.

Exemple de décodage

En utilisant une bibliothèque JWT appropriée, le JWT peut être décodé pour obtenir les informations de la charge utile.

        
const jwt = require('jsonwebtoken');

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';

const decoded = jwt.verify(token, 'your_secret_key');

console.log(decoded);