Díchódaigh JSON Web Token (JWT)

díchódaíonn do JWT token (JSON Web Token) agus taispeánann an fhaisnéis atá ann ar bhealach inléite agus struchtúrtha

Cad é JWT (JSON Web Token)?

Is formáid é JSON Web Token, arna ghiorrú go JWT (ar a dtugtar "jot") dlúthdhiosca sainithe ag RFC 7519 a cheadaíonn iompar sraith éileamh (éilimh) idir dhá pháirtí. Is é JWT, nó comhartha JWT, an fhormáid is mó inniu céannacht fhíordheimhnithe a chur in iúl in API HTTP. Léirítear JWT mar theaghrán ASCII comhdhéanta de trí mhír deighilte ag pointí:

header.payload.signature

Tá gach mír ionchódaithe i Base64URL, leagan de Base64 gan stuáil = agus a chuireann - agus / in ionad + le _ ionas gur féidir leis sreabhadh trí URL nó ceanntásc HTTP gan éalú breise.

Tábhachtach: NACH bhfuil JWT criptithe. Tá formáid chaighdeánach JWT (JWS) ann go simplí sínithe: ráthaíonn an síniú sláine an ábhair, ach ní sholáthraíonn sé aon rúndacht. Is féidir le duine ar bith pálasta JWT a dhíchódú le Base64URL droim ar ais simplí, mar a dhéanann an uirlis jwt díchódaithe ar líne seo.

Anatamaíocht JWT

chomhartha gréasáin json comhdhéanta de thrí chuid ar leith, agus ról sonrach ag gach ceann díobh sa mheicníocht fíordheimhnithe:

1. Ceanntásc

Is réad JSON é an ceanntásc a chuireann síos ar an gcaoi a sínítear an comhartha. Tá ar a laghad ann:

  • alg (algartam): an t-algartam sínithe a úsáidtear. Luachanna tipiciúla: HS256, RS256, ES256, EdDSA.
  • typ (cineál): cineál an chomhartha, beagnach i gcónaí "JWT".
  • kid (aitheantas eochrach): roghnach, sainaithníonn sé cén eochair ba cheart a úsáid chun an síniú a fhíorú. Praiticiúil i láthair sraith eochracha rothlach (JWKS).

2. Ualach pá

Tá na éilimh sa phálasta, is é sin le rá na héilimh a dhéanann an t-eisitheoir faoin úsáideoir nó seisiún. Sainmhíníonn RFC 7519 seacht n-éileamh caighdeánach (cláraithe éilimh):

  • iss (eisitheoir): cé a d'eisigh an comhartha, mar shampla "https://accounts.google.com".
  • fo (ábhar): cé leis an chomhartha, go praiticiúil an t-aitheantas úsáideora.
  • aud (lucht féachana): cé dó a bhfuil an comhartha ceaptha. Seachain comhartha eisithe le haghaidh API A ghlacann API B.
  • exp (am éaga): Stampa ama Unix agus an comhartha ina dhiaidh níl sé bailí a thuilleadh.
  • nbf (ní roimhe seo): stampa ama nach bhfuil an comhartha roimhe fós gníomhach.
  • iat (eisithe ag): stampa ama eisiúna comhartha.
  • jti (ID JWT): aitheantóir uathúil an chomhartha, a úsáidtear le haghaidh athimeartha a chúlghairm agus a chosc.

De ghnáth cuirtear éilimh shaincheaptha a bhaineann go sonrach leis na héilimh chaighdeánacha seo an feidhmchlár (róil, scope, tenant_id, ríomhphost, ceadanna...).

3. Síniú

Is comhdhlúthán cripteagrafach é an síniú a ríomhtar ar base64url(ceanntásc) + "." + base64url(pálasta) ag baint úsáide as eochair. Is í a chruthaíonn nach bhfuil aon duine tar éis an ceanntásc ná an pálasta a mhodhnú ón gcraoladh. Na halgartaim is coitianta:

  • HS256 / HS384 / HS512: síniú siméadrach HMAC-SHA. Eochair rúnda roinnte idir an t-eisitheoir agus an fíoraitheoir. Simplí, ach mí-oiriúnach nuair atá níos mó ná tomhaltóir amháin ann.
  • RS256 / RS384 / RS512: síniú RSA neamhshiméadrach. Comharthaíonn an tarchuradóir lena eochair príobháideach, fíoraíonn aon tomhaltóir leis an eochair phoiblí chomhfhreagrach. Caighdeán de facto le haghaidh OAuth2 agus OpenID Connect.
  • ES256 / ES384 / ES512: síniú neamhshiméadrach ECDSA. Airíonna céanna le RS256 ach le heochracha agus sínithe i bhfad níos giorra.
  • EdDSA (Ed25519): síniú neamhshiméadrach nua-aimseartha, tapa agus dlúth.

