Inspektirati JWKS i izvući javne ključeve PEM
- Nadzorna ploča
- Dokumentacija
- API
Što je JWKS?
JWKS (JSON Web Key Set, RFC 7517) je JSON dokument koji grupira popis javnih ključeva u strukturiranom obliku. Koristi se za objavljivanje ključeva koje JWT izdavatelj koristi za potpisivanje svojih tokena, tako da ih svaki potrošač može preuzeti i provjeriti potpis tokena koje prima. Format uvijek izgleda ovako:
{
"ključevi": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Svaki unos u tablici ključevi je JWK (JSON web ključ) koji
opisuje javni ključ: tip ključa (kty), identifikator (kid), upotreba
namijenjen (use), ciljni algoritam (alg) i kriptografske komponente.
Kada se koristi JWKS?
JWKS je okosnica modernih OAuth2 i OpenID Connect arhitektura. ti će se susresti u nekoliko konteksta:
- OIDC Discovery: bilo koji pružatelj OpenID Connect izlaže dokument o
konfiguracija na
/.well-known/openid-configurationkoja sadrži poljejwks_uri. Na ovom URL-u postoji JWKS popis aktivnih javnih ključeva. - JWT potvrda: kada vaš API primi token potpisan u RS256 ili ES256,
čita
kidzaglavlja, preuzima JWKS odašiljača, pronalazi ključ odgovarajući, izvodi javni ključ u PEM formatu i provjerava potpis. - Rotacija ključeva: izdavatelj može objaviti nekoliko ključeva istovremeno, ovo što vam omogućuje uvođenje novog ključa za potpisivanje novih tokena uz zadržavanje stari je u upotrebi dok tokeni u optjecaju istječu.
- Federacije: SAML, SCIM, međusobno povezane usluge, objavljivanje JWKS-a izbjegava ručnu razmjenu X.509 certifikata između partnera.
Bitna polja JWK
Neka se polja sustavno pojavljuju u JWK-u. Ovaj ih alat izdvaja i prikazuje za svaki analizirani ključ JWKS-a:
kid(ID ključa): jedinstveni identifikator ključa. To je ova vrijednost koje zaglavlje JWT-a stavlja u poljekidkako bi naznačilo koji ključ JWKS-a mora se koristiti za provjeru.kty(tip ključa): kriptografska obitelj. Dvije vrijednosti dominantni suRSA(klasični RSA ključevi, koji se koriste s RS256, RS384, RS512) iEC(eliptične krivulje, koriste se s ES256, ES384, ES512).alg(algoritam): algoritam potpisa za koji je ovaj ključ planirano je. Neobavezno polje, ali se često ispunjava. Omogućuje brzo filtriranje ključeva upotrebljiv za određeni JWT.use: upotreba ključa.sigza potpis (velika i mala slova uobičajeno),encza šifriranje (rijetko, koristi se s JWE).
Zašto pretvoriti JWK u PEM?
Većina klasičnih kriptografskih biblioteka (OpenSSL, openssl_verify u
PHP, crypto u Node.js, JCA u Javi) prihvaćaju javne ključeve u formatu
PEM (Base64 uokviren -----BEGIN PUBLIC KEY-----), ne izravno
u JWK formatu. Pretvaranje JWK u PEM stoga je neophodno za:
- Ručno provjerite potpis JWT-a iz skripte ili alata naredbenog retka
(
jwt,jose,step crypto). - Uvezite ključ u alat za otklanjanje pogrešaka kao što je JWT Verifier koji očekuje PEM ključ u svom polju "javni ključ".
- Pohranite ključ u lokalnu predmemoriju ili u konfiguracijsku datoteku u univerzalnom obliku i čitljiv.
- Brzo usporedite dva ključa (PEM format olakšava vizualne razlike).
Ograničenja i upozorenja
Ovaj alat podržava RSA (kty=RSA) i EC javne ključeve
(kty=EC na krivuljama P-256, P-384,
P-521). Ostale vrste (OKP za Ed25519, oct za
simetrični ključevi) se ne pretvaraju: prijavljuju ih porukom o pogrešci
unos, ostatak JWKS ostaje čitljiv.
- Konverzija se vrši u jednom smjeru: JWKS u PEM. The ponovna izrada JWK-a iz postojećeg PEM ključa nije obuhvaćena ovime verzija.
- JWKS mora biti zalijepljen kakav jest kao JSON tekst. Oporavak
automatski s URL-a
jwks_uriili OIDC krajnje točke nije učinjeno poslužitelj, kako biste izbjegli neočekivane odlazne pozive. - Privatni ključevi ne bi se trebali pojavljivati u javnom JWKS-u, a ovaj alat ne izdvaja nego javne komponente čak i ako je privatni ključ bio prisutan.
Kako ga koristiti
- Dohvatite JWKS odašiljača koji želite pregledati. Za davatelja OIDC,
adresa je obično
https://example.com/.well-known/jwks.jsonilihttps://example.com/oauth2/jwks. - Kopirajte cijeli JSON dokument (objekt koji sadrži ključ
keys). - Zalijepite ga u okvir za unos alata i pokrenite analizu.
- Za svaki JWKS ključ, alat prikazuje njegov
kid, njegovkty, njegovalg, njegovauporabai javni ključ pretvoren u PEM format. - Kliknite na "kopiraj" da biste dohvatili PEM i upotrijebili ga u skripti za provjeru, u naš JWT Verifier ili u bilo kojem kompatibilnom alatu OpenSSL.
Često postavljana pitanja
Gdje mogu pronaći JWKS davatelja OIDC?
Velika većina pružatelja usluga OpenID Connect objavljuje dokument otkrića na
https://example.com/.well-known/openid-configuration. Ovaj JSON sadrži polje
jwks_uri koji ukazuje na stvarni JWKS. Neki dobavljači služe izravno
JWKS na https://example.com/.well-known/jwks.json ili na OAuth2 krajnjoj točki
posvećena. Preuzmite sadržaj i zalijepite ga ovdje kakav jest.
Zašto je dijete važno?
kid (ID ključa) je identifikator koji zaglavlje JWT-a stavlja u vlastito polje
kid za označavanje koji JWKS ključ treba koristiti za provjeru. Bez ovoga
identifikator, potrošač bi morao isprobati svaki ključ JWKS-a, što komplicira dijagnozu
slučaj pogreške. Prisutnost djeteta po ključu se stoga smatra dobrom
praktičan, a svi ozbiljni IdP-ovi objavljuju jedan.
Koja je razlika između kty=RSA i kty=EC?
RSA je povijesna obitelj asimetričnih potpisa, koja se koristi s RS256, RS384, RS512. The
ključevi su opisani modulom n i eksponentom e. EC (Eliptični
Curve) je noviji i daje kraće potpise za ekvivalentnu razinu sigurnosti.
EC ključevi su opisani jednom krivuljom (crv = P-256, P-384 ili P-521) i dvije
x i y koordinate. Ovaj alat pretvara obje obitelji u PEM.
Kako koristiti izdvojeni PEM za provjeru JWT-a?
Kopirajte PEM, zatim ga zalijepite u polje "javni ključ" našeg
JWT Verifier s JWT-om za provjeru. Možete također
koristite ga iz naredbenog retka s openssl dgst, iz Node.js s
crypto.verify, iz Pythona s kriptografijom ili
PyJWT, iz Jave s JCA, itd. PEM format je univerzalno prepoznat.
Moj JWKS sadrži ključ Ed25519 (OKP), zašto nije pretvoren?
Konverzija ključeva OKP (Ed25519, Ed448, X25519, X448) zahtijeva logiku
specifično i DER kodiranje različito od RSA i EC ključeva. Ova verzija alata nema
podržava samo RSA i EC. Prijavljeni su neupravljani ključevi
pojedinačno s porukom o pogrešci, bez blokiranja analize drugih JWKS unosa.
Možemo li dohvatiti JWKS iz URL-a umjesto da ga zalijepimo?
Ne u ovoj verziji. Alat ne čini nikakve odlazne HTTP pozive kako bi ostao brz i izbjegao ih
djelovati kao nenamjerni posrednik. Preuzmite JWKS iz svog preglednika ili s
curl https://example.com/.well-known/jwks.json zatim zalijepite sadržaj u polje
unos.
Primjer zahtjeva
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Ulazna shema
| Polje | Tip | Obavezno | Zadano |
|---|---|---|---|
jwks |
text | ✓ | – |
Krajnje točke
GET https://cdrn.fr/api/v1/tools- ispisuje sve dostupne alateGET https://cdrn.fr/api/v1/tools/jwks-inspector- dohvaća shemu ovog alataPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- izvršava ovaj alat s JSON payloadom