Depuis la 0.12, JJWT expose une API fluide de construction et d’analyse (Jwts.builder()…signWith(key, alg) et Jwts.parser().verifyWith(key)…parseSignedClaims(token)), Jwts.SIG regroupant les algorithmes. La bibliothèque est livrée en trois artefacts : jjwt-api à la compilation, jjwt-impl et une liaison JSON comme jjwt-jackson à l’exécution. La 0.13.0 a réussi l’aller-retour avec HS, RS, PS et ES en 256/384/512 et EdDSA ; ES256K et les noms Ed25519 et Ed448 ne figurent pas dans Jwts.SIG.
L’analyseur déduit l’algorithme autorisé de la clé de vérification, et ses erreurs le disent clairement. Un jeton RS256 présenté à une clé publique EC et un jeton HS256 dont la clé HMAC était le texte PEM de la clé EC ont tous deux échoué avec UnsupportedJwtException, qui explique que la clé ne peut pas être utilisée pour cet algorithme. La protection tient au type de clé, pas à une liste : un analyseur configuré avec Keys.hmacShaKeyFor(pemBytes) a vérifié ce jeton falsifié ; ne construisez donc jamais de clés HMAC à partir de données qui pourraient être publiques.
Les jetons non signés sont refusés par parseSignedClaims avec un message qui cite la RFC 7518 §3.6, et ne peuvent être lus que via Jwts.parser().unsecured()…parseUnsecuredClaims. Les clés HMAC faibles ne vont jamais aussi loin : Keys.hmacShaKeyFor a rejeté une clé de 16 octets avec WeakKeyException, car la RFC 7518 exige des clés au moins aussi longues que le condensat. ES256 refuse une clé P-384 à la signature.
Deux valeurs par défaut demandent de l’attention. Aucune tolérance de décalage d’horloge n’est prévue (un jeton expiré depuis trois secondes a échoué) et exp est facultatif : définissez donc clockSkewSeconds et contrôlez l’expiration et l’émetteur comme le fait l’exemple. Les signatures ES256 sont au format r‖s brut de 64 octets ; une signature DER est signalée avec précision (Provided signature is 576 bits (72 bytes) but ES256 signatures must be exactly 512 bits (64 bytes)) : JJWT est l’une des rares bibliothèques à nommer le problème d’encodage. Inspectez les jetons dans le débogueur JWT et les clés HMAC avec le vérificateur de secrets JWT.
Pour gérer JWE et les jeux de clés JWK à grande échelle, comparez avec Nimbus JOSE + JWT.