Pārbaudīt JWKS un izvilkt publiskās PEM atslēgas
- Vadības panelis
- Dokumentācija
- API
Kas ir JWKS?
JWKS (JSON Web Key Set, RFC 7517) ir JSON dokuments, kas grupē publisko atslēgu saraksts strukturētā formā. To izmanto, lai publicētu JWT izsniedzēja atslēgas izmanto, lai parakstītu savus žetonus, lai ikviens patērētājs varētu tos savākt un pārbaudīt saņemto marķieru parakstu. Formāts vienmēr izskatās šādi:
{
"atslēgas": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Katrs ieraksts tabulā keys ir JWK (JSON Web Key), kas
apraksta publisko atslēgu: atslēgas veids (kty), identifikators (bērns), lietojums
paredzētais (izmantot), mērķa algoritms (alg) un kriptogrāfiskie komponenti.
Kad tiek izmantots JWKS?
JWKS ir mūsdienu OAuth2 un OpenID Connect arhitektūru mugurkauls. Tu saskarsies vairākos kontekstos:
- OIDC atklāšana: jebkurš OpenID Connect pakalpojumu sniedzējs atklāj dokumentu
konfigurācija vietnē
/.well-known/openid-configuration, kurā ir lauksjwks_uri. Šajā URL ir JWKS, kurā ir uzskaitītas aktīvās publiskās atslēgas. - JWT verifikācija: kad jūsu API saņem pilnvaru, kas parakstīta RS256 vai ES256,
tas nolasa galvenes
bērns, lejupielādē raidītāja JWKS, atrod atslēgu atbilst, iegūst publisko atslēgu PEM formātā un pārbauda parakstu. - Atslēgas rotācija: izdevējs var publicēt vairākas atslēgas vienlaikus. kas ļauj ieviest jaunu atslēgu, lai parakstītu jaunos marķierus, saglabājot tos vecais, kas darbojas, kamēr beidzas apgrozībā esošo žetonu derīguma termiņš.
- Federācijas: SAML, SCIM, savstarpēji saistīti pakalpojumi, JWKS publicēšana ļauj izvairīties no nepieciešamības manuāli apmainīties ar X.509 sertifikātiem starp partneriem.
JWK būtiskie lauki
Daži lauki sistemātiski parādās JWK. Šis rīks tos izvelk un parāda katrai analizētajai JWKS atslēgai:
bērns(atslēgas ID): unikāls atslēgas identifikators. Tā ir šī vērtība ko JWT galvene ievieto laukākid, lai norādītu, kura JWKS atslēga ir jāizmanto verifikācijai.kty(atslēgas veids): kriptogrāfijas saime. Abas vērtības dominējošās irRSA(klasiskās RSA atslēgas, ko izmanto ar RS256, RS384, RS512) unEC(eliptiskas līknes, izmantotas ar ES256, ES384, ES512).alg(algoritms): paraksta algoritms, kuram šī atslēga ir plānots. Neobligāts lauks, bet bieži aizpildīts. Ļauj ātri filtrēt atslēgas var izmantot konkrētam JWT.izmantot: atslēgas lietošana.sigparakstam (case parasti),encšifrēšanai (reti, tiek lietots kopā ar JWE).
Kāpēc pārveidot JWK par PEM?
Lielākā daļa klasisko kriptogrāfisko bibliotēku (OpenSSL, openssl_verify
PHP, crypto Node.js, JCA Java) pieņem publiskās atslēgas šādā formātā
PEM (Base64 ierāmēts ar -----BEGIN PUBLISKO ATSLĒGU-----), nevis tieši
JWK formātā. Tāpēc JWK konvertēšana uz PEM ir būtiska:
- Manuāli pārbaudiet JWT parakstu, izmantojot skriptu vai komandrindas rīku
(
jwt,jose,step crypto). - Importējiet atslēgu atkļūdošanas rīkā, piemēram, JWT Verifier kura laukā "publiskā atslēga" sagaida PEM atslēgu.
- Saglabājiet atslēgu vietējā kešatmiņā vai konfigurācijas failā universālā formā un lasāms.
- Ātri salīdziniet divas atslēgas (PEM formāts atvieglo vizuālās atšķirības).
Ierobežojumi un brīdinājumi
Šis rīks atbalsta RSA (kty=RSA) un EC publiskās atslēgas.
(kty=EC līknēs P-256, P-384,
P-521). Citi veidi (OKP priekš Ed25519, oct
simetriskas atslēgas) netiek konvertētas: par tām tiek ziņots ar kļūdas ziņojumu
ievade, pārējā JWKS daļa paliek lasāma.
- Pārveidošana tiek veikta vienā virzienā: JWKS uz PEM. The Tas neattiecas uz JWK pārbūvi no esošas PEM atslēgas versija.
- JWKS ir jāielīmē tāds, kāds tas ir kā JSON teksts. Atveseļošanās
automātiski no URL
jwks_urivai OIDC galapunkta netiek darīts pusē serveri, lai izvairītos no negaidītiem izejošiem zvaniem. - Privātajām atslēgām nav jāparādās publiskā JWKS, un šis rīks neizņem nekā publiskie komponenti, pat ja bija privātā atslēga.
Kā to lietot
- Izgūstiet tā raidītāja JWKS, kuru vēlaties pārbaudīt. OIDC nodrošinātājam,
adrese parasti ir
https://example.com/.well-known/jwks.jsonvaihttps://example.com/oauth2/jwks. - Kopēt visu JSON dokumentu (objektu, kas satur
keysatslēgu). - Ielīmējiet to rīka ievades lodziņā un sāciet analīzi.
- Katrai JWKS atslēgai rīks parāda savu
bērnu,kty, tāalg, tāizmantošanaun publiskā atslēga ir pārveidota PEM formātā. - Noklikšķiniet uz "kopēt", lai izgūtu PEM un izmantotu to verifikācijas skriptā. mūsu JWT verificētājs vai jebkurā saderīgā rīkā OpenSSL.
Bieži uzdotie jautājumi
Kur es varu atrast OIDC nodrošinātāja JWKS?
Lielākā daļa OpenID Connect pakalpojumu sniedzēju publicē atklāšanas dokumentu
https://example.com/.well-known/openid-configuration. Šis JSON satur lauku
jwks_uri, kas norāda uz faktisko JWKS. Daži piegādātāji apkalpo tieši
JWKS vietnē https://example.com/.well-known/jwks.json vai OAuth2 galapunktā
veltīta. Lejupielādējiet saturu un ielīmējiet to šeit, kā tas ir.
Kāpēc bērns ir svarīgs?
bērns (atslēgas ID) ir identifikators, ko JWT galvene ievieto savā laukā.
bērns, lai norādītu, kura JWKS atslēga jāizmanto verifikācijai. Bez šī
identifikators, patērētājam būtu jāizmēģina katra JWKS atslēga, kas sarežģī diagnozi.
kļūdas gadījums. Tāpēc tiek uzskatīts, ka katrā atslēgā ir bērns
praktiski, un visi nopietni IDP tādu publicē.
Kāda ir atšķirība starp kty=RSA un kty=EC?
RSA ir vēsturiska asimetrisko parakstu saime, ko izmanto ar RS256, RS384, RS512. The
atslēgas ir aprakstītas ar modulo n un eksponentu e. EC (eliptisks
Līkne) ir jaunāka un sniedz īsākus parakstus līdzvērtīgam drošības līmenim.
EC taustiņi ir aprakstīti ar vienu līkni (crv = P-256, P-384 vai P-521) un divām
x un y koordinātas. Šis rīks pārvērš abas ģimenes par PEM.
Kā izmantot izvilkto PEM, lai verificētu JWT?
Kopējiet PEM un pēc tam ielīmējiet to mūsu laukā "publiskā atslēga".
JWT verificētājs ar JWT, lai apstiprinātu. Jūs varat arī
izmantojiet to no komandrindas ar openssl dgst, no Node.js ar
crypto.verify, no Python ar kriptogrāfiju vai
PyJWT, no Java ar JCA utt. PEM formāts ir vispāratzīts.
Manā JWKS ir Ed25519 (OKP) atslēga. Kāpēc tā nav konvertēta?
OKP atslēgu (Ed25519, Ed448, X25519, X448) konvertēšanai nepieciešama loģika
specifisks un DER kodējums atšķiras no RSA un EC atslēgām. Šī rīka versija to nedara
atbalsta tikai RSA un EC. Tiek ziņots par nepārvaldītām atslēgām
atsevišķi ar kļūdas ziņojumu, nebloķējot citu JWKS ierakstu analīzi.
Vai mēs varam izgūt JWKS no URL, nevis ielīmēt to?
Ne šajā versijā. Rīks neveic nekādus izejošos HTTP zvanus, lai saglabātu ātrumu un izvairītos no tā
lai darbotos kā netīšs starpnieks. Lejupielādējiet JWKS no pārlūkprogrammas vai ar
izvelciet https://example.com/.well-known/jwks.json, pēc tam ielīmējiet saturu laukā
ierakstu.
Pieprasījuma piemērs
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Ievades shēma
| Lauks | Tips | Obligāts | Noklusējums |
|---|---|---|---|
jwks |
text | ✓ | – |
Endpoint
GET https://cdrn.fr/api/v1/tools- uzskaita visus pieejamos rīkusGET https://cdrn.fr/api/v1/tools/jwks-inspector- iegūst šī rīka shēmuPOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- izpilda šo rīku ar JSON payload