Fíoraigh síniú JSON Web Token (JWT)
- Deais
- Doiciméadú
- API
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:
- Deighil sé an JWT ina cheanntásc, ina ualach pálasta agus ina shíniú.
- Comhcheanglaíonn sé
base64url(header) + "." + base64url(pálasta). - 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). - I gcás RSA, glaonn sé
openssl_verifyle 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
- Greamaigh an JWT iomlán (na trí chuid scartha le poncanna).
- 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Í-----.
- 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
- 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í lealg: none. - mearbhall HMAC vs RSA (mearbhall algartam): athraíonn ionsaitheoir an t-algartam
RS256goHS256agus 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
expagusnbfa 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 éagtha nó ní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áilGET https://cdrn.fr/api/v1/tools/jwt-verifier- faigh scéimre na huirlise seoPOST https://cdrn.fr/api/v1/tools/jwt-verifier/execute- rith an uirlis seo le pálasta JSON