Iniúchaigh JWKS agus bain eochracha poiblí PEM

iniúchann sé JWK Set (JSON Web Key Set) agus baineann sé gach eochair phoiblí amach i bhformáid PEM, réidh le húsáid chun sínithe JWT a fhíorú ó sholáthraí féiniúlachta (OIDC, Auth0, Keycloak…)
Greamaigh ábhar iomlán doiciméad JWKS, mar shampla an ceann atá ar fáil ar /.well-known/jwks.json.

Cad is JWKS ann?

Is doiciméad JSON é JWKS (JSON Web Key Set, RFC 7517) a ghrúpálann le chéile a liosta na n-eochracha poiblí i bhfoirm struchtúrtha. Úsáidtear é chun na heochracha a fhoilsíonn eisitheoir JWT úsáidí chun a chuid comharthaí a shíniú, ionas gur féidir le haon tomhaltóir iad a bhailiú agus síniú na comharthaí a fhaigheann sé a fhíorú. Breathnaíonn an fhormáid mar seo i gcónaí:

{
  "eochracha": [
    { "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
    { "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
  ]
}

Tá gach iontráil sa tábla eochracha ina JWK (Eochair Ghréasáin JSON) a cur síos ar eochair phoiblí: cineál eochrach (kty), aitheantóir (kid), úsáid beartaithe (úsáid), algartam sprice (alg) agus comhpháirteanna cripteagrafacha.

Cathain a úsáidtear JWKS?

Is é an JWKS cnámh droma ailtireachtaí nua-aimseartha OAuth2 agus OpenID Connect. tu rachaidh sé i dteagmháil i gcomhthéacsanna éagsúla:

  • Fionnachtain OIDC: nochtar aon soláthraí OpenID Connect doiciméad de cumraíocht ag /.well-known/openid-configuration ina bhfuil réimse jwks_uri. Ag an URL seo tá JWKS ina liostaítear eochracha poiblí gníomhacha.
  • Fíorú JWT: nuair a fhaigheann do API chomhartha sínithe in RS256 nó ES256, léann sé kid an cheanntásca, íoslódálann sé JWKS an tarchuradóra, aimsíonn sé an eochair comhfhreagrach, díorthaigh an eochair phoiblí i bhformáid PEM, agus fíoraíonn sé an síniú.
  • Rothlú eochrach: is féidir le heisitheoir roinnt eochracha a fhoilsiú ag an am céanna, seo a ligeann duit eochair nua a thabhairt isteach chun na comharthaí nua a shíniú agus tú á gcoimeád an seancheann i mbun seirbhíse agus na comharthaí a bhí i gcúrsaíocht in éag.
  • Cónaidhm: SAML, SCIM, seirbhísí idirnasctha, foilsiú JWKS seachnaíonn sé teastais X.509 a mhalartú de láimh idir comhpháirtithe.

Réimsí riachtanacha JWK

Tá roinnt réimsí le feiceáil go córasach i JWK. Déanann an uirlis seo iad a bhaint agus a thaispeáint do gach eochair de na JWKS a ndearnadh anailís orthu:

  • kid (aitheantas eochrach): aitheantóir uathúil na heochrach. Is é an luach seo a chuireann ceanntásc JWT ina réimse kid chun a léiriú cén eochair den JWKS Ní mór é a úsáid le haghaidh fíorú.
  • kty (cineál eochrach): teaghlach cripteagrafach. An dá luach is iad RSA ceannasach (eochracha clasaiceacha RSA, a úsáidtear le RS256, RS384, RS512) agus EC (cuair éilipseacha, in úsáid le ES256, ES384, ES512).
  • alg (algartam): algartam sínithe a bhfuil an eochair seo aige atá beartaithe. Réimse roghnach ach is minic a líonadh isteach é. Ligeann sé duit eochracha a scagadh go tapa inúsáidte do JWT ar leith.
  • úsáid: úsáid na heochrach. sig don síniú (cás gnách), enc le haghaidh criptithe (annamh, úsáidtear é le JWE).

Cén fáth JWK a thiontú go PEM?

Formhór na leabharlanna cripteagrafacha clasaiceacha (OpenSSL, openssl_verify isteach PHP, crypto in Node.js, JCA i Java) ag glacadh le heochracha poiblí san fhormáid PEM (Base64 frámaithe ag ----- BEGIN EOCHAIR PHOIBLÍ -----), ní go díreach i bhformáid JWK. Tá sé ríthábhachtach mar sin JWK a thiontú go PEM le haghaidh:

  • Deimhnigh de láimh síniú JWT ó script nó uirlis líne ordaithe (jwt, jose, step crypto).
  • Iompórtáil an eochair isteach in uirlis dífhabhtaithe mar Fíoraitheoir JWT a bhfuiltear ag súil le heochair PEM ina réimse “eochair phoiblí”.
  • Stóráil eochair i dtaisce áitiúil nó i gcomhad cumraíochta i bhfoirm uilíoch agus inléite.
  • Déan comparáid tapa idir dhá eochair (éascaíonn formáid PEM difríochtaí amhairc).

Teorainneacha agus rabhaidh

Tacaíonn an uirlis seo le RSA (kty=RSA) agus eochracha poiblí an EC (kty=EC ar chuair P-256, P-384, P-521). Cineálacha eile (OKP don Ed25519, deireadh le haghaidh ní thiontaítear eochracha siméadracha: tuairiscítear iad le teachtaireacht earráide le ionchur, tá an chuid eile den JWKS inléite fós.

  • Déantar an tiontú i dtreo amháin: JWKS go PEM. Tá an ní chlúdaítear leis seo JWK a atógáil ó eochair PEM atá ann cheana leagan.
  • Ní mór an JWKS a ghreamú mar atá mar théacs JSON. Aisghabháil uathoibríoch ó URL jwks_uri nó níl críochphointe OIDC déanta taobh freastalaí, chun glaonna amach gan choinne a sheachaint.
  • Níl eochracha príobháideacha ceaptha le feiceáil i JWKS poiblí, agus ní bhaintear as an uirlis seo ná comhpháirteanna poiblí fiú má bhí eochair phríobháideach i láthair.

Conas é a úsáid

  1. Aisghabh JWKS an tarchuradóra is mian leat a iniúchadh. Maidir le soláthraí OIDC, is gnách go bhfuil an seoladh https://example.com/.well-known/jwks.jsonhttps://example.com/oauth2/jwks.
  2. Cóipeáil an doiciméad JSON ar fad (an réad ina bhfuil an eochair na heochracha).
  3. Greamaigh sa bhosca ionchuir uirlisí é agus cuir tús leis an anailís.
  4. I gcás gach eochair JWKS, taispeánann an uirlis a kid, a kty, a alg, a úsáid agus an eochair phoiblí tiontaithe go formáid PEM.
  5. Cliceáil ar "copy" chun an PEM a fháil agus é a úsáid i script fíorúcháin, isteach ár Fíoraitheoir JWT, nó in aon uirlis chomhoiriúnach OscailSSL.

Ceisteanna coitianta

Cá bhfaighidh mé JWKS soláthraí OIDC?

Foilsíonn formhór mór na soláthraithe OpenID Connect doiciméad fionnachtana ar https://example.com/.well-known/openid-configuration. Tá réimse sa JSON seo jwks_uri a dhíríonn ar an JWKS iarbhír. Freastalaíonn roinnt soláthraithe go díreach an JWKS ar https://example.com/.well-known/jwks.json nó ar chríochphointe OAuth2 tiomnaithe. Íoslódáil an t-ábhar agus greamaigh anseo é mar atá.

Cén fáth a bhfuil an kid tábhachtach?

Is é an kid (aitheantas eochrach) an t-aitheantóir a chuireann ceanntásc JWT ina réimse féin kid chun a chur in iúl cé acu eochair JWKS ba cheart a úsáid don fhíorú. Sin é seo aitheantóir, bheadh ar an tomhaltóir iarracht a dhéanamh gach eochair de na JWKS, rud a casta an diagnóis trí cás earráide. Meastar mar sin gur maith an rud é kid in aghaidh na heochrach praiticiúil, agus foilsíonn gach IDP tromchúiseach ceann.

Cad é an difríocht idir kty=RSA agus kty=EC?

Is é RSA an teaghlach stairiúil sínithe neamhshiméadracha, a úsáidtear le RS256, RS384, RS512. Tá an cuireann modúl n agus easpónant e síos ar eochracha. CE (éilipseach Curve) níos déanaí agus tugann sé sínithe níos giorra do leibhéal coibhéiseach slándála. Déantar cur síos ar eochracha CE ag cuar amháin (crv = P-256, P-384 nó P-521) agus dhá cheann Comhordanáidí x agus y. Tiontaíonn an uirlis seo an dá theaghlach go PEM.

Conas an PEM a bhaintear a úsáid chun JWT a fhíorú?

Cóipeáil an PEM, ansin é a ghreamú isteach sa réimse "eochair phoiblí" dár Fíoraitheoir JWT leis an JWT le bailíochtú. Is féidir leat freisin úsáid é ón líne ordaithe le openssl dgst, ó Node.js le crypto.verify, ó Python le cryptographyPyJWT, ó Java le JCA, etc. Aithnítear formáid PEM go huilíoch.

Tá eochair Ed25519 (OKP) i mo JWKS, cén fáth nach bhfuil sé tiontaithe?

Teastaíonn loighic chun eochracha OKP (Ed25519, Ed448, X25519, X448) a thiontú sonrach agus ionchódú DER difriúil ó ionchódú eochracha RSA agus CE. Ní dhéanann an leagan seo den uirlis ní thacaíonn ach RSA agus EC. Tuairiscítear eochracha neamhbhainistithe ina n-aonar le teachtaireacht earráide, gan bac a chur ar anailís ar iontrálacha eile JWKS.

An féidir linn an JWKS a fháil ó URL seachas é a ghreamú?

Níl sa leagan seo. Ní dhéanann an uirlis aon ghlaonna HTTP amach chun fanacht go tapa agus a sheachaint chun gníomhú mar seachfhreastalaí neamhbheartaithe. Íoslódáil an JWKS ó do bhrabhsálaí nó le curl https://example.com/.well-known/jwks.json ansin greamaigh an t-ábhar isteach sa réimse iontráil.

Sampla iarratais

curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
  -H "Content-Type: application/json" \
  -d '{"jwks":"..."}'

Scéimre ionchuir

Réimse Cineál Riachtanach Réamhshocrú
jwks text

Críochphointí

  • GET https://cdrn.fr/api/v1/tools - liostaíonn na huirlisí go léir atá ar fáil
  • GET https://cdrn.fr/api/v1/tools/jwks-inspector - faigh scéimre na huirlise seo
  • POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute - rith an uirlis seo le pálasta JSON