Utilia

Generador i verificador de JWT

Crea i verifica JSON Web Tokens amb HS256, RS256, PS256, ES256 o EdDSA. Edita reclamacions, defineix exp i iat i comprova signatures al navegador.

Les claus i els tokens són secrets. Tot es signa i es verifica en local amb l'API Web Crypto del navegador: no es puja res.

Crea un JWT signat

Reclamacions de temps:

Verifica un JWT

Com crear un JWT signat

  1. Tria l’Algorisme: HS256/384/512 (secret compartit), RS256/384/512 o PS256/384/512 (RSA), ES256/384/512 (ECDSA amb P-256, P-384 o P-521) o EdDSA (Ed25519, quan el navegador ho admet).
  2. Edita la Capçalera (JSON) i el Contingut (reclamacions JSON). El camp alg sempre segueix l’algorisme seleccionat, i typ és JWT per defecte.
  3. Fes servir els botons de reclamacions de temps per afegir dates: iat = ara, nbf = ara, o tria un retard com «d’aquí a 1 hora» i fes clic a Defineix exp. Els valors són NumericDate: segons des de l‘1 de gener de 1970 UTC.
  4. Introdueix el Secret (algorismes HS, com a text o Base64/Base64url amb Format del secret) o la Clau privada (PEM o JWK). Encara no tens cap clau? Fes clic a Genera una clau de prova.
  5. Fes clic a Signa el token i després Copia el resultat o fes clic a Verifica aquest token per comprovar-lo a l’instant.

Com verificar un JWT

  1. Enganxa el token a Token a verificar.
  2. Tria l’Algorisme esperat. Si el deixes a «El de la capçalera del token (mai none)», s’accepta el que digui la capçalera, tret de none; si tries un algorisme concret, l’eina rebutja qualsevol token signat de manera diferent, com ha de fer un servidor real.
  3. Introdueix el secret o la Clau pública (PEM o JWK): un bloc PEM PUBLIC KEY, RSA PUBLIC KEY o CERTIFICATE, una JWK o un conjunt JWK (s’utilitza la clau amb el kid de la capçalera).
  4. Si vols, defineix un Marge del rellotge (segons) per tolerar petites diferències de rellotge, i fes clic a Verifica el token.

El resultat indica si la signatura és vàlida i, a continuació, comprova exp (caducitat) i nbf (no vàlid abans de) amb l’hora actual del teu ordinador. Un token amb la signatura correcta però amb una caducitat passada s’informa com a caducat, no com a vàlid.

Claus i formats

Per signar, l’eina accepta blocs PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY i SEC1 EC PRIVATE KEY (convertits internament a PKCS#8) i JWK privades. Les claus protegides amb contrasenya s’han d’exportar abans sense contrasenya. Genera una clau de prova crea un secret aleatori de la mida del hash per als algorismes HS, un parell de claus RSA de 2048 bits per a RS i PS, la corba corresponent per a ES o un parell Ed25519. Les claus s’obtenen com a PEM i JWK, i s’omplen als dos costats perquè el recorregut complet funcioni a l’instant.

Les signatures segueixen la RFC 7515 i la RFC 7518: RSA-PSS utilitza una sal tan llarga com el hash, i les signatures ECDSA són la concatenació directa r||s. La implementació reprodueix l’exemple HS256 de la RFC 7515, apèndix A.1.

Notes de seguretat

  • Tot s’executa al teu navegador amb l’API Web Crypto. Ni els tokens ni les claus s’envien enlloc, però tot i així és preferible fer servir claus de prova abans que secrets de producció.
  • alg: none mai no es signa i mai no s’accepta.
  • Els secrets HMAC haurien de ser, com a mínim, tan llargs com el hash (32 bytes per a HS256). Un secret més curt provoca un avís.
  • Una signatura demostra la integritat i l’origen, no que les reclamacions siguin adequades: els servidors també han de comprovar iss, aud i els permisos (scopes).

Preguntes freqüents

Quina diferència hi ha entre HS256 i RS256?

HS256 utilitza un únic secret compartit per signar i per verificar, de manera que qualsevol verificador també podria falsificar tokens. RS256 (i PS256, ES256, EdDSA) signa amb una clau privada i verifica amb una clau pública que es pot publicar sense risc.

Per què una signatura vàlida mostra tot i així un error?

Perquè el token és fora del seu període de validesa: exp és al passat o nbf és al futur. La comprovació de la signatura i la del temps s’informen per separat.

Per què es rebutja alg «none»?

Qualsevol persona pot crear un token sense signar. Acceptar-lo va ser una vulnerabilitat clàssica de les biblioteques JWT, per això aquesta eina el rebutja tant en signar com en verificar.

Puc utilitzar la meva pròpia clau RSA o EC?

Sí. Enganxa la clau privada com a PEM o JWK per signar i la clau pública per verificar. L’eina comprova que el tipus de clau i la corba coincideixin amb l’algorisme seleccionat.

Per què EdDSA està desactivat?

El teu navegador encara no admet Ed25519 a Web Crypto. Les versions recents de Chrome, Edge, Firefox i Safari sí que ho fan.