Pregledati JWKS in izvleči javne ključe PEM
- Nadzorna plošča
- Dokumentacija
- API
Kaj je JWKS?
JWKS (JSON Web Key Set, RFC 7517) je dokument JSON, ki združuje seznam javnih ključev v strukturirani obliki. Uporablja se za objavo ključev, ki jih izdajatelj JWT uporablja za podpisovanje svojih žetonov, tako da jih lahko vsak potrošnik prevzame in preveri podpis žetonov, ki jih prejme. Oblika je vedno videti takole:
{
"ključi": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Vsak vnos v tabeli keys je JWK (spletni ključ JSON), ki
opisuje javni ključ: tip ključa (kty), identifikator (kid), uporaba
predvideni (use), ciljni algoritem (alg) in kriptografske komponente.
Kdaj se uporablja JWKS?
JWKS je hrbtenica sodobnih arhitektur OAuth2 in OpenID Connect. Ti se bo srečal v več kontekstih:
- OIDC Discovery: kateri koli ponudnik OpenID Connect razkrije dokument
konfiguracija pri
/.well-known/openid-configuration, ki vsebuje poljejwks_uri. Na tem URL-ju je JWKS, ki navaja aktivne javne ključe. - Preverjanje JWT: ko vaš API prejme žeton, podpisan v RS256 ali ES256,
prebere
kidglave, prenese JWKS oddajnika, najde ključ ustreza, izpelje javni ključ v formatu PEM in preveri podpis. - Rotacija ključev: izdajatelj lahko objavi več ključev hkrati, to ki vam omogoča, da uvedete nov ključ za podpisovanje novih žetonov in hkrati ohranite stari v uporabi, medtem ko žetoni v obtoku potečejo.
- Zveze: SAML, SCIM, medsebojno povezane storitve, objava JWKS prepreči ročno izmenjavo potrdil X.509 med partnerji.
Bistvena polja JWK
Nekatera polja se sistematično pojavljajo v JWK. To orodje jih ekstrahira in prikaže za vsak analizirani ključ JWKS:
kid(ID ključa): enolični identifikator ključa. To je ta vrednost ki ga glava JWT postavi v svoje poljekid, da pokaže, kateri ključ JWKS je treba uporabiti za preverjanje.kty(tip ključa): kriptografska družina. Dve vrednosti prevladujejoRSA(klasični ključi RSA, ki se uporabljajo z RS256, RS384, RS512) inEC(eliptične krivulje, uporabljene z ES256, ES384, ES512).alg(algoritem): algoritem podpisa, za katerega je ta ključ je načrtovano. Izbirno polje, vendar pogosto izpolnjeno. Omogoča hitro filtriranje ključev uporaben za dani JWT.use: uporaba ključa.sigza podpis (male in male črke običajno),encza šifriranje (redko, uporablja se z JWE).
Zakaj pretvoriti JWK v PEM?
Večina klasičnih kriptografskih knjižnic (OpenSSL, openssl_verify v
PHP, crypto v Node.js, JCA v Javi) sprejemajo javne ključe v obliki
PEM (Base64 uokvirjeno s -----BEGIN PUBLIC KEY-----), ne neposredno
v formatu JWK. Pretvarjanje JWK v PEM je torej nujno za:
- Ročno preverite podpis JWT s skriptom ali orodjem ukazne vrstice
(
jwt,jose,step crypto). - Uvozite ključ v orodje za odpravljanje napak, kot je JWT Verifier ki pričakuje ključ PEM v svojem polju "javni ključ".
- Shranite ključ v lokalni predpomnilnik ali v konfiguracijsko datoteko v univerzalni obliki in berljivo.
- Hitro primerjajte dva ključa (format PEM omogoča vizualne razlike).
Omejitve in opozorila
To orodje podpira javne ključe RSA (kty=RSA) in EC
(kty=EC na krivuljah P-256, P-384,
P-521). Druge vrste (OKP za Ed25519, oct za
simetrični ključi) niso pretvorjeni: o njih poročajo s sporočilom o napaki
vnosa, preostali del JWKS ostane berljiv.
- Pretvorba se izvede v eno smer: JWKS v PEM. The ponovna izdelava JWK iz obstoječega ključa PEM ni zajeta v tem različica.
- JWKS je treba prilepiti, kot je kot besedilo JSON. Okrevanje
samodejno iz URL-ja
jwks_uriali končne točke OIDC ni končano strežnik, da se izognete nepričakovanim odhodnim klicem. - Zasebni ključi se ne smejo pojavljati v javnem JWKS in to orodje ne ekstrahira kot javne komponente, tudi če je bil prisoten zasebni ključ.
Kako ga uporabljati
- Pridobite JWKS oddajnika, ki ga želite pregledati. Za ponudnika OIDC,
naslov je običajno
https://example.com/.well-known/jwks.jsonalihttps://example.com/oauth2/jwks. - Kopirajte celoten dokument JSON (predmet, ki vsebuje ključ
keys). - Prilepite ga v polje za vnos orodja in začnite analizo.
- Za vsak ključ JWKS orodje prikaže njegov
kid, njegovkty,alg, njegovauporabain javni ključ, pretvorjen v format PEM. - Kliknite »kopiraj«, da pridobite PEM in ga uporabite v skriptu za preverjanje v naš JWT Verifier ali v katerem koli združljivem orodju OpenSSL.
Pogosta vprašanja
Kje lahko najdem JWKS ponudnika OIDC?
Velika večina ponudnikov OpenID Connect objavi dokument o odkritju na
https://example.com/.well-known/openid-configuration. Ta JSON vsebuje polje
jwks_uri, ki kaže na dejanski JWKS. Nekateri dobavitelji služijo neposredno
JWKS na https://example.com/.well-known/jwks.json ali na končni točki OAuth2
posvečen. Prenesite vsebino in jo prilepite sem, kot je.
Zakaj je otrok pomemben?
kid (ID ključa) je identifikator, ki ga glava JWT postavi v svoje polje
kid, da označite, kateri ključ JWKS naj se uporabi za preverjanje. Brez tega
identifikatorja, bi moral potrošnik preizkusiti vsak ključ JWKS, kar oteži diagnozo
primeru napake. Prisotnost otroka na ključ se torej šteje za dobro
praktičen in vsi resni ponudniki identifikacije jih objavijo.
Kakšna je razlika med kty=RSA in kty=EC?
RSA je zgodovinska družina asimetričnih podpisov, ki se uporablja z RS256, RS384, RS512. The
ključi so opisani z modulom n in eksponentom e. EC (eliptična
Curve) je novejši in daje krajše podpise za enakovredno raven varnosti.
EC ključi so opisani z eno krivuljo (crv = P-256, P-384 ali P-521) in dvema
koordinate x in y. To orodje pretvori obe družini v PEM.
Kako uporabiti ekstrahiran PEM za preverjanje JWT?
Kopirajte PEM in ga prilepite v polje "javni ključ" našega
JWT Verifier z JWT za preverjanje. Lahko tudi
uporabite ga iz ukazne vrstice z openssl dgst, iz Node.js z
crypto.verify, iz Pythona s kriptografijo oz
PyJWT, iz Jave z JCA itd. Format PEM je splošno priznan.
Moj JWKS vsebuje ključ Ed25519 (OKP), zakaj ni pretvorjen?
Pretvorba ključev OKP (Ed25519, Ed448, X25519, X448) zahteva logiko
specifično in kodiranje DER, ki se razlikuje od kodiranja RSA in EC ključev. Ta različica orodja ne
podpira samo RSA in EC. Neupravljani ključi so prijavljeni
posamično s sporočilom o napaki, ne da bi blokirali analizo drugih vnosov JWKS.
Ali lahko JWKS pridobimo iz URL-ja, namesto da ga prilepimo?
Ne v tej različici. Orodje ne izvaja nobenih odhodnih klicev HTTP, da bi ostalo hitro in se jim izognilo
delovati kot nenamerni posrednik. Prenesite JWKS iz brskalnika ali s
curl https://example.com/.well-known/jwks.json nato prilepite vsebino v polje
vstop.
Primer zahteve
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Vhodna shema
| Polje | Tip | Obvezno | Privzeto |
|---|---|---|---|
jwks |
text | ✓ | – |
Končne točke
GET https://cdrn.fr/api/v1/tools- izpiše vsa razpoložljiva orodjaGET https://cdrn.fr/api/v1/tools/jwks-inspector- pridobi shemo tega orodjaPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- izvede to orodje s JSON payloadom