Fíoraigh síniú JSON Web Token (JWT)

fíoraíonn sé síniú JWT (HS256, HS384, HS512, RS256, RS384, RS512) ó rún nó eochair phoiblí, agus iniúchann sé a chuid claims
Le haghaidh HS256 / HS384 / HS512: an teaghrán rúnda. Le haghaidh RS256 / RS384 / RS512: an eochair phoiblí i bhformáid PEM.

Cén fáth síniú JWT a fhíorú?

Déantar JSON Web Token (JWT) a mhiondealú ina thrí chuid agus iad scartha le tréimhsí: header.payload.signature. Níl i gceist le díchódú JWT ach an chéad dá cheann a léamh páirteanna (a bhfuil Base64URL). Is féidir le duine ar bith é a dhéanamh, agus is féidir le duine ar bitha dhéanamh JWT le do rogha. Is é an rud a dhéanann iontaofa JWT ach an síniú: gan fíorú, is ionann glacadh le JWT agus ligean do dhuine ar bith teacht isteach i do theach ligeann air féin gur duine é, gan aitheantas a iarraidh.

Déanann an uirlis seo síniú JWT a fhíorú ó eochair. Níl sé sásta leis díchódaithe: athríomhann sé an síniú ón gceanntásc, an pálasta agus d'eochair, ansin déanann sé comparáid idir é le síniú an chomhartha. Má tá an dá mheaitseáil, is é an comhartha barántúla. Seachas sin bhí sé brionnaithe, modhnaithe, nó sínithe le heochair eile.

Is é an fíorú bunchloch aon ailtireachta a úsáideann JWTs chun fíordheimhniú nó údarú: gan síniú bailí, is féidir an pálasta a luí. Ní bheadh aon deacracht é sin a dhéanamh mura ndearna an freastalaí ach formáid an chomhartha a sheiceáil agus ní a shíniú.

Algartam coitianta

Sainmhíníonn sonraíocht JWT (RFC 7518, Algartam Gréasáin JSON) roinnt teaghlach halgartaim. Seo é na cinn is mó a úsáidtear i dtáirgeadh:

  • HMAC (HS256, HS384, HS512): síniú siméadrach bunaithe ar HMAC-SHA. Tá an Úsáidtear an eochair rúnda chéanna chun síniú agus fíorú a dhéanamh. Simplí le socrú, éifeachtach, ach tá aon pháirtí atá in ann an comhartha a fhíorú in ann é a eisiúint freisin. In oiriúint do chásanna inarb é an fhoireann nó an roinn chéanna an t-eisitheoir agus an fíoraitheoir.
  • RSA (RS256, RS384, RS512): síniú neamhshiméadrach. Aneochair phríobháideach comhartha, fíoraíonn an eochair phoiblí. Ideal nuair a bheidh an tarchuradóra agus Is eintitis ar leith iad fíoraitheoirí (OAuth2, OpenID Connect, Cónaidhm Aitheantais). Tá sé an t-algartam is fearr leis an gcuid is mó de sholáthraithe aitheantais phoiblí.
  • ECDSA (ES256, ES384): síniú neamhshiméadrach ar cuair éilipseacha. An loighic chéanna le RSA (eochair phríobháideach le síniú, eochair phoiblí le fíorú) ach le heochracha agus sínithe níos dlúithe le haghaidh leibhéal coibhéiseach slándála. ag méadú go forleathan i ailtireachtaí nua-aimseartha.

Conas an eochair a sholáthar

Braitheann formáid na heochrach ionchais ar an algartam a dhearbhaítear i gceanntásc JWT:

  • HS256, HS384, HS512: is teaghrán rúnda (teaghrán) í an eochair. Is é seo an rún a roinntear leis an eisitheoir, a stóráiltear go minic in athróg timpeallachta mar JWT_SECRET. Gan aon fhormáidiú speisialta, díreach an t-amhluach.
  • RS256, RS384, RS512: is é eochair phoiblí RSA i bhformáid PEM an eochair, a thosaíonn le ----- BEGIN PUBLIC KEY----- agus a chríochnaíonn le ----- DEIREADH EOCHAIR PHOIBLÍ-----. Coinnigh línte nua mar atá, mura ndéantar OpenSSL dhiúltaíonn sé é a pharsáil.
  • ES256, ES384: is eochair phoiblí ECDSA i bhformáid PEM an eochair, ar an gcuar comhfhreagrach (P-256 i gcás ES256, P-384 i gcás ES384).

Sampla d'eochair phoiblí RSA a bhfuiltear ag súil leis

 ----- TÚS EOCHAIR PHOIBLÍ-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx...
...vQIDAQAB
----- EOCHAIR PHOIBLÍ DEIREADH -----

Conas a oibríonn fíorú?

