PASETO vs JWT

Advanced Ecosystem 🔴 Senior

Définition

PASETO (Platform-Agnostic Security Tokens) est un format de jeton conçu pour éliminer les pièges de JWT : pas d'en-tête « alg » négociable, donc aucune attaque par confusion d'algorithme ou « alg: none ». Chaque jeton porte sa version et son but : v4.local est chiffré et authentifié (XChaCha20-Poly1305, clé symétrique), v4.public est signé (Ed25519) et lisible. On perd l'interopérabilité universelle de JWT et de ses profils (OpenID Connect).

Analogie

JWT est une enveloppe où l'expéditeur choisit lui-même le type de cachet, parfois « aucun » ; PASETO impose un seul cachet infalsifiable par version.

Exemple de code

import { V4 } from 'paseto';

// Signature (v4.public) : payload lisible, non modifiable
const { secretKey, publicKey } = await V4.generateKey('public');
const token = await V4.sign(
  { sub: 'user_42', role: 'admin' },
  secretKey,
  { expiresIn: '15m', audience: 'api', issuer: 'auth' },
);
// v4.public.eyJzdWIiOiJ1c2VyXzQyIi...  (version + but dans le préfixe)

const payload = await V4.verify(token, publicKey, { audience: 'api' });
// Aucun paramètre « algorithms » à sécuriser : il n'y a qu'Ed25519.

Cas d'usage

Jetons internes entre vos propres services ou sessions stateless, quand vous maîtrisez les deux bouts et voulez supprimer une classe entière de vulnérabilités.

Anti-pattern

Remplacer les id_token OpenID Connect par PASETO : les fournisseurs d'identité et les bibliothèques attendent du JWT.
#security#authentication

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre