Cruthaigh JSON Web Token (JWT) sínithe

gineann JWT sínithe (HS256, HS384, HS512) ó phálasta JSON agus rún HMAC, réidh do do thástálacha API nó tokens fíordheimhnithe

Cad é JWT Builder?

Is uirlis ar líne é JWT Builder a tháirgeann JSON Web Token sínithe (JWT) as pálasta JSON agus rún HMAC. Tá sé dírithe ar fhorbróirí a bhfuil gá acu chun comhartha tástála a ghiniúint go tapa chun iompar API a sheiceáil, insamhail seisiún fíordheimhnithe in Fear an Phoist, nó atáirgeadh fabht a bhaineann le dul in éag nó raon feidhme dearbhán.

Murab ionann agus ár díchódóir JWT, nach léann ach comhartha reatha, déanann JWT Builder comhartha iomlán: tógann sé an ceanntásc, ionchódaíonn sé an ceanntásc pálasta, ríomhann síniú HMAC agus cóimeálann sé gach rud i bhformáid dhlúth header.payload.signature ag súil leis ag gach leabharlann JWT ar an margadh.

Cén fáth JWT a ghiniúint?

Níl sé i gceist ag tógálaí JWT comharthaí táirgeachta a eisiúint. Is uirlis é thar aon rud eile le haghaidh forbairt agus tástáil. Seo iad na cásanna is coitianta:

  • Tástálacha Comhtháthaithe: JWTanna intuartha a tháirgeadh chun tástálacha E2E a thiomáint a bhuail críochphointí cosanta gan a bheith ag brath ar an bhfíorsholáthraí aitheantais.
  • API Mocks: Cuir JWT sínithe in ionad glao chuig an IdP go sealadach go háitiúil leis an rún tástála céanna.
  • Forbairt áitiúil: ceangail le do inneall féin trí a comhartha ina bhfuil na héilimh atá ag teastáil, gan dul tríd an sreabhadh OAuth2 ar fad.
  • Demos: léirigh turas fíordheimhnithe nó sreabhadh oibre bunaithe ar ceadanna gan IdP fíor a bheith ar láimh.
  • Atáirgeadh fabhtanna: cruthaigh comhartha imithe in éag, comhartha le aud mícheart, comhartha gan éilimh áirithe, chun conairí earráide a thástáil do API.
  • Parsálaí saincheaptha a dhífhabhtú: instealladh JWTanna atá saindeartha chun triail parsálaí baile.

Comhdhéanamh JWT