Atáirgeann ár bhfreastalaí go beacht an oibríocht a dhéanann an tarchuradóir:

  1. Deighil sé an JWT ina cheanntásc, ina ualach pálasta agus ina shíniú.
  2. Comhcheanglaíonn sé base64url(header) + "." + base64url(pálasta).
  3. I gcás HMAC, ríomhann sé HMAC-SHA-256/384/512 le d'eochair rúnda, ansin cuirtear i gcomparáid leis an eochair rúnda síniú faighte trí hash_equals (comparáid ama leanúnach chun ionsaithe a sheachaint am).
  4. I gcás RSA, glaonn sé openssl_verify le d'eochair phoiblí i bhformáid PEM.

Cásanna úsáide

  • Dífhabhtú fíordheimhnithe API: faigheann tú 401, seiceáil an bhfuil do chomhartha sínithe go maith leis an eochair a bhfuiltear ag súil leis.
  • Bailíochtú dearbhán faighte ó sholáthraí: comhpháirtí (Auth0, Keycloak, Cognito, Okta) seolann JWTanna sínithe in RS256 chugat; ba mhaith leat a dheimhniú gur as uaidh lena eochair phoiblí.
  • Iniúchadh slándála: deimhnigh go síníonn seirbhís tríú páirtí a cuid comharthaí i gceart le algartam láidir, agus níl sé in HS256 le rúndacht íseal.
  • Tástálacha láimhe: seiceáil go n-éiríonn le JWT ginte ag do chód an fíorú leis an eochair phoiblí curtha ar fáil.
  • Fíorú tapa ar chomhartha faighte: le linn SSO nó SSO a chomhtháthú API Comhpháirtí, seiceáil i gceann cúpla soicind go n-oibríonn an slabhra sínithe/eochair roimhe seo chun an líne chóid is lú a scríobh.

Conas an uirlis a úsáid

  1. Greamaigh an JWT iomlán (na trí chuid scartha le poncanna).
  2. Labhair an eochair atá oiriúnaithe don algartam ceanntásca:
    • I gcás HS256, HS384 nó HS512, is í an teaghrán rúnda an eochair roinnte leis an tarchuradóir. Is teaghrán saor in aisce é, a stóráiltear go minic i a athróg timpeallachta amhail JWT_SECRET.
    • I gcás RS256, RS384 nó RS512, is í an eochair eochair phoiblí san fhormáid PEM, a thosaíonn le ----- BEGIN PUBLIC KEY----- agus a chríochnaíonn le ----- DEIREADH EOCHAIR PHOIBLÍ-----.
  3. Rith an seic. Taispeánann an uirlis an stádas (bailí nó neamhbhailí) agus an pálasta díchódaithe.

Gaistí coitianta a sheachaint

  • Algartam "none": ceadaíonn an tsonraíocht alg: none, rud a chiallaíonn "níl" síniú". Is éard atá i locht clasaiceach ná comhartha a dhéanamh leis an gceannteideal seo ag súil go mbeidh an glacann an freastalaí leis. Diúltaíonn ár n-uirlis go córasach comharthaí le alg: none.
  • mearbhall HMAC vs RSA (mearbhall algartam): athraíonn ionsaitheoir an t-algartam RS256 go HS256 agus síníonn sé an pálasta leis an eochair phoiblí RSA a úsáidtear mar rún HMAC. Mura rialaíonn an freastalaí an algartam, glacann sé leis an comhartha. I gcónaí glas an t-algartam a bhfuiltear ag súil leis ar thaobh an fhreastalaí.
  • rúin HMAC crua-chódaithe: rindreáil rún a rinneadh i stór Git tá an muinín ar fad as na comharthaí imithe. Rúin a stóráil in athróga timpeallachta nó feidhmchlár sábháilte.
  • Eochair phoiblí vs eochair phríobháideach: chun JWT sínithe in RSA nó ECDSA a fhíorú, táimid ag soláthraíonn sé an eochair phoiblí, ní an eochair phríobháideach. Ní úsáidtear an ceann príobháideach ach amháin le haghaidh sínithe agus ní úsáidtear é níor cheart go dtiocfaidh sé as an tarchuradóir choíche.
  • Tugadh neamhaird ar dhul in éag: níor cheart go mbeadh síniú bailí ar chomhartha imithe in éag ní ghlacfar riamh. Ná déan dearmad exp agus nbf a sheiceáil.
  • lucht féachana neamhrialaithe: níor cheart glacadh le comhartha atá ceaptha do API A le API B. Seiceáil an t-éileamh aud.

Éilimh ama: exp agus nbf

Taobh amuigh den síniú, ní mór do JWT bailí a srianta ama a urramú freisin:

  • exp (éag): níl an comhartha bailí a thuilleadh tar éis an dáta seo.
  • nbf (ní roimhe seo): níl an comhartha bailí fós roimh an dáta seo.

