Teknobench

Dekodifikatur tal-JWT

Iddekodifika l-header u l-payload ta’ JWT, aqra exp, iat u nbf bħala dati u ivverifika firem HS256, RS256, PS256, ES256 jew EdDSA fil-brawżer tiegħek.

It-tokens huma kredenzjali. Din l-għodda tiddekodifika u tivverifika t-tokens fil-brawżer tiegħek u qatt ma tibgħathom imkien.

Ivverifika l-firma

HS256/384/512: daħħal is-sigriet kondiviż. RS, PS, ES (256/384/512) u EdDSA: waħħal iċ-ċavetta pubblika bħala PEM (public key, RSA public key jew ċertifikat) jew JWK (JWK Set jintgħażel b’kid).

Kif tiddekodifika JWT

  1. Waħħal it-token f’JSON Web Token. Valur sħiħ ta’ Authorization: Bearer … jaħdem ukoll: il-prefiss Bearer u l-qatgħat tas-linja jitneħħew.
  2. It-token jiġi ddekodifikat hekk kif tikteb (jew ikklikkja Iddekodifika). Il-Header u l-Payload jidhru bħala JSON iffurmattjat, kull wieħed bil-buttuna Ikkopja tiegħu.
  3. Aqra t-tabella Claims taż-żmien: exp, nbf u iat jidhru bil-valur oriġinali, id-data fiż-żona tal-ħin tiegħek, ħin relattiv (“fi 3 sigħat”, “qabel jumejn”) u stat bħal Skada jew Għadu mhux validu.
  4. Iċċekkja t-twissijiet fuq ir-riżultati, per eżempju meta alg ikun none jew meta data tidher li hija f’millisekondi.
  5. Biex tivverifika l-firma, imla ċ-ċavetta taħt Ivverifika l-firma u ikklikkja Ivverifika l-firma.

Id-dekodifikar mhuwiex verifika

JWT huwa magħmul minn tliet partijiet Base64url separati b’ponot: header.payload.signature. Il-header u l-payload huma biss kodifikati, mhux kriptati, għalhekk kull min għandu t-token jista’ jaqrahom, u din l-għodda tista’ tiddekodifika kull token mingħajr ċavetta. Dan ifisser ukoll li payload iddekodifikat ma jippruvax xejn: xi ħadd seta’ biddlu. Biss firma valida turi li t-token inħareġ minn min għandu ċ-ċavetta u li ma nbidilx minn dak iż-żmien. Għalhekk il-linja tal-istat tgħid “Iddekodifikat (il-firma ma ġietx ivverifikata)” sakemm tivverifika.

Token b’ħames partijiet huwa JWE (JWT kriptat); il-kontenut tiegħu ma jistax jinqara mingħajr iċ-ċavetta tad-dekriptaġġ, u l-għodda tgħidlek hekk.

Il-verifika tal-firma

  • HS256, HS384, HS512 (HMAC): daħħal is-Sigriet kondiviż. Uża Format tas-sigriet biex tgħid jekk huwiex test sempliċi (UTF-8) jew Base64/Base64url, peress li xi fornituri jaħżnu s-sigrieti f’Base64. Tista’ wkoll twaħħal JWK ta’ tip oct. Jekk is-sigriet huwa iqsar mill-output tal-hash (32 byte għal HS256), l-għodda tinnota li huwa taħt il-minimu tal-RFC 7518.
  • RS256/384/512, PS256/384/512, ES256/384/512 u EdDSA: waħħal iċ-Ċavetta pubblika (PEM jew JWK). Il-blokki PEM aċċettati huma PUBLIC KEY, RSA PUBLIC KEY u CERTIFICATE (iċ-ċavetta tinqara miċ-ċertifikat X.509). JWK jew JWK Set sħiħ jaħdmu wkoll: tintuża ċ-ċavetta li l-kid tagħha jaqbel mal-header. Ċwievet privati jiġu rrifjutati; verifikatur ma jiħtieġhom qatt. EdDSA jappoġġja Ed25519 fil-brawżers li Web Crypto tagħhom jimplimentah.

Il-verifika tuża l-API Web Crypto tal-brawżer. Riżultat ta’ “Firma invalida” ifisser li ċ-ċavetta hija ħażina jew li t-token ġie modifikat. Innota li l-algoritmu jittieħed mill-header tat-token: server vera għandu minflok jiffissa l-algoritmu mistenni fil-konfigurazzjoni tiegħu, inkella attakkant jista’ jagħżlu hu.

Noti dwar is-sigurtà

  • It-tokens huma kredenzjali. Kull min iżomm access token validu normalment jista’ jaġixxi bħala sid tiegħu sakemm jiskadi. Din l-għodda tiddekodifika u tivverifika kollox fil-brawżer tiegħek u qatt ma tibgħat it-token jew iċ-ċavetta imkien. Madankollu evita li twaħħal tokens tal-produzzjoni f’għodod li ma tistax tispezzjona.
  • alg: none ifisser li t-token mhuwiex iffirmat. Kulħadd jista’ jiffalsifika wieħed, u server għandu jirrifjutah. L-għodda turi twissija u tirrifjuta li “tivverifika” token bħal dan.
  • Il-kontrolli tal-arloġġ hawnhekk jużaw l-arloġġ tal-kompjuter tiegħek mingħajr tolleranza; is-servers spiss jaċċettaw minuta jew tnejn ta’ differenza.
  • Id-dati tal-JWT (NumericDate) huma sekondi mill-1 ta’ Jannar 1970 UTC. Valur ta’ 13-il ċifra x’aktarx huwa f’millisekondi, li huwa żball komuni.

Mistoqsijiet frekwenti

L-għodda tista’ tgħidli jekk token huwiex validu?

Tista’ tgħidlek jekk il-firma taqbilx maċ-ċavetta li tipprovdi u jekk exp u nbf humiex sodisfatti issa. Jekk it-token jiġix aċċettat jiddependi wkoll minn kontrolli li jaf biss is-server: l-emittent mistenni (iss), l-udjenza (aud), l-algoritmu u r-revoka.

Għaliex il-verifika tfalli bis-sigriet it-tajjeb?

Iċċekkja l-Format tas-sigriet: sigriet Base64 miktub bħala test jagħti ċavetta differenti. Kun żgur ukoll li ma ntbagħatx spazju jew qatgħa tas-linja mas-sigriet, għax iċ-ċwievet HMAC jitqabblu byte b’byte.

X’inhi d-differenza bejn RS256, PS256 u ES256?

It-tlieta huma firem b’ċavetta pubblika b’SHA-256. RS256 juża RSA bil-padding PKCS#1 v1.5, PS256 juża RSA bil-padding PSS, u ES256 juża ECDSA fuq il-kurva P-256, li tagħti firem ferm iqsar.

Fejn nsib iċ-ċavetta pubblika ta’ fornitur?

Il-fornituri tal-identità jippubblikaw JWKS (JSON Web Key Set), normalment marbut minn /.well-known/openid-configuration taħt jwks_uri. Iftaħha int stess u waħħal il-JSON hawnhekk; l-għodda tagħżel iċ-ċavetta b’kid u qatt ma tniżżel xejn.

Huwa sigur li nwaħħal it-token tiegħi hawnhekk?

It-token jibqa’ fuq l-apparat tiegħek: id-dekodifikar u l-verifika jseħħu lokalment u xejn ma jittella’. Għal aktar kawtela, uża token skadut jew tat-test meta tkun trid biss tispezzjona l-istruttura.