Tarkasta JWKS ja poimi julkiset PEM-avaimet
- Hallintapaneeli
- Dokumentaatio
- API
Mikä on JWKS ?
JWKS (JSON Web Key Set, RFC 7517) on JSON-dokumentti, joka sisältää luettelon julkisista avaimista jäsennellyssä muodossa. Sitä käytetään JWT-myöntäjän käyttämien allekirjoitusavainten julkaisemiseen, jotta kuka tahansa vastaanottaja voi noutaa ne ja varmistaa saamansa tunnuksen allekirjoituksen. Muoto näyttää aina tältä :
{
"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": "..." }
]
}
Jokainen keys-taulukon merkintä on JWK (JSON Web Key), joka
kuvaa julkisen avaimen : avaintyyppi (kty), tunniste (kid), suunniteltu käyttö
(use), kohdealgoritmi (alg) ja kryptografiset komponentit.
Milloin JWKS-avainta käytetään ?
JWKS on nykyaikaisten OAuth2- ja OpenID Connect -arkkitehtuurien selkäranka. Törmäät siihen useissa yhteyksissä :
- OIDC-haku : jokainen OpenID Connect -toimittaja tarjoaa määritysdokumentin osoitteessa
/.well-known/openid-configuration, joka sisältääjwks_uri-kentän. Tässä URL-osoitteessa on JWKS, joka luettelee aktiiviset julkiset avaimet. - JWT-varmennus : kun API vastaanottaa RS256- tai ES256-allekirjoitetun tunnuksen, se lukee otsikon
kid-kentän, lataa myöntäjän JWKS:n, etsii vastaavan avaimen, johtaa siitä julkisen avaimen PEM-muodossa ja varmistaa allekirjoituksen. - Avainten kierto : myöntäjä voi julkaista useita avaimia samanaikaisesti, mikä mahdollistaa uuden avaimen käyttöönoton uusien tunnusten allekirjoittamiseen samalla, kun vanha avain pidetään käytössä, kunnes liikkeellä olevat tunnukset vanhenevat.
- Federaatiot : SAML, SCIM, toisiinsa kytketyt palvelut; JWKS:n julkaiseminen poistaa tarpeen vaihtaa manuaalisesti X.509-sertifikaatteja kumppaneiden välillä.
JWK-avaimen olennaiset kentät
Jotkut kentät toistuvat säännöllisesti JWK-avaimessa. Tämä työkalu poimii ja näyttää ne jokaiselle analysoidun JWKS:n avaimelle :
kid(key ID) : avaimen yksilöllinen tunniste. Tämä on arvo, jonka JWT-otsikko asettaakid-kenttäänsä ilmoittaakseen, mitä JWKS:n avainta tulee käyttää varmentamiseen.kty(key type) : kryptografinen perhe. Kaksi hallitsevaa arvoa ovatRSA(perinteiset RSA-avaimet, käytetään RS256:n, RS384:n, RS512:n kanssa) jaEC(elliptiset käyrät, käytetään ES256:n, ES384:n, ES512:n kanssa).alg(algorithm) : allekirjoitusalgoritmi, jolle tämä avain on tarkoitettu. Valinnainen kenttä, mutta usein täytetty. Mahdollistaa tietylle JWT:lle käyttökelpoisten avainten nopean suodattamisen.use: avaimen käyttö.sigallekirjoitukseen (tavallinen tapaus),encsalaamiseen (harvinainen, käytetään JWE:n kanssa).
Miksi muuntaa JWK PEM-muotoon ?
Suurin osa klassisista kryptografisista kirjastoista (OpenSSL, openssl_verify PHP:ssä, crypto Node.js:ssä, JCA Javassa) hyväksyy julkiset avaimet PEM-muodossa (Base64-koodattu -----BEGIN PUBLIC KEY----- -kehyksessä), ei suoraan JWK-muodossa. JWK:n muuntaminen PEM-muotoon on siis välttämätöntä seuraaviin tarkoituksiin :
- Varmista manuaalisesti JWT-allekirjoitus skriptistä tai komentorivityökalusta (
jwt,jose,step crypto). - Tuo avain virheenkorjaustyökaluun, kuten JWT Verifieriin, joka odottaa PEM-avainta "julkinen avain" -kenttäänsä.
- Tallenna avain paikalliseen välimuistiin tai määritystiedostoon yleispätevässä ja luettavassa muodossa.
- Vertaa nopeasti kahta avainta (PEM-muoto helpottaa visuaalista vertailua).
Rajoitukset ja varoitukset
Tämä työkalu tukee julkisia avaimia RSA (kty=RSA) ja EC
(kty=EC käyrillä P-256, P-384,
P-521). Muita tyyppejä (OKP Ed25519:lle, oct symmetrisille avaimille) ei muunneta : niistä ilmoitetaan virhesanomalla kunkin merkinnän kohdalla, muu osa JWKS:stä pysyy luettavana.
- Muunnos tapahtuu vain yhteen suuntaan : JWKS:stä PEM-muotoon. JWK:n muodostamista olemassa olevasta PEM-avaimesta ei tueta tässä versiossa.
- JWKS on liitettävä sellaisenaan JSON-tekstimuodossa. Automaattista noutoa
jwks_uri-URL-osoitteesta tai OIDC-päätepisteestä ei tehdä palvelinpuolella odottamattomien ulkoisten kutsujen välttämiseksi. - Yksityisten avainten ei kuulu näkyä julkisessa JWKS:ssä, ja tämä työkalu poimii vain julkiset komponentit, vaikka yksityinen avain olisikin mukana.
Kuinka sitä käytetään
- Hae sen myöntäjän JWKS, jota haluat tarkastella. OIDC-toimittajalla osoite on yleensä
https://esimerkki.com/.well-known/jwks.jsontaihttps://esimerkki.com/oauth2/jwks. - Kopioi koko JSON-dokumentti (objekti, joka sisältää
keys-avaimen). - Liitä se työkalun syöttöalueelle ja käynnistä analyysi.
- Työkalu näyttää jokaiselle JWKS:n avaimelle sen
kid-,kty-,alg- jause-tiedot sekä PEM-muotoon muunnetun julkisen avaimen. - Napsauta "kopioi" noutaaksesi PEM-avaimen ja käyttääksesi sitä varmistusskriptissä, JWT Verifierissämme tai missä tahansa OpenSSL-yhteensopivassa työkalussa.
Usein kysytyt kysymykset
Mistä löytyy OIDC-toimittajan JWKS ?
Suurin osa OpenID Connect -toimittajista julkaisee hakudokumentin osoitteessa https://esimerkki.com/.well-known/openid-configuration. Tämä JSON sisältää jwks_uri-kentän, joka viittaa varsinaiseen JWKS-avaimeen. Jotkut toimittajat tarjoavat JWKS:n suoraan osoitteessa https://esimerkki.com/.well-known/jwks.json tai erillisessä OAuth2-päätepisteessä. Lataa sisältö ja liitä se tähän sellaisenaan.
Miksi kid on tärkeä ?
kid (key ID) on tunniste, jonka JWT-otsikko asettaa omaan kid-kenttäänsä ilmoittaakseen, mitä JWKS:n avainta tulee käyttää varmentamiseen. Ilman tätä tunnistetta vastaanottajan pitäisi kokeilla jokaista JWKS:n avainta, mikä vaikeuttaa vianmääritystä virhetilanteissa. kid-kentän sisällyttämistä avainta kohden pidetään hyvänä käytäntönä, ja kaikki vakavasti otettavat identiteetintarjoajat julkaisevat sellaisen.
Mitä eroa on kty=RSA:lla ja kty=EC:llä ?
RSA on historiallinen epäsymmetristen allekirjoitusten perhe, jota käytetään RS256:n, RS384:n ja RS512:n kanssa. Avaimia kuvataan modulolla n ja eksponentilla e. EC (Elliptic Curve) on uudempi ja antaa lyhyempiä allekirjoituksia samalla turvallisuustasolla. EC-avaimia kuvataan käyrällä (crv = P-256, P-384 tai P-521) ja kahdella koordinaatilla x ja y. Tämä työkalu muuntaa molemmat perheet PEM-muotoon.
Kuinka poimittua PEM-avainta käytetään JWT:n varmistamiseen ?
Kopioi PEM ja liitä se JWT Verifierimme "julkinen avain" -kenttään yhdessä vahvistettavan JWT:n kanssa. Voit käyttää sitä myös komentoriviltä openssl dgst -komennolla, Node.js:stä crypto.verify-toiminnolla, Pythonista cryptography- tai PyJWT-kirjastoilla, Javasta JCA-kirjastolla jne. PEM-muoto on yleisesti tunnustettu.
JWKS-avaimeni sisältää Ed25519 (OKP) -avaimen, miksi sitä ei muunneta ?
OKP-avainten (Ed25519, Ed448, X25519, X448) muuntaminen vaatii erityistä logiikkaa ja erilaisen DER-koodauksen kuin RSA- ja EC-avaimet. Työkalun tämä versio tukee vain RSA- ja EC-avaimia. Tukemattomista avaimista ilmoitetaan erikseen virhesanomalla estämättä JWKS:n muiden merkintöjen analysointia.
Voiko JWKS-avaimen hakea URL-osoitteesta sen sijaan, että se liitetään ?
Ei tässä versiossa. Työkalu ei tee ulkoisia HTTP-kutsuja nopeuden säilyttämiseksi ja välttääkseen toimimasta tahattomana välityspalvelimena. Lataa JWKS selaimellasi tai curl https://esimerkki.com/.well-known/jwks.json -komennolla ja liitä sisältö syöttökenttään.
Pyyntöesimerkki
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Syöteskeema
| Kenttä | Tyyppi | Pakollinen | Oletus |
|---|---|---|---|
jwks |
text | ✓ | – |
Päätepisteet
GET https://cdrn.fr/api/v1/tools- listaa kaikki saatavilla olevat työkalutGET https://cdrn.fr/api/v1/tools/jwks-inspector- hakee tämän työkalun skeemanPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- suorittaa tämän työkalun JSON-payloadilla