§

Bandika JWT yako

Uchambuzi na uthibitisho wa saini vinafanyika nchini. Hakuna kitu kuhusu tokeni kinachotumwa kwa seva.
§

Kichwa

json
§

Mzigo

json
§

Thibitisha saini

Ingiza siri kuthibitisha saini.

JSON Web Tokens zinaendesha mfumo wa uthibitisho Afrika Mashariki — kutoka tokeni za AWS Cognito, kupitia tokeni za ufikiaji za Auth0 na Okta, hadi tokeni za matukio zilizosainiwa ambazo wapokea za webhook lazima wazithibitishe. Timu za fedha zinazoziendea mifumo ya Open Banking hutegemea bahasha ile ile ya RFC 7519, ambapo dai la `iss` linaashiria endpoint ya JWKS inayojulikana ya ASPSP. Kidekodi hiki hugawanya sehemu tatu za Base64URL ndani ya kivinjari, huonyesha kichwa, mzigo, na saini, na hudekodi madai ya kawaida kama `exp`, `iat`, na `nbf` na uonyeshaji sahihi wa saa za eneo — bila tokeni yako ya bearer kuacha kichupo au kuonekana kwenye kumbukumbu ya seva.

JSON Web Token ni nini?

A JSON Web Token (JWT) ni bahasha ndogo salama kwa URL kwa mzigo mdogo wa madai. Ni muundo wa kawaida wa uthibitisho kwa vikao vya wavuti visivyo na hali, tokeni za OAuth/OIDC ID, uthibitisho wa API wa mashine-kwa-mashine, na viungo vya uchawi vilivyosainiwa. JWT daima ni sehemu tatu za base64url zilizounganishwa na nukta: kichwa.mzigo.saini. Kichwa na mzigo ni JSON; saini ni MAC ya binary au saini ya dijitali juu ya sehemu mbili za kwanza.

JWT zinafanya kazi vipi?

Zana hii inapodekodi tokeni inafuata njia ile ile ya hatua tatu ambayo kila maktaba ya JWT hufuata:

  1. Gawanya tokeni kwenye nukta hadi sehemu tatu za sifuri zisizo tupu. Umbo lingine lolote lina kasoro.
  2. Base64url-dekodi sehemu 0 na 1, kisha JSON.parse kila moja. Kichwa hubeba mfumo (alg) na aina ya tokeni (typ). Mzigo hubeba madai (sub, exp, iat, funguo za kawaida).
  3. Siri ikitolewa, husanya upya MAC juu ya <sehemu0>.<sehemu1> ukitumia mfumo katika kichwa. Linganisha bytes dhidi ya sehemu ya tatu.
  4. Onyesha matokeo ya uthibitisho pamoja na madai yaliyodekotiwa, ikijumuisha kiashiria cha uisha muda kinachosomeka na binadamu kilichokokotolewa kutoka dai la exp.

Kwa nini udekodi JWT kwenye kivinjari?

Kubandika JWT halisi inayotumika kwenye kidebugger wa mbali kunalakia uthibitisho kwa kumbukumbu za huduma hiyo, mrundo wa ufuatiliaji, na mshirika yeyote ambaye huduma inasafirisha data kwake. Hata wakati tovuti ya watu wengine inadai kutokuhifadhi tokeni, huna njia ya kuithibitisha. Zana hii ilijengwa ili usihitaji kufanya maafikiano hiyo kamwe:

  • Mtandao sifuri: wakati wa utekelezaji hana simu za fetch, XMLHttpRequest, au sendBeacon. Fungua DevTools ukidekodi na kuthibitisha — paneli ya Mtandao inabaki kimya.
  • Web Crypto asilia: uthibitisho wa HMAC unatumia crypto.subtle.importKey na crypto.subtle.sign, vipande vile vile wakati wako wa utekelezaji ungeita.
  • Utumaji wa statiki: kila ukurasa ni faili moja ya HTML ya statiki bila endpoint ya seva inayoweza kuathiriwa. Hakuna tokeni ya kumwagika kwa sababu hakuna seva ya kumwagika kwake.

Zana hii inathibitisha nini, na haithibitishi nini?

Toleo la 1 la zana hii linathibitisha saini za familia ya HMAC-SHA peke yake. Kwa usahihi:

  • Inasaidiwa: HS256, HS384, HS512. Toa siri iliyoshirikiwa na zana itahusanya upya na kulinganisha MAC.
  • Bado haisaidiwi: RS256/384/512 (RSA), ES256/384/512 (ECDSA), EdDSA, na PS256/384/512 (RSA-PSS). Hizi zinahitaji ufunguo wa umma katika fomu ya PEM au JWK na zinaachwa kwa toleo la ufuatiliaji.
  • Inakataliwa: alg: "none". Zana huidekodi tokeni lakini inaiashiria waziwazi kama ya hatari — hakuna uthibitisho wa saini unaofanyika, na mfumo wowote wa uzalishaji unaokubali tokeni kama hiyo una hatari kubwa.

Mfano wa kudekodi JWT unaonekanaje?

Bandika tokeni ya mfano wa kawaida wa RFC 7519 kwenye sehemu ya ingizo hapo juu:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Kichwa kindekotiwa hadi {"alg":"HS256","typ":"JWT"} na mzigo hadi {"sub":"1234567890","name":"John Doe","iat":1516239022}. Ingiza your-256-bit-secret kwenye paneli ya kuthibitisha na ukaguzi wa saini urejesha halali. Badilisha herufi moja ya siri na itarudisha si halali. Hakuna kati ya hiki kinachacha kivinjari chako.

Hiki ndicho kidekodi cha JWT tulichohitaji kilikuwepo tulipohitaji kutatua tokeni katika uzalishaji: kinachoheshimu faragha, cha haraka, na kilichojengwa juu ya vipande vile vile ambavyo wakati wa utekelezaji unatumia.