Utilia

Decodificador JWT

Descodifica la capçalera i el contingut d'un JWT, llegeix exp, iat i nbf com a dates i verifica signatures HS256, RS256, ES256 o EdDSA al navegador.

Els tokens són credencials. Aquesta eina els descodifica i els verifica al teu navegador i no els envia enlloc.

Verifica la signatura

HS256/384/512: introdueix el secret compartit. RS, PS, ES (256/384/512) i EdDSA: enganxa la clau pública com a PEM (clau pública, clau pública RSA o certificat) o JWK (un conjunt JWK es resol per kid).

Com descodificar un JWT

  1. Enganxa el token a JSON Web Token. També funciona un valor complet Authorization: Bearer …: s’eliminen el prefix Bearer i els salts de línia.
  2. El token es descodifica mentre escrius (o fes clic a Descodifica). La Capçalera i el Contingut (payload) apareixen com a JSON formatat, cadascun amb el seu propi botó Copia.
  3. Llegeix la taula Reclamacions de temps: exp, nbf i iat es mostren amb el valor original, la data al teu fus horari, un temps relatiu («d’aquí a 3 hores», «fa 2 dies») i un estat com Caducat o Encara no és vàlid.
  4. Mira els avisos que apareixen sobre els resultats, per exemple quan alg és none o quan una data sembla expressada en mil·lisegons.
  5. Per comprovar la signatura, omple la clau a Verifica la signatura i fes clic a Verifica la signatura.

Descodificar no és verificar

Un JWT són tres parts en Base64url separades per punts: capçalera.contingut.signatura. La capçalera i el contingut només estan codificats, no xifrats; per tant, qualsevol persona que tingui el token els pot llegir, i aquesta eina pot descodificar qualsevol token sense cap clau. Això també vol dir que un contingut descodificat no demostra res: algú pot haver-lo modificat. Només una signatura vàlida demostra que el token l’ha emès qui té la clau i que no s’ha alterat des d’aleshores. Per això la línia d’estat diu «Descodificat (signatura no verificada)» fins que el verifiques.

Un token amb cinc parts és un JWE (JWT xifrat); el seu contingut no es pot llegir sense la clau de desxifrat, i l’eina t’ho indica.

Verificació de la signatura

  • HS256, HS384, HS512 (HMAC): introdueix el Secret compartit. Amb Format del secret indica si és text pla (UTF-8) o Base64/Base64url, perquè alguns proveïdors desen els secrets en Base64. També pots enganxar una JWK de tipus oct. Si el secret és més curt que la sortida del hash (32 bytes per a HS256), l’eina avisa que està per sota del mínim de la RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 i EdDSA: enganxa la Clau pública (PEM o JWK). Els blocs PEM admesos són PUBLIC KEY, RSA PUBLIC KEY i CERTIFICATE (la clau es llegeix del certificat X.509). També funciona una JWK o un conjunt JWK complet: s’utilitza la clau amb el kid de la capçalera. Les claus privades es rebutgen; un verificador no en necessita mai cap. EdDSA admet Ed25519 als navegadors on Web Crypto ho implementa.

La verificació utilitza l’API Web Crypto del navegador. Un resultat de «Signatura no vàlida» vol dir que la clau és incorrecta o que el token s’ha modificat. Tingues en compte que l’algorisme s’obté de la capçalera del token: un servidor real ha de fixar l’algorisme esperat a la configuració; si no, un atacant el pot triar.

Notes de seguretat

  • Els tokens són credencials. Qui tingui un token d’accés vàlid sol poder actuar en nom del seu propietari fins que caduca. Aquesta eina descodifica i verifica tot al teu navegador i no envia enlloc ni el token ni la clau. Tot i així, evita enganxar tokens de producció en eines que no pots inspeccionar.
  • alg: none vol dir que el token no està signat. Qualsevol persona en pot falsificar un, i un servidor l’ha de rebutjar. L’eina mostra un avís i es nega a «verificar» aquest token.
  • Les comprovacions de temps fan servir el rellotge del teu ordinador sense cap marge; els servidors solen tolerar un o dos minuts de desfasament.
  • Les dates JWT (NumericDate) són segons des de l‘1 de gener de 1970 UTC. Un valor de 13 xifres probablement és en mil·lisegons, un error molt habitual.

Preguntes freqüents

Aquesta eina em pot dir si un token és vàlid?

Et pot dir si la signatura coincideix amb una clau que tu proporciones i si ara mateix es compleixen exp i nbf. Que el token s’accepti o no també depèn de comprovacions que només coneix el servidor: l’emissor esperat (iss), l’audiència (aud), l’algorisme i la revocació.

Per què falla la verificació amb el secret correcte?

Revisa el Format del secret: un secret en Base64 escrit com a text dona una clau diferent. Comprova també que no s’hagi afegit cap espai ni salt de línia al secret, ja que les claus HMAC es comparen byte a byte.

Quina diferència hi ha entre RS256, PS256 i ES256?

Les tres són signatures de clau pública amb SHA-256. RS256 utilitza RSA amb farciment PKCS#1 v1.5, PS256 utilitza RSA amb farciment PSS, i ES256 utilitza ECDSA amb la corba P-256, que dona signatures molt més curtes.

On trobo la clau pública d'un proveïdor?

Els proveïdors d’identitat publiquen un JWKS (JSON Web Key Set), normalment enllaçat des de /.well-known/openid-configuration a jwks_uri. Obre’l tu mateix i enganxa aquí el JSON; l’eina tria la clau pel kid i no baixa mai res.

És segur enganxar aquí el meu token?

El token es queda al teu dispositiu: la descodificació i la verificació es fan en local i no es puja res. Per més precaució, fes servir un token caducat o de prova quan només vulguis inspeccionar-ne l’estructura.