Tá JWT sínithe comhdhéanta de thrí mhír scartha le ponc, gach ceann ionchódaithe isteach Base64URL (leagan de Base64 gan stuáil agus le -/_ ag in ionad +//):

  • Ceanntásc: réad JSON a chuireann síos ar an algartam sínithe agus cineál an chomhartha, mar shampla {"alg":"HS256",,"typ":"JWT"}. Gineann JWT Builder go huathoibríoch é ó den algartam a roghnaíonn tú.
  • Payload: réad JSON treallach ina bhfuil éilimh an chomhartha (faoi réir, ceadanna, dátaí éaga). Seo an chuid a chuireann tú ar fáil.
  • Síniú: HMAC-SHA arna ríomh ar chomhchaanú base64url(ceanntásc) + "." + base64url (pálasta) le d'eochair rúnda. Is í a ráthaíonn sé sláine an chomhartha.

Bain úsáid as cásanna go mion

  • Bréagán API le haghaidh tástála E2E: caithfidh do shraith Cypress nó Playwright glao a chur ar API óna dteastaíonn Údarú: Iompróir .... Seachas logáil isteach iomlán a eagrú ag gach tástáil, sínímid JWT ar an eitilt leis an rún roinnte agus cuirimid isteach sa cheanntásc é.
  • Taispeántas SSO: cuir turas fíordheimhnithe cónasctha i láthair gan brath de IDP ar líne.
  • Daingneán Tástála: giniúint JWT cinntitheach ó phálasta atá ar eolas ag fónamh mar ghléas cobhsaí i dtástálacha aonaid.
  • Diagnóiseadh parsálaí saincheaptha: ag tástáil parsálaí JWT baile le comharthaí d’aon ghnó íosta nó aisteach d’aon ghnó (éilimh ar iarraidh, cineálacha gan choinne).
  • Foghlaim: tuig go nithiúil conas a thógtar JWT isteach an pálasta a mhodhnú agus féachaint ar an athrú sínithe.

Algartam tacaithe: HS256, HS384, HS512

Tacaíonn ár n-uirlis leis na trí algartam caighdeánach HMAC de shonraíocht JWT (RFC 7519):

  • HS256: HMAC le SHA-256. Síniú 32 beart. Is mó a úsáidtear go praiticiúil, comhréiteach maith idir luas agus daingneacht cripteagrafach. Molta de réir réamhshocraithe.
  • HS384: HMAC le SHA-384. Síniú 48-beart. In oiriúint do chomhthéacsanna a a cheangal ar lamháil sábháilteachta níos airde.
  • HS512: HMAC le SHA-512. Síniú 64 beart. An ceann is láidre, ar an bpraghas ar chomhartha beagán níos mó.

HMAC nó RSA?

Tá na halgartaim HS* siméadrach: úsáidtear an eochair chéanna chun síniú agus fíorú. Tá sé tapa agus éasca, ach ciallaíonn sé go bhfuil aon seirbhís is féidir a fhíorú comhartha freisin in ann iad a astú. Más gá duit an dá ról seo a scaradh (eisitheoir amháin, iolrach tomhaltóirí), cas chuig na halgartaim RS256/RS384/RS512 (RSA, neamhshiméadrach), ar féidir leat a fhíorú lenár fhíoraitheoir JWT.

Slándáil: do rún a chosaint

Tá slándáil JWT sínithe in HMAC ag brath go hiomlán ar an rún. Roinnt rialacha bunúsacha:

  • Úsáid rún fada randamach. Molann RFC 7518 an méid ar a laghad den aschur algartam (32 beart do HS256, 48 do HS384, 64 do HS512). Focal faire is fánach fórsa brúidiúil in ionsaí as líne é an duine ar nós azerty123.
  • Ná sínigh JWT taobh cliaint choíche. Bheadh an rún le fáil sa chód JavaScript a dháileadh ar an mbrabhsálaí, nochta d'aon úsáideoir. Caithfidh an síniú fanacht i gcónaí thaobh an fhreastalaí.
  • Stóráil an rún in athróg timpeallachta (m.sh. JWT_SECRET), riamh i stór Git. Smaoinigh ar úsáid a bhaint as cruinneachán mar HashiCorp Vault, Bainisteoir Rúin AWS nó Rúin Symfony ag brath ar do chruach.
  • Iompaigh an rún go rialta (eochair-uainíocht), go háirithe tar éis aon teagmhais nó imeacht duine a raibh rochtain aige ar an gcumraíocht.
  • Tá JWT Builder le haghaidh tástála agus foghlama. Le haghaidh táirgeadh, bain úsáid as leabharlann JWT do chreata (lcobucci/jwt, firebase/php-jwt, jose-php).

Dea-chleachtais éileamh

Is réad JSON in aisce é an pálasta, ach sainmhíníonn RFC 7519 tacar éilimh chláraithe go bhfuil a fhios ag leabharlanna JWT conas ateangaireacht a dhéanamh. Lena n-áirítear na héilimh cearta a dhéanann do chomhartha iniompartha agus seachnaíonn sé bugs subtle:

  • eisiúint (eisitheoir): aitheantóir an eisitheora, mar shampla "https://api.example.com".
  • fo (ábhar): aitheantóir an duine nó an eintitis lena mbaineann, go minic an t-aitheantas úsáideoir.
  • aud (lucht féachana): cé dó a bhfuil an comhartha ceaptha, chun athúsáid a chosc comhartha ar API eile.
  • exp (am éaga): Stampa ama Unix agus níl an comhartha bailí a thuilleadh ina dhiaidh sin. Cuir san áireamh i gcónaí, fiú amháin i gcás comhartha tástála: is éard atá i chomhartha gan dul in éag ná a droch-nós deacair a cheartú ina dhiaidh sin.
  • nbf (ní roimhe seo): stampa ama nach bhfuil an comhartha bailí fós. Úsáideach chun dearbhán a réamheisiúint is féidir a ghníomhachtú ar ball.
  • iat (eisithe ag): eisiúna stampa ama, úsáideach le logáil agus le cúlghairm.
  • jti (ID JWT): aitheantóir uathúil an chomhartha, riachtanach le haghaidh idempotence agus chun liosta cúlghairme a chur i bhfeidhm.

Gnáthshampla pálasta

{
  "iss": "https://api.example.com",
  "fo": "úsáideoir-12345",
  "aud": "aip shoghluaiste",
  "iata": 1714723200,
  "exp": 1714726800,
  "jti": "9f2d6b1e-2c4a-4f8a-9c3a-87a2b8a4b7e1",
  "scope": "léigh:próifíl write:profile"
}

Conas an uirlis a úsáid

  1. Cuir isteach an pálasta mar JSON bailí. Is réad é, mar sin tosaíonn sé le { agus críochnaíonn sé le }.
  2. Sonraigh rún HMAC. Roghnaigh teaghrán fada randamach le haghaidh comharthaí táirgeachta.
  3. Roghnaigh an t-algartam: HS256 de réir réamhshocraithe, HS384 nó HS512 de réir do riachtanas.
  4. Cliceáil cruthaigh. Tá an chuma ar an JWT sínithe, réidh le greamú isteach i gceanntásc Údarú: Iompróir ....
  5. Is féidir leat an comhartha a fhíorú leis an rún céanna. deimhnigh comhsheasmhacht an chuairt bhabhta, nó díchódú le hathléamh a inneachar.

Ceisteanna coitianta

Cén algartam a roghnaíonn: HS256, HS384, HS512?

I mbeagnach gach cás, is é HS256 an rogha ceart. Cuireann sé leibhéal de slándáil atá sách leordhóthanach le haghaidh comharthaí fíordheimhnithe, le síniú dlúth (32 bytes) agus ríomh tapa. Níl údar maith le HS384 agus HS512 ach i gcomhthéacsanna ceanglais rialála bheachta nó má bhainistíonn tú comharthaí a bhfuil saolré an-fhada acu. An méid Déanann síniú níos airde gach iarratas HTTP níos troime.

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

Le OpenSSL in dhá ordú: openssl genrsa -out private.pem 2048 don eochair príobháideach, ansin openssl rsa -in private.pem -pubout -out public.pem le sliocht an eochair phoiblí. Le haghaidh seirbhísí nua, molaimid anois eochracha slándála. 3072 giotán nó 4096 giotán. Fanann an eochair phríobháideach ar thaobh an tseoltóra; Is í an eochair phoiblí dáileann sé faoi shaoirse ar sheirbhísí ar gá comharthaí a fhíorú.

Cad é an t-am éaga molta?

Mar chomhartha rochtana: 5 go 15 nóiméad. Mar chomhartha athnuachana: cúpla lá cúpla seachtain, ach le meicníocht cúlghairme taobh an fhreastalaí. Is mó an comhartha fad-cónaí, is ea is mó an fhuinneog oibriúcháin i gcás sceitheadh. Le haghaidh JWTanna tástála, tú féadann sé tréimhse níos flaithiúla a ghlacadh, ach seachain exp ar feadh roinnt blianta: sa deireadh siad ag sceitheadh isteach i stórtha Git.

An féidir liom síniú le heochair rúnda an-ghearr?

Is ea, go teicniúil, ach tá sé díspreagadh go láidir. Rún HMAC níos lú ná Tá 16 beart lag in aghaidh ionsaithe fórsa brute as líne, agus tá sé le fáil sa nádúr na n-uirlisí a bhriseann JWT HS256 le rún íseal i soicindí. Tá an Molann RFC 7518 ar a laghad méid an aschuir algartam: 32 bytes do HS256, 48 do HS384, 64 do HS512. Gin do rúin le openssl rand -base64 64.

Cén fáth a ndiúltaítear do mo phálasta?

Caithfidh an pálasta a bheith ina réad JSON bailí. Botúin Choitianta: Sleachta Aonair In ionad dúbailt, camóg bhreise roimh }, luach gan comharthaí athfhriotail do theaghrán. Bailíochtaigh do JSON ar dtús lenár formadóir JSON.

An féidir leis an JWT ginte a dhíchriptiú ag duine éigin eile?

Níl JWT sínithe criptithe: níl sa phálasta ach Base64URL ionchódaithe. Gach rud is féidir leis an domhan é a léamh. Má tá sonraí íogaire san pálasta, bain úsáid as an bhformáid JWE (Criptiúchán Gréasáin JSON) a chuireann criptiú leis. Táirgeann ár n-uirlis JWS (sínithe amháin).

Sampla iarratais

curl -X POST https://cdrn.fr/api/v1/tools/jwt-builder/execute \
  -H "Content-Type: application/json" \
  -d '{"payload":"...","secret":"...","algorithm":"HS256"}'

Scéimre ionchuir

Réimse Cineál Riachtanach Réamhshocrú
payload text
secret text
algorithm choice (HS256, HS384, HS512) HS256

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-builder - faigh scéimre na huirlise seo
  • POST https://cdrn.fr/api/v1/tools/jwt-builder/execute - rith an uirlis seo le pálasta JSON