Arís eile: cosnaíonn an síniú sláine, ní rúndacht. Tá an tá pálasta fós inléite ag aon duine ar leis an chomhartha é.

Cén fáth JWT a dhíchódú?

Comhlíonann an oibríocht jwt token decode roinnt riachtanas nithiúil d'fhorbróir nó innealtóir sábháilteachta:

  • Dífhabhtú Fíordheimhnithe: filleann do API 401 nó 403, ba mhaith leat a fheiceáil cad atá sa phálasta iarbhír (fo, scope, róil, exp) seachas buille faoi thuairim a thabhairt.
  • Seiceáil éilimh: deimhnigh go bhfuil an t-éileamh ar chomhartha ag súil leis (m.sh. tenant_idceadanna) roimh an gcuardach áit eile sa slabhra údaraithe.
  • Éaga léite: tiontaigh an stampa ama exp go dáta daonna le haghaidh deimhnigh go bhfuil comhartha imithe in éag, nó a mhalairt ar fad gur cheart go mbeadh sé bailí fós.
  • Iniúchadh slándála: ag cinntiú nach scaoileann seirbhís tríú páirtí faisnéis íogair san pálasta (ríomhphoist, aitheantóirí inmheánacha, sonraí pearsanta).
  • Oiliúint agus tuiscint: féach go nithiúil cad a jsonwebtoken ag teacht amach as soláthraí OAuth (Google, Auth0, Keycloak, AWS Cognito) le haghaidh na meicnicí a thuiscint gan dul isteach sna doiciméid.
  • Iniúchadh ar chomharthaí poiblí: scrúdaigh JWT a aimsíodh i logaí, i fianán nó i malartú OAuth idirghlactha.

Díchódóir vs Fíoraitheoir: an t-idirdhealú criticiúil

Is cosúil go bhfuil an dá oibríocht cosúil le chéile ach níl aon rud le déanamh acu maidir le ráthaíochtaí slándála:

    Is éard atá i
  • JWT a dhíchódú an teaghrán ar an . agus cuir Base64URL droim ar ais i bhfeidhm ar an gcéad dá mhír. Is léamh simplí é, laistigh de rochtain aon script trí-líne. Gan fíorú sínithe nach bhfuil déanta.
  • Is éard atá i
  • JWT a fhíorú an síniú ón gceanntásc a athríomh, pálasta agus eochair, ansin an toradh a chur i gcomparáid leis an síniú atá sa chomhartha. Tá sé rud a ráthaíonn nár cuireadh isteach ar an chomhartha.

Conclúid phraiticiúil: ní fiú muinín a bheith agat as díchódú. Chomh fada leis an síniú nach bhfuil fíoraithe leis an eochair cheart, d'fhéadfadh ábhar an pálasta a bheith go hiomlán bréagach. Chun an céim muiníne, úsáid ár Fíoraitheoir JWT.

Conas é a úsáid

  1. Faigh an JWT chun iniúchadh a dhéanamh, mar shampla ó cheanntásc Údarú: Iompróir , ó fhianán seisiúin, ó na localStorage ón mbrabhsálaí, nó ó loga feidhmchláir.
  2. Greamaigh an teaghrán iomlán sa réimse ionchuir. Ní mór na trí mhír a bheith scartha le pointí.
  3. Taispeánann an uirlis láithreach an ceanntásc atá díchódaithe i JSON formáidithe, le an algartam agus an cineál.
  4. Déantar an pálasta a dhíchódú agus a thaispeáint ansin. Feiceann tú na héilimh go léir ann caighdeánach agus saincheaptha.
  5. Léiríonn an uirlis freisin an faisnéis sínithe (algartam dearbhaithe, fad), gan é a sheiceáil.
  6. Le deimhniú nár cuireadh isteach ar an chomhartha, aistrigh chuig ár Fíoraitheoir JWT leis an eochair phoiblí nó an rún poiblí a bhfuiltear ag súil leis.

