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á.
🔒 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Ìtúpalẹ̀ Base64URLIrinṣẹ́ 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Ì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Àkíyèsí àmì àti ìfọwọ́sí yíyànA ń 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áà.
- 4Kò 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
Ayipada URL & Oluyipada
Ṣe koodu koodu ati ṣe koodu awọn URL ati awọn gbolohun ọrọ ibeere. Ṣe atilẹyin encodeURIComponent, decodeURIComponent, ati itupalẹ okun ibeere.
Olùṣàyẹ̀wò UUID
Ṣàyẹ̀wò UUID tàbí ULID kankan — wo ẹ̀dà rẹ̀, oríṣi rẹ̀, àti àkókò ẹ̀dá tí ó wà nínú v1, v6, v7, àti ULID. Ó ń ṣiṣẹ́ pátápátá nínú ẹ̀rọ àwárí rẹ.
Olùdí àti Olùtú Base64
Dí ọ̀rọ̀ tàbí àwọn fáìlì sí Base64, tàbí tú àwọn ọ̀rọ̀ Base64 padà sí ọ̀rọ̀ lásán. Kíákíá, ní àṣírí, àti ọ̀fẹ́.