Cuireann ár n-uirlis in iúl go sainráite nuair a bhíonn comhartha éagthaníl fós bailí, fiú má tá a shíniú i gceart. Tá sé seo tábhachtach: síniú bailí ar a Níor cheart glacadh le comhartha imithe in éag i dtáirgeadh.

Difríocht lenár díchódóir JWT

Déanann ár díchódóir JWT an ceanntásc a dhíchódú agus pálasta chun iad a dhéanamh inléite. Ní dhéanann sé fhíorú sínithe ar bith agus ná iarr eochair. Bain úsáid as é chun iniúchadh tapa a dhéanamh ar a bhfuil sa chomhartha. Bain úsáid as an Fíoraitheoir JWT (an leathanach seo) aon uair is gá duit a chruthú gur comhartha é barántúla. Chun JWT sínithe a dhéanamh le haghaidh tástála, bain úsáid as ár tógálaí JWT.

Ceisteanna coitianta

Cén fáth RS256 seachas HS256?

Le HS256, roinneann an t-eisitheoir agus an fíoraitheoir an rún céanna: gach rud is féidir leis an bhfíoraitheoir, mar sin, comharthaí a eisiúint. Tá sé soláimhsithe nuair a rialaíonn tú an dá cheann. Ó go bhfuilimid ag caint faoi sholáthraí aitheantais aonair le roinnt seirbhísí tomhaltóirí, aistrímid in RS256: coinníonn an tarchuradóir an eochair phríobháideach, dáilimid an eochair phoiblí ar na APIanna go léir a Ní mór seiceáil. Ní féidir le haon API íditheach comharthaí a bhrionnú ansin.

Conas is féidir liom eochair phoiblí Soláthraí Aitheantais (IDP) a aisghabháil?

Nochtann formhór na IDPanna críochphointe caighdeánaithe JWKS (m.sh. https://example.com/.well-known/jwks.json). Filleann an críochphointe seo JSON ina bhfuil na heochracha poiblí gníomhacha. Is féidir leat an iontráil JWK a mheaitseálann an kid a thiontú ó cheanntásc do JWT go dtí eochair PEM tríd an ordú openssl nó trí leabharlann JWKS ó do chruach (m.sh. jose-jwt, jwks-rsa).

Cad ba cheart a dhéanamh má theipeann ar an bhfíorú?

Seiceáil an t-algartam ar dtús: ní féidir comhartha atá sínithe in HS256 a fhíorú le heochair RSA, agus vice versa. Ansin seiceáil an eochair: carachtar bán breise amháin, ceann nualíne ar iarraidh in eochair PEM, nó i rún HMAC atá beagán difriúil ón gceann a úsáideann an t-eisitheoir leor chun an seic a theipeann. Má tá rothlú eochrach déanta ag an Id, beidh do Seans go ndíreodh kid ar eochair nach bhfuil agat a thuilleadh.

Cad é JWKS?

Is formáid JSON é JWKS (Sraith Eochracha Gréasáin JSON, RFC 7517) a chuireann síos ar thacar de eochracha poiblí. Sainaithnítear gach eochair ag kid (ID na heochrach) agus an JWT le seiceáil déanann sé tagairt don kid seo ina cheanntásc. Ligeann an mheicníocht don IdP a rothlú eochracha gan na seiceálaithe a bhriseadh: ní dhéanann siad ach an críochphointe JWKS a fhiosrú chun an eochair a fhreagraíonn do kid an chomhartha a fuarthas.

Conas a ghinfidh mé péire eochracha RSA chun mo JWTanna a shíniú?

Le OpenSSL: openssl genrsa -out private.pem 2048 ansin openssl rsa -in private.pem -pubout -out public.pem. Comhartha taobh eochair phríobháideach eisitheoir, seiceálann an eochair phoiblí ar thaobh an tomhaltóra. I gcás seirbhísí nua, is fearr 3072 nó 4096 giotán.

Ar cheart an JWT a chriptiú chomh maith lena shíniú (JWE)?

Cinntíonn JWT (JWS) sínithe sláine agus barántúlacht, ach fanann an pálasta inléite ag cibé duine a phiocann suas é. Má tá sonraí íogaire (aitheantóirí inmheánacha, cearta sonraí pearsanta mionsonraithe), smaoinigh ar an bhformáid JWE (Criptiúchán Gréasáin JSON). a chriptíonn an pálasta chomh maith lena shíniú.

Sampla iarratais

curl -X POST https://cdrn.fr/api/v1/tools/jwt-verifier/execute \
  -H "Content-Type: application/json" \
  -d '{"token":"...","key":"..."}'

Scéimre ionchuir

Réimse Cineál Riachtanach Réamhshocrú
token text
key 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/jwt-verifier - faigh scéimre na huirlise seo
  • POST https://cdrn.fr/api/v1/tools/jwt-verifier/execute - rith an uirlis seo le pálasta JSON