Olùtú JWT Ọ̀fẹ́

Tú kí o sì ṣàyẹ̀wò JSON Web Token kankan. Wo orí-àkọlé, àkóónú, àkókò ìparí, àti àwọn ẹ̀tọ́ déédé. Gbogbo rẹ̀ ń ṣiṣẹ́ ní agbègbè nínú ẹ̀rọ àwárí rẹ — àwọn token kò kúrò lára ẹ̀rọ rẹ rárá.

Ó ń ṣiṣẹ́ láìsí ìsopọ̀ ní kété tí a bá kó wọlé

🔒 A ń yanjú kóòdù àmì náà pátápátá nínú aṣàwárí rẹ. Kò sí ohun tí a rán sí ẹ̀rọ mìíràn.

Bí Ó Ṣe Ń Ṣiṣẹ́

Olùtúpalẹ̀ náà jẹ́ parser tí a fi ọwọ́ kọ, tí kò ní ìgbẹ́kẹ̀lé lórí ohunkóhun mìíràn tí ó ń ṣiṣẹ́ pátápátá nínú aṣàwákiri rẹ: ó ń pín àmì náà lórí dọ̀tì, ó ń yí apá Base64URL kọ̀ọ̀kan padà sí Base64 lásán ní lílo ìrọ́pò ọ̀wọ́ ọ̀rọ̀ tí ó sì ń fi kún un sí ìlọ́po mẹ́rin, kí ó sì pe atob() àti JSON.parse abínibí aṣàwákiri láti gba ohun àkọlé àti ìjẹ́ padà. Ìfọwọ́sí àmì yíyàn ń lo API Web Crypto (crypto.subtle.verify) — kò sí ìwé-ìṣirò, kò sí sáfà.

  1. 1
    Ìtúpalẹ̀ Base64URL
    Irinṣẹ́ náà ń pín JWT náà lórí àwọn olùpín àkókò méjì rẹ̀, tí ó ń fún apá mẹ́ta. Apá kọ̀ọ̀kan jẹ́ Base64URL — tí ó ń lo - àti _ dípò + àti / tí ó sì ń fi ipò sílẹ̀. Kóòdù náà ń pààrọ̀ àwọn àmì yẹn padà tí ó sì ń fi àwọn àmì = kún un, kí ó tó pe atob() aṣàwákiri tí a kọ́ sínú rẹ̀ láti tú àwọn byte náà palẹ̀.
  2. 2
    Ìpín JSON àti ìyọ àwọn ìjẹ́wọ́
    A ń fi àwọn byte tí a tú palẹ̀ sí JSON.parse láti mú ohun àkọlé àti ìjẹ́ jáde. Àwọn ìjẹ́wọ́ tí a forúkọ sílẹ̀ exp, iat, àti nbf ni a mú jáde gẹ́gẹ́ bí àkókò Unix tí a sì yí padà sí ohun Date; a ń tún ṣàyẹ̀wò ipò-parí ní gbogbo ìṣẹ́jú-aaya 20 nípasẹ̀ setInterval nítorí náà àmì tí ó parí nígbà tí tábù náà bá ṣí ń yí padà láti tọ́ sí parí láifọwọ́kàn. Àwọn àkókò ìbátan ('ní ọjọ́ mẹ́ta', 'wákàtí méjì sẹ́yìn') ni a ṣe àgbékalẹ̀ rẹ̀ pẹ̀lú Intl.RelativeTimeFormat ní lílo agbègbè aṣàwákiri rẹ.
  3. 3
    Àkíyèsí àmì àti ìfọwọ́sí yíyàn
    A ń fi ọ̀wọ́ ọ̀rọ̀ àmì Base64URL gan-an hàn lẹ́gbẹ̀ẹ́ àkọlé àti ìjẹ́ náà. Bí o bá pèsè kọ́kọ́rọ́ kan, irinṣẹ́ náà ń pe crypto.subtle.importKey àti crypto.subtle.verify láti ṣàyẹ̀wò àmì náà ládùúgbò. Ó ń gba àwọn àṣírí HMAC (HS256/384/512), àwọn kọ́kọ́rọ́ gbangba RSA PEM (RS256/384/512), àti àwọn kọ́kọ́rọ́ gbangba ECDSA tàbí ohun JWK/JWKS (ES256/384/512) — tí a pinnu nípasẹ̀ pápá alg nínú àkọlé náà.
  4. 4
    Kò sí ìbéèrè nẹ́tíwọ́ọ̀kì
    Ìgbésẹ̀ kọ̀ọ̀kan — ìtúpalẹ̀, ìṣírò àkókò, àti ìfọwọ́sí cryptographic — ń ṣiṣẹ́ nínú ẹ́ńjìnnì JavaScript aṣàwákiri. Àmì náà àti ohun kọ́kọ́rọ́ èyíkéyìí tí o tẹ kì í kúrò lára ẹ̀rọ rẹ láé.

Àwọn JWT sábà máa ń gbé àwọn ẹ̀rí ìjókòó, ìdámọ̀ oníṣẹ́, àti àyè ìyọ̀nda; irinṣẹ́ yìí ń tú wọn palẹ̀ tí ó sì lè fọwọ́sí wọn pátápátá nínú aṣàwákiri rẹ ní lílo atob() àti API Web Crypto, nítorí náà kò sí àmì tàbí kọ́kọ́rọ́ kankan tí o pèsè tí ó dé ibikíbi.

Àwọn Irinṣẹ Tó Jọra

Àwọn Ìbéèrè Tí A Máa Ń Béèrè