JWT Decoder
Dekódujte a prohlédněte JSON Web Token
JWT token
Co je JWT (JSON Web Token)?
JSON Web Token (JWT) je kompaktní formát tokenu bezpečný pro URL, definovaný v RFC 7519. Kóduje sadu claims jako objekt JSON, který poté podepíše — a volitelně zašifruje — aby příjemce mohl ověřit, že data nebyla pozměněna. JWT jsou de facto standardem pro bezstavové ověřování v REST API, systémech jednotného přihlášení a autorizaci mikroslužeb.
Anatomie JWT: Header · Payload · Signature
Každý JWT se skládá ze tří segmentů kódovaných v base64url oddělených tečkami. Header a Payload jsou prostý JSON — čitelný pro kohokoliv — zatímco Signature je kryptografická hodnota, kterou lze ověřit pouze správným klíčem.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "user123",
"name": "Alice",
"role": "admin",
"iat": 1717200000,
"exp": 1717203600
}Proč používat dekodér JWT?
Surové JWT vypadají jako náhodný text. Tento nástroj okamžitě zobrazí Header a Payload jako formátovaný JSON, takže můžete zkoumat claims, kontrolovat časy expirace a auditovat volbu algoritmů bez napsání jediného řádku kódu.
Referenční přehled standardních JWT claims
RFC 7519 definuje sedm registrovaných názvů claims. Nejsou povinné, ale jejich použití je pro interoperabilitu silně doporučeno. Do Payload můžete přidat libovolné vlastní claims.
| Claim | Popis | Typ |
|---|---|---|
| iss | Vydavatel — Identifikuje, kdo token vydal — např. URL vašeho autentizačního serveru nebo název aplikace. | string |
| sub | Předmět — Identifikuje hlavní subjekt, o němž JWT pojednává — typicky ID uživatele nebo servisní účet. | string |
| aud | Příjemce — Identifikuje zamýšlené příjemce. Přijímající strana musí ověřit, že se toto shoduje s jejím identifikátorem. | string | string[] |
| exp | Čas expirace — Unixové časové razítko, po kterém token nesmí být přijat. Vždy nastavte, abyste omezili škody způsobené ukradeným tokenem. | number |
| nbf | Platí od — Unixové časové razítko, před kterým token nesmí být přijat. Užitečné pro plánování tokenů s budoucím datem. | number |
| iat | Vydáno v — Unixové časové razítko, kdy byl token vydán. Používá se pro výpočet stáří tokenu. | number |
| jti | JWT ID — Jedinečný identifikátor tokenu. Umožňuje odvolání uložením a kontrolou použitých hodnot JTI na straně serveru. | string |
Podpisové algoritmy JWT
Claim záhlaví alg deklaruje, který algoritmus token podepsal. Výběr ovlivňuje bezpečnost, výkon a schopnost třetích stran ověřovat tokeny bez privátního klíče.
| Algoritmus | Rodina | Typ klíče | Poznámky |
|---|---|---|---|
| HS256 | HMAC | Symmetric | Nejběžnější. Sdílené tajemství — kdo má tajemství, může podepisovat i ověřovat. |
| HS384 | HMAC | Symmetric | Silnější varianta HMAC; mírné výkonnostní náklady. |
| HS512 | HMAC | Symmetric | Nejsilnější varianta HMAC. |
| RS256 | RSA | Asymmetric | Nejpoužívanější asymetrický algoritmus (Google, Auth0, Okta). Veřejný klíč ověřuje bez privátního klíče. |
| RS384 | RSA | Asymmetric | Varianta RS s vyšší bezpečností. |
| RS512 | RSA | Asymmetric | Nejsilnější varianta RS. |
| ES256 | ECDSA | Asymmetric | Eliptická křivka — kratší podpisy než RSA, oblíbená na mobilních zařízeních a IoT. |
| PS256 | RSA-PSS | Asymmetric | RSA-PSS: modernější a bezpečnější než RS256 založený na PKCS1v1.5. |
| none | — | — | Bez podpisu — kriticky nebezpečné. Nikdy nepřijímejte tokeny s alg: none v produkci. |
Bezpečnostní úvahy
Dekódování JWT je vždy bezpečné. Důvěřovat JWT bez řádného ověření podpisu bezpečné není. Mějte tato pravidla na paměti vždy, když ve své aplikaci spotřebováváte tokeny.
- –Dekódovat a zkoumat JWT v nástrojích pro vývojáře nebo v tomto nástroji
- –Používat exp, iat a nbf k pochopení doby platnosti tokenu
- –Zaznamenávat claims Payload pro ladění (vynechat citlivé osobní údaje)
- –Číst záhlaví alg, abyste pochopili, jak byl token podepsán
- –Důvěřovat claims v Payload bez ověření podpisu na straně serveru
- –Přijímat tokeny s alg: none — to znamená, že není vůbec žádný podpis
- –Ukládat přístupové tokeny v localStorage v aplikacích s vysokou bezpečností (preferujte httpOnly cookies)
- –Nastavovat exp daleko v budoucnosti pro tokeny nesoucí citlivá oprávnění
Typické případy použití
Dekódování JWT v kódu
Header a Payload jsou kódovány v base64url — stačí kódování obrátit. Base64url nahrazuje + za - a / za _, a vynechává výplň =. Pouze Signature potřebuje tajný klíč.
function decodeJWT(token) {
const [, payload] = token.split('.')
const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
return JSON.parse(json)
}const [, payload] = token.split('.')
const decoded = JSON.parse(
Buffer.from(payload, 'base64url').toString()
)import base64, json
def decode_jwt(token):
payload = token.split('.')[1]
padding = '=' * (-len(payload) % 4)
return json.loads(base64.urlsafe_b64decode(payload + padding))TOKEN="eyJhbGc..." echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .