Skontrolovať JWKS a extrahovať verejné kľúče PEM
- Dashboard
- Dokumentácia
- API
Čo je JWKS?
JWKS (JSON Web Key Set, RFC 7517) je JSON dokument zoskupujúci zoznam verejných kľúčov v štruktúrovanej forme. Slúži na publikovanie kľúčov, ktoré vydavateľ JWT používa na podpisovanie svojich tokenov, aby ich akýkoľvek konzument mohol získať a overiť podpis tokenov, ktoré prijíma. Formát sa vždy prezentuje takto:
{
"keys": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Každý záznam v poli keys je JWK (JSON Web Key), ktorý
popisuje verejný kľúč: typ kľúča (kty), identifikátor (kid), plánované
použitie (use), cieľový algoritmus (alg) a kryptografické komponenty.
Kedy slúži JWKS?
JWKS je chrbtová kosť moderných OAuth2 a OpenID Connect architektúr. Stretnete sa s ním vo viacerých kontextoch:
- OIDC discovery: každý OpenID Connect provider exponuje konfiguračný
dokument na
/.well-known/openid-configuration, ktorý obsahuje polejwks_uri. Na tejto URL sa nachádza JWKS so zoznamom aktívnych verejných kľúčov. - Overenie JWT: keď vaše API prijíma token podpísaný v RS256 alebo ES256,
číta
kidz headera, sťahuje JWKS vydavateľa, nájde zodpovedajúci kľúč, derivuje z neho verejný kľúč vo formáte PEM, a overuje podpis. - Rotácia kľúčov: vydavateľ môže publikovať viaceré kľúče súčasne, čo umožňuje zaviesť nový kľúč na podpisovanie nových tokenov, pri zachovaní starého v prevádzke, kým tokeny v obehu expirujú.
- Federations: SAML, SCIM, prepojené servisy, publikovanie JWKS sa vyhýba ručnej výmene X.509 certifikátov medzi partnermi.
Esenciálne polia JWK
Niekoľko polí sa systematicky vracia v JWK. Tento nástroj ich extrahuje a zobrazuje pre každý kľúč analyzovaného JWKS:
kid(key ID): unikátny identifikátor kľúča. Je to hodnota, ktorú header JWT vkladá do svojhokidpoľa pre indikáciu, ktorý kľúč JWKS má slúžiť overeniu.kty(key type): kryptografická rodina. Dve dominantné hodnoty súRSA(klasické RSA kľúče, používané s RS256, RS384, RS512) aEC(eliptické krivky, používané s ES256, ES384, ES512).alg(algorithm): podpisový algoritmus, pre ktorý je tento kľúč plánovaný. Voliteľné pole, ale často vyplnené. Umožňuje rýchlo filtrovať kľúče použiteľné pre daný JWT.use: použitie kľúča.sigpre podpis (obvyklý prípad),encpre šifrovanie (zriedkavé, používané s JWE).
Prečo konvertovať JWK na PEM?
Väčšina klasických kryptografických knižníc (OpenSSL, openssl_verify v
PHP, crypto v Node.js, JCA v Jave) akceptuje verejné kľúče vo formáte
PEM (Base64 obklopené -----BEGIN PUBLIC KEY-----), nie priamo
vo formáte JWK. Konverzia JWK na PEM je teda nepostrádateľná pre:
- Manuálne overenie podpisu JWT zo skriptu alebo command-line nástroja
(
jwt,jose,step crypto). - Import kľúča do debug nástroja ako JWT Verifier, ktorý očakáva PEM kľúč v poli "verejný kľúč".
- Uložiť kľúč v lokálnej cache alebo konfiguračnom súbore v univerzálnej a čitateľnej forme.
- Rýchlo porovnať dva kľúče (PEM formát uľahčuje vizuálne diffy).
Limity a upozornenia
Tento nástroj podporuje verejné kľúče RSA (kty=RSA) a EC
(kty=EC na krivkách P-256, P-384,
P-521). Ostatné typy (OKP pre Ed25519, oct pre
symetrické kľúče) nie sú konvertované: sú signalizované s chybovou správou per
záznam, zvyšok JWKS zostáva čitateľný.
- Konverzia sa vykonáva v jedinom smere: JWKS na PEM. Rekonštrukcia JWK z existujúceho PEM kľúča nie je pokrytá touto verziou.
- JWKS musí byť vložené tak, ako je, vo forme JSON textu. Automatické získanie
z URL
jwks_urialebo OIDC endpointu nie je urobené na strane servera, pre vyhnutie sa nepredvídaným odchádzajúcim volaniam. - Privátne kľúče sa nemajú objavovať vo verejnom JWKS a tento nástroj extrahuje iba verejné komponenty, aj keby bol privátny kľúč prítomný.
Ako ho používať
- Získajte JWKS vydavateľa, ktorého chcete inšpektovať. Pre OIDC providera
je adresa zvyčajne
https://priklad.com/.well-known/jwks.jsonalebohttps://priklad.com/oauth2/jwks. - Skopírujte celý JSON dokument (objekt obsahujúci kľúč
keys). - Vložte ho do vstupnej zóny nástroja a spustite analýzu.
- Pre každý kľúč JWKS nástroj zobrazuje jeho
kid,kty,alg,usea verejný kľúč konvertovaný na PEM formát. - Kliknite na "kopírovať" pre získanie PEM a jeho použitie v overovacom skripte, v našom JWT Verifier, alebo v akomkoľvek OpenSSL kompatibilnom nástroji.
Často kladené otázky
Kde nájsť JWKS OIDC providera?
Veľká väčšina OpenID Connect providerov publikuje discovery dokument na
https://priklad.com/.well-known/openid-configuration. Tento JSON obsahuje pole
jwks_uri, ktoré ukazuje na efektívne JWKS. Niektorí provideri servujú priamo
JWKS na https://priklad.com/.well-known/jwks.json alebo na dedikovanom OAuth2
endpointe. Stiahnite obsah a vložte ho tu tak, ako je.
Prečo je kid dôležitý?
kid (key ID) je identifikátor, ktorý header JWT vkladá do svojho vlastného poľa
kid pre indikáciu, ktorý kľúč JWKS má slúžiť overeniu. Bez tohto
identifikátora by konzument musel skúšať každý kľúč JWKS, čo komplikuje diagnostiku v
prípade chyby. Prítomnosť kid per kľúč je teda považovaná za dobrú
prax a všetci serióznejší IdP ho publikujú.
Aký je rozdiel medzi kty=RSA a kty=EC?
RSA je historická rodina asymetrických podpisov, používaná s RS256, RS384, RS512.
Kľúče sú opísané modulom n a exponentom e. EC (Elliptic
Curve) je novšia a dáva kratšie podpisy pre ekvivalentnú úroveň bezpečnosti.
EC kľúče sú opísané krivkou (crv = P-256, P-384 alebo P-521) a dvomi
súradnicami x a y. Tento nástroj konvertuje obe rodiny na PEM.
Ako použiť extrahovaný PEM na overenie JWT?
Skopírujte PEM, potom ho vložte do poľa "verejný kľúč" nášho
JWT Verifier s JWT na validáciu. Môžete ho tiež
použiť z command-line s openssl dgst, z Node.js s
crypto.verify, z Pythonu s cryptography alebo
PyJWT, z Javy s JCA, atď. PEM formát je univerzálne uznávaný.
Môj JWKS obsahuje Ed25519 (OKP) kľúč, prečo nie je konvertovaný?
Konverzia OKP kľúčov (Ed25519, Ed448, X25519, X448) vyžaduje špecifickú
logiku a odlišné DER kódovanie od RSA a EC kľúčov. Táto verzia nástroja
podporuje iba RSA a EC. Nepodporované kľúče sú signalizované
individuálne s chybovou správou, bez blokovania analýzy ostatných záznamov JWKS.
Možno získať JWKS z URL namiesto jeho vloženia?
Nie v tejto verzii. Nástroj nerealizuje žiadne odchádzajúce HTTP volanie pre zachovanie rýchlosti a vyhnutie sa
konaniu ako neúmyselný proxy. Stiahnite JWKS z vášho prehliadača alebo s
curl https://priklad.com/.well-known/jwks.json, potom vložte obsah do vstupného
poľa.
Ukážka požiadavky
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Vstupná schéma
| Pole | Typ | Povinné | Predvolené |
|---|---|---|---|
jwks |
text | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všetky dostupné nástrojeGET https://cdrn.fr/api/v1/tools/jwks-inspector- získa schému tohto nástrojaPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- spustí tento nástroj s JSON payloadom