Déantar an díchódú ar fad i do bhrabhsálaí i JavaScript: ní sheoltar do chomhartha riamh chuig ár bhfreastalaithe.

JWT agus slándáil: gaistí le seachaint

NÁ stóráil sonraí íogaire i bpálasta JWT sínithe.

Pasfhocail, uimhreacha cártaí creidmheasa, sonraí leighis, rúin API, aitheantóirí inmheánacha ríthábhachtacha: tá gach rud sa phálastainléite ag aon duine is leis an chomhartha, lena n-áirítear an t-úsáideoir féin trí uirlisí forbróra de a bhrabhsálaí. Ní chumhdaíonn an síniú rud ar bith, ní chruthaíonn sé ach go bhfuil an t-eisitheoir go deimhin cé a mhaíonn sé a bheith.

Cúpla riail órga chun JWT a úsáid i gceart i dtáirgeadh:

  • Seiceáil síniú ar thaobh an fhreastalaí i gcónaí roimh duit aon chearta a dheonú. Léiríonn ár Fíoraitheoir JWT an oibríocht seo go díreach.
  • Is fearr leat RS256 nó ES256 ná HS256 le haghaidh API poiblí. An síniú seachnaíonn neamhshiméadrach rún a roinnt idir an tarchuradóir agus gach tomhaltóir.
  • Bíodh meas agat i gcónaí ar an éileamh exp. A JWT gan éag nó le buama ama é easanálú rófhada i gcás sceitheadh.
  • Bailíochtaigh iss agus aud ar thaobh an fhreastalaí, chun a Glactar le comhartha dlisteanach a eisíodh do sheirbhís eile trí dhearmad.
  • Diúltaigh alg: "none" ar an taobh fíoraithe. Is locht clasaiceach é seo a ligeann d'ionsaitheoir aon phálasta a bhrionnú.
  • Coinnigh na tréimhsí saoil gearr (15 nóiméad mar shampla) agus péireáil le a athnuachan comhartha níos faide ach inchúlghairthe ar thaobh an fhreastalaí.

Sampla de chomhartha JWT díchódaithe

  • Seo gnáth-JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSm9obi IsImlhdCI6MTUxNjIzOTAyMn0.jrU9j8LZcRK2_BZjqXjU7lEpJbkqmXfTQIu9vT45j-I
    
    

    Nuair a bheidh sé díchódaithe, seo é a inneachar:

    // Ceanntásc
    {
      "alg": "HS256",
      "cineál": "JWT"
    }
    
    // Ualach pá
    {
      "fo": "123",
      "ainm": "John",
      "iat": 1516239022
    }
    
    // Síniú (dénártha, Base64URL ionchódaithe)
    HMACSHA256(
      base64url(ceanntásc) +"." + base64url (pálasta),
      rún
    )
    Cá háit a bhfaighidh tú JWT le cóipeáil?

    Go praiticiúil, is minic a thagann JWT chun

    dhíchriptiú (de réir bhrí an díchódaithe) ó cheann díobh seo suíomhanna:

      Fianán HTTP: oscail na huirlisí forbartha (F12), cluaisín IarratasStóráil, ansin Fianáin. Spot fianán ainmnithe access_token, jwt, seisiún nó a leithéid.
    • Stóráil áitiúil / sessionStorage: an painéal céanna, Rannóg Stóráil Áitiúil. Stórálann go leor Limistéir faoi Chosaint Speisialta a chomhartha ansin faoi eochair tokenauth.
    • Údarú ceanntásc: cluaisín Líonra, roghnaigh ceann amháin Iarratas API, léigh an ceanntásc Údarú: Iompróir . Cóipeáil ach an cuid i ndiaidh Iompróir .
    • Logaí freastalaí: feictear JWT uaireanta i logaí geata nó seachfhreastalaí droim ar ais (le seachaint i dtáirgeadh, ach úsáideach le linn dífhabhtaithe).

    Ceisteanna coitianta

  • Sampla iarratais

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

    Scéimre ionchuir

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