Utilia

JWT dekódoló

Dekódold a JWT fejlécét és payloadját, olvasd ki az exp, iat és nbf értékeket dátumként, és ellenőrizd az aláírást (HS256, RS256, ES256, EdDSA) a böngésződben.

A tokenek hitelesítő adatok. Ez az eszköz a böngésződben dekódolja és ellenőrzi őket, és sehová nem küldi el.

Aláírás ellenőrzése

HS256/384/512: add meg a megosztott titkot. RS, PS, ES (256/384/512) és EdDSA: illeszd be a nyilvános kulcsot PEM (public key, RSA public key vagy tanúsítvány) vagy JWK formátumban (a JWK Set-ből a kid alapján választ az eszköz).

Hogyan dekódolj egy JWT-t

  1. Illeszd be a tokent a JSON Web Token mezőbe. Egy teljes Authorization: Bearer … érték is megfelel: a Bearer előtagot és a sortöréseket az eszköz eltávolítja.
  2. A token gépelés közben dekódolódik (vagy kattints a Dekódolás gombra). A Fejléc és a Payload formázott JSON-ként jelenik meg, mindkettőhöz külön Másolás gomb tartozik.
  3. Nézd meg az Időpontot jelölő claimek táblázatát: az exp, nbf és iat nyers értéke, a dátum a te időzónádban, egy relatív időmegjelölés („3 óra múlva”, „2 napja”) és egy állapot, például Lejárt vagy Még nem érvényes látható.
  4. Olvasd el az eredmény fölött megjelenő figyelmeztetéseket, például ha az alg értéke none, vagy ha egy dátum ezredmásodpercnek tűnik.
  5. Az aláírás ellenőrzéséhez add meg a kulcsot az Aláírás ellenőrzése részben, majd kattints az Aláírás ellenőrzése gombra.

A dekódolás még nem ellenőrzés

A JWT három, ponttal elválasztott Base64url részből áll: fejléc.payload.aláírás. A fejlécet és a payloadot csak kódolják, nem titkosítják, ezért bárki elolvashatja őket, aki birtokolja a tokent, és ez az eszköz is kulcs nélkül dekódol bármilyen tokent. Ebből az is következik, hogy a dekódolt payload önmagában semmit sem bizonyít: valaki átírhatta. Csak az érvényes aláírás mutatja meg, hogy a tokent a kulcs birtokosa állította ki, és azóta nem módosították. Ezért áll az állapotsorban az, hogy „Dekódolva (az aláírás nincs ellenőrizve)”, amíg le nem futtatod az ellenőrzést.

Az öt részből álló token JWE (titkosított JWT): a tartalma a visszafejtő kulcs nélkül nem olvasható, és az eszköz ezt jelzi is.

Az aláírás ellenőrzése

  • HS256, HS384, HS512 (HMAC): add meg a megosztott Titkot. A Titok formátuma mezőben választhatod ki, hogy sima szöveg (UTF-8) vagy Base64/Base64url, mert egyes szolgáltatók Base64-ben tárolják a titkokat. Beilleszthetsz oct típusú JWK-t is. Ha a titok rövidebb a hash kimeneténél (HS256 esetén 32 bájt), az eszköz megjegyzi, hogy az RFC 7518 szerinti minimum alatt van.
  • RS256/384/512, PS256/384/512, ES256/384/512 és EdDSA: illeszd be a Nyilvános kulcsot (PEM vagy JWK). Elfogadott PEM-blokkok: PUBLIC KEY, RSA PUBLIC KEY és CERTIFICATE (ilyenkor a kulcsot az X.509 tanúsítványból olvassa ki az eszköz). Működik egy JWK vagy egy teljes JWK Set is: azt a kulcsot használja az eszköz, amelynek a kid értéke megegyezik a fejlécben szereplővel. A privát kulcsot elutasítja, mert az ellenőrzéshez soha nincs rá szükség. Az EdDSA az Ed25519-et támogatja azokban a böngészőkben, amelyek Web Crypto-ja ismeri.

Az ellenőrzés a böngésző Web Crypto API-ját használja. Az „Érvénytelen aláírás” eredmény azt jelenti, hogy a kulcs hibás, vagy a tokent módosították. Vedd figyelembe, hogy az algoritmust a token fejlécéből veszi az eszköz: egy valódi szervernek ehelyett a konfigurációjában kell rögzítenie az elvárt algoritmust, különben egy támadó választhat.

Biztonsági tudnivalók

  • A tokenek hitelesítő adatok. Aki érvényes hozzáférési tokent birtokol, az általában a lejáratig a tulajdonosa nevében léphet fel. Ez az eszköz mindent a böngésződben dekódol és ellenőriz, a tokent és a kulcsot sehová nem küldi el. Ennek ellenére kerüld, hogy éles tokeneket illessz be olyan eszközökbe, amelyeket nem tudsz átvizsgálni.
  • Az alg: none azt jelenti, hogy a token nincs aláírva. Bárki hamisíthat ilyet, a szervernek pedig vissza kell utasítania. Az eszköz figyelmeztetést mutat, és az ilyen tokent nem „ellenőrzi”.
  • Az itteni időellenőrzés a számítógéped óráját használja, tűrés nélkül; a szerverek gyakran egy-két perc eltérést megengednek.
  • A JWT-dátumok (NumericDate) az 1970. január 1-jei UTC óta eltelt másodpercek. A 13 számjegyű érték valószínűleg ezredmásodperc, ami gyakori programozási hiba.

Gyakori kérdések

Megmondja az eszköz, hogy egy token érvényes-e?

Megmondja, hogy az aláírás egyezik-e a megadott kulccsal, és hogy az exp és az nbf teljesül-e éppen most. Azt, hogy a token elfogadásra kerül-e, olyan ellenőrzések is befolyásolják, amelyeket csak a szerver ismer: az elvárt kiállító (iss), a célközönség (aud), az algoritmus és a visszavonás.

Miért sikertelen az ellenőrzés a helyes titokkal is?

Nézd meg a Titok formátuma beállítást: a szövegként beírt Base64-titok más kulcsot ad. Győződj meg arról is, hogy a titokhoz nem került szóköz vagy sortörés, mert a HMAC-kulcsokat bájtról bájtra hasonlítják össze.

Mi a különbség az RS256, a PS256 és az ES256 között?

Mindhárom nyilvános kulcsú aláírás SHA-256-tal. Az RS256 RSA-t használ PKCS#1 v1.5 kitöltéssel, a PS256 RSA-t PSS kitöltéssel, az ES256 pedig ECDSA-t a P-256 görbén, ami jóval rövidebb aláírást ad.

Hol találom egy szolgáltató nyilvános kulcsát?

Az azonosításszolgáltatók JWKS-t (JSON Web Key Set) tesznek közzé, amelyre általában a /.well-known/openid-configuration címen a jwks_uri mutat. Nyisd meg magad, és illeszd be ide a JSON-t; az eszköz a kid alapján választ kulcsot, és soha nem tölt le semmit.

Biztonságos ide beilleszteni a tokenemet?

A token az eszközödön marad: a dekódolás és az ellenőrzés helyben történik, és semmi nem kerül feltöltésre. Ha extra óvatos vagy, használj lejárt vagy teszttokent, amikor csak a szerkezetét szeretnéd megnézni.