Patikrinti JWKS ir ištraukti viešuosius PEM raktus
- Skydelis
- Dokumentacija
- API
Kas yra JWKS?
JWKS (JSON žiniatinklio raktų rinkinys, RFC 7517) yra JSON dokumentas, sugrupuojantis viešųjų raktų sąrašas struktūrizuota forma. Jis naudojamas JWT leidėjo raktams paskelbti pasirašo savo žetonus, kad bet kuris vartotojas galėtų juos atsiimti ir patikrinkite gautų žetonų parašą. Formatas visada atrodo taip:
{
"raktai": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Kiekvienas įrašas lentelėje raktai yra JWK (JSON žiniatinklio raktas), kuris
aprašo viešąjį raktą: rakto tipas (kty), identifikatorius (kid), naudojimas
skirtas (naudoti), tikslinį algoritmą (alg) ir kriptografinius komponentus.
Kada naudojamas JWKS?
JWKS yra šiuolaikinės OAuth2 ir OpenID Connect architektūros pagrindas. Jūs susidurs keliuose kontekstuose:
- OIDC atradimas: bet kuris „OpenID Connect“ teikėjas atskleidžia dokumentą
konfigūracija adresu
/.well-known/openid-configuration, kurioje yra laukasjwks_uri. Šiame URL yra JWKS, kuriame išvardyti aktyvūs viešieji raktai. - JWT patvirtinimas: kai jūsų API gauna prieigos raktą, pasirašytą RS256 arba ES256,
nuskaito antraštės
kid, atsisiunčia siųstuvo JWKS, randa raktą atitinka, išveda viešąjį raktą PEM formatu ir patikrina parašą. - Raktų kaitaliojimas: emitentas gali vienu metu paskelbti kelis raktus. kuri leidžia įvesti naują raktą, kad pasirašytumėte naujus žetonus išsaugant senasis naudojamas, o apyvartoje esančių žetonų galiojimo laikas baigiasi.
- Federacijos: SAML, SCIM, tarpusavyje susijusios paslaugos, JWKS paskelbimas išvengiama rankinio keitimosi X.509 sertifikatais tarp partnerių.
Esminės JWK sritys
Kai kurie laukai sistemingai rodomi JWK. Šis įrankis juos ištraukia ir parodo kiekvienam analizuojamo JWKS raktui:
vaikas(rakto ID): unikalus rakto identifikatorius. Būtent ši vertė kurį JWT antraštė įdeda įvaikaslauką, kad nurodytų, kuris JWKS raktas turi būti naudojami patvirtinimui.kty(rakto tipas): kriptografinė šeima. Dvi vertybės dominuojantys yraRSA(klasikiniai RSA raktai, naudojami su RS256, RS384, RS512) irEC(elipsinės kreivės, naudojamos su ES256, ES384, ES512).alg(algoritmas): parašo algoritmas, kuriam šis raktas planuojama. Neprivalomas laukas, bet dažnai užpildomas. Leidžia greitai filtruoti raktus galima naudoti tam tikram JWT.naudoti: rakto naudojimas.sigparašui (atvejis įprastas),encšifravimui (reta, naudojama su JWE).
Kodėl JWK konvertuoti į PEM?
Dauguma klasikinių kriptografinių bibliotekų (OpenSSL, openssl_verify
PHP, crypto Node.js, JCA Java) priima viešuosius raktus tokiu formatu
PEM (Base64, įrėminta -----BEGIN PUBLIC KEY-----), ne tiesiogiai
JWK formatu. Todėl JWK konvertavimas į PEM yra būtinas:
- Rankiniu būdu patikrinkite JWT parašą naudodami scenarijų arba komandinės eilutės įrankį
(
jwt,jose,step crypto). - Importuokite raktą į derinimo įrankį, pvz., JWT patvirtinimo priemonę kurios lauke „viešasis raktas“ tikisi PEM rakto.
- Išsaugokite raktą vietinėje talpykloje arba konfigūracijos faile universalia forma ir skaitoma.
- Greitai palyginkite du raktus (PEM formatas palengvina vizualinius skirtumus).
Apribojimai ir įspėjimai
Šis įrankis palaiko RSA (kty=RSA) ir EC viešuosius raktus
(kty=EC kreivėse P-256, P-384,
P-521). Kiti tipai (OKP, skirtas Ed25519, oct
simetriniai raktai) nekonvertuojami: apie juos pranešama su klaidos pranešimu
įvesties, likusi JWKS dalis lieka skaitoma.
- Konvertavimas atliekamas viena kryptimi: JWKS į PEM. The JWK atkūrimas iš esamo PEM rakto netaikomas versija.
- JWKS turi būti įklijuotas toks, koks yra kaip JSON tekstas. Atsigavimas
automatinis iš URL
jwks_uriarba OIDC galutinio taško nėra atliktas serverį, kad išvengtumėte netikėtų išeinančių skambučių. - Privatūs raktai neturi būti rodomi viešajame JWKS, ir šis įrankis neišskleidžia nei viešieji komponentai, net jei buvo privatus raktas.
Kaip juo naudotis
- Gaukite siųstuvo, kurį norite patikrinti, JWKS. OIDC teikėjui,
adresas paprastai yra
https://example.com/.well-known/jwks.jsonarbahttps://example.com/oauth2/jwks. - Nukopijuokite visą JSON dokumentą (objektą, kuriame yra
raktairaktas). - Įklijuokite jį į įrankio įvesties laukelį ir pradėkite analizę.
- Kiekvienam JWKS raktui įrankis rodo jo
kid, jokty, joalg, jonaudojimasir viešasis raktas konvertuoti į PEM formatą. - Spustelėkite „kopijuoti“, kad gautumėte PEM ir naudotumėte jį patvirtinimo scenarijuje, mūsų JWT patvirtinimo priemonėje arba bet kuriame suderinamame įrankyje OpenSSL.
Dažnai užduodami klausimai
Kur galiu rasti OIDC teikėjo JWKS?
Didžioji dauguma „OpenID Connect“ teikėjų skelbia atradimo dokumentą
https://example.com/.well-known/openid-configuration. Šiame JSON yra laukas
jwks_uri, kuris nurodo tikrąjį JWKS. Kai kurie tiekėjai aptarnauja tiesiogiai
JWKS adresu https://example.com/.well-known/jwks.json arba „OAuth2“ galutiniame taške
skirta. Atsisiųskite turinį ir įklijuokite jį čia tokį, koks yra.
Kodėl vaikas svarbus?
vaikas (rakto ID) yra identifikatorius, kurį JWT antraštė įdeda į savo lauką
vaikas, kad nurodytumėte, kuris JWKS raktas turi būti naudojamas patvirtinimui. Be šito
identifikatorius, vartotojas turėtų bandyti kiekvieną JWKS raktą, o tai apsunkina diagnozę
klaidos atvejis. Todėl vaiko buvimas kiekviename rakte laikomas privalumu
praktiška, o visi rimti IDP skelbia vieną.
Kuo skiriasi kty=RSA ir kty=EC?
RSA yra istorinė asimetrinių parašų šeima, naudojama su RS256, RS384, RS512. The
raktai aprašomi modulo n ir eksponentu e. EC (elipsinis
Kreivė) yra naujesnė ir suteikia trumpesnius parašus, kad būtų užtikrintas lygiavertis saugumo lygis.
EC raktai apibūdinami viena kreive (crv = P-256, P-384 arba P-521) ir dviem
x ir y koordinates. Šis įrankis konvertuoja abi šeimas į PEM.
Kaip naudoti ištrauktą PEM JWT patvirtinti?
Nukopijuokite PEM, tada įklijuokite jį į mūsų lauką „viešasis raktas“.
JWT tikrintuvas su JWT patvirtinimui. Taip pat galite
naudokite jį komandų eilutėje su openssl dgst, iš Node.js su
crypto.verify, iš Python su kriptografija arba
PyJWT, iš Java su JCA ir kt. PEM formatas yra visuotinai atpažįstamas.
Mano JWKS yra Ed25519 (OKP) raktas, kodėl jis nekonvertuotas?
OKP raktų (Ed25519, Ed448, X25519, X448) konvertavimui reikalinga logika
specifinis ir DER kodavimas skiriasi nuo RSA ir EC raktų. Ši įrankio versija to nedaro
palaiko tik RSA ir EC. Pranešama apie nevaldomus raktus
atskirai su klaidos pranešimu, neblokuojant kitų JWKS įrašų analizės.
Ar galime gauti JWKS iš URL, o ne jį įklijuoti?
Ne šioje versijoje. Įrankis neatlieka jokių išeinančių HTTP skambučių, kad išliktų greitas ir išvengtų
veikti kaip netyčinis įgaliotinis. Atsisiųskite JWKS iš savo naršyklės arba su
suvyniokite https://example.com/.well-known/jwks.json, tada įklijuokite turinį į lauką
įrašas.
Užklausos pavyzdys
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Įvesties schema
| Laukas | Tipas | Privalomas | Numatytasis |
|---|---|---|---|
jwks |
text | ✓ | – |
Galiniai taškai
GET https://cdrn.fr/api/v1/tools- išvardija visus galimus įrankiusGET https://cdrn.fr/api/v1/tools/jwks-inspector- gauna šio įrankio schemąPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- vykdo šį įrankį su JSON payload