Ověřovač JWT
Ověřte, zda je webový token JSON pravý a stále platný. Vložte token spolu s tajemstvím HMAC, veřejným klíčem PEM, certifikátem, JWK nebo celým JWKS. Ověřovač pomocí knihovny jose zkontroluje podpis, porovná exp a nbf s aktuálním časem a případnou tolerancí hodin a vedle dekódované hlavičky a nároků zobrazí jasný výsledek. Tokeny s alg none jsou odmítnuty.
Často kladené otázky
Co ověřovač kontroluje?
Kontroluje podpis pomocí zadaného klíče a poté porovnává nároky exp a nbf s aktuálním časem. Token je platný pouze tehdy, když podpis souhlasí a žádná z časových kontrol neselže. Nároky jako iss, aud nebo sub se zobrazují v obsahu, ale neporovnávají se s očekávanými hodnotami.
Jaké klíče mohu vložit?
Pro HS256, HS384 a HS512 vložte sdílený tajný klíč jako text nebo jako oct JWK. Pro tokeny RSA, EC a EdDSA vložte veřejný klíč PEM (SPKI nebo PKCS #1), certifikát X.509, veřejný nebo soukromý JWK, JWKS s až 50 klíči nebo soukromý klíč PEM, z něhož se použije pouze veřejná část.
Jak se z JWKS vybere správný klíč?
Pokud hlavička tokenu obsahuje kid, použije se klíč se stejným kid v sadě; pokud žádný neodpovídá, chyba uvede kid. Bez kid musí sada obsahovat přesně jeden klíč. To odpovídá způsobu, jakým většina serverů vybírá klíče z dokumentu jwks_uri.
K čemu slouží volba algoritmu?
Při volbě Use the token's alg se algoritmus převezme z hlavičky tokenu, klíč mu ale stále musí odpovídat, takže veřejný klíč RSA nikdy nelze použít jako tajný klíč HMAC. Výběrem konkrétního algoritmu také vyžadujete, aby jej token používal; takto by měl server zafixovat očekávaný algoritmus. Token s jiným alg bude odmítnut a zobrazí se oba názvy.
Proč je odmítnut token s alg none?
Token s alg none neobsahuje podpis, takže není co ověřovat a mohl jej vytvořit kdokoli. Přijetí takových tokenů je dobře známá zranitelnost v knihovnách JWT. Ověřovač jej nahlásí jako chybu, nikoli jako platný výsledek.
Jak fungují exp, nbf a časová tolerance?
Token se považuje za prošlý, když exp nastane nebo uplyne před aktuálním časem, a za dosud neplatný, když nbf leží v budoucnosti. Časová tolerance v rozmezí 0 až 3600 sekund rozšiřuje obě kontroly, aby zohlednila rozdíly času mezi servery. Přítomné nároky, které nemají číselnou hodnotu, token zneplatňují.
Co znamená neplatný podpis?
Token nebyl podepsán zadaným klíčem nebo byla po podepsání změněna jeho hlavička či obsah. Zkontrolujte, zda jste vložili odpovídající veřejný klíč nebo tajný klíč včetně přesných znaků a zda jste zkopírovali celý token. Dekódovaná hlavička i obsah se stále zobrazují, abyste je mohli porovnat.
Které algoritmy jsou podporovány?
HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512 a EdDSA s klíči Ed25519. Klíče RSA musí mít alespoň 2048 bitů. Šifrované tokeny (JWE) se nedešifrují.
Ukládá se token nebo klíč?
Ne. Token a klíč se použijí pouze pro toto ověření v paměti a nikdy se nezaznamenávají ani neukládají. Veřejný klíč lze bezpečně sdílet, ale s tajnými klíči HMAC zacházejte opatrně a každý klíč, o němž se domníváte, že unikl, vyměňte.
Jak velký může být token a klíč?
Token může mít až 65,536 znaků a pole klíče až 262,144 znaků, což stačí i pro velké dokumenty JWKS. Token musí mít tři části base64url oddělené tečkami, hlavičku JSON s členem alg a objekt JSON jako svůj obsah.