Ohun tí Olùyíparadà JWT Ń Ṣe Ní Ti Gidi
JSON Web Token (JWT) dàbí ọ̀rọ̀ gígùn, tí kò ṣe é rí kọjá, tí ó ní àwọn àmì láìròtẹ́lẹ̀, ṣùgbọ́n kò jẹ́ ìpamọ́-àṣírí, kò sì jẹ́ àṣírí ìkọ̀kọ̀. Ó jẹ́ àpótí kékeré, tí ó léwu-fún-URL, tí ó ń gbé dátà tí ó ní ètò láàrin ẹgbẹ́ méjì. Fọ́ọ̀nu àmì-ìdánimọ̀ kan sínú olùyíparadà lókè, yóò sì pín ọ̀rọ̀ náà yẹ̀ sọ́tọ̀, yóò sì fi hàn ọ́ ní JSON gidi tí ó wà nínú rẹ̀ — ìsọfúnni-ìpìlẹ̀, àwọn ẹ̀tọ́ (claims), ẹni tí àmì-ìdánimọ̀ náà jẹ́ fún, àti ìgbà tí ó máa parí. Ohun gbogbo ń ṣẹlẹ̀ tààrà nínú aṣàwárí rẹ. Àmì-ìdánimọ̀ náà kìí kúrò lọ́dọ̀ rẹ láéláé, kò sí ẹni tí ń kọ ọ́ sílẹ̀, kìí sì lọ sí ibikíbi, èyí tí ó ṣe pàtàkì gidigidi nígbà tí ohun tí o ń ṣàyẹ̀wò jẹ́ ìwé-ẹ̀rí ìjókòó tí ń ṣiṣẹ́ lọ́wọ́.

Apá mẹ́ta, àmì-dọ́ọ̀tì méjì
Gbogbo JWT tí ó dá dáadáa jẹ́ ọ̀rọ̀ mẹ́ta tí a fi Base64url ṣàkóso tí àmì-dọ́ọ̀tì sopọ̀ mọ́ ara wọn: header.payload.signature. Àmì-dọ́ọ̀tì kan náà yẹn ni ọ̀nà tí olùkàwé-kóòdù fi ń mọ ibi tí apá kan ti parí tí ẹ̀kejì sì ti bẹ̀rẹ̀, ìyẹn sì ni ìdí tí a fi ń kọ àmì-ìdánimọ̀ tí kò ní iye àmì-dọ́ọ̀tì tí ó tọ́ sílẹ̀ kí a tó ka ohunkóhun mìíràn.
Àkọlé (header) jẹ́ ohun JSON kékeré tí ó ń ṣàpèjúwe àmì-ìdánimọ̀ náà fúnra rẹ̀. Ó máa ń ní typ (irú náà, tí ó sábà máa ń jẹ́ JWT) àti alg — algorithm ìdánilójú, bíi HS256 (HMAC pẹ̀lú SHA-256) tàbí RS256 (RSA pẹ̀lú SHA-256). Àkọlé náà ń sọ fún olùjẹ́rìí gan-an bí a ṣe ṣe àmì-ìdánilójú náà.
Ẹrù-ìsọfúnni (payload) ni apá tí ọ̀pọ̀lọpọ̀ ènìyàn ń nífẹ̀ẹ́ sí jùlọ. Ó jẹ́ ohun JSON mìíràn tí ó ní àwọn ẹ̀tọ́ (claims) — àwọn gbólóhùn nípa olùmúlò àti àmì-ìdánimọ̀ náà. Ìlànà náà ń pín àwọn ẹ̀tọ́ sí orúkọ tí a forúkọsílẹ̀ (registered, orúkọ tí a ti pinnu tẹ́lẹ̀), gbogbo ènìyàn, àti tirẹ̀-fúnra rẹ̀ (orúkọ tí o dá fún ohun-èlò tirẹ̀). Ṣíṣí ẹrù-ìsọfúnni náà pa ni ó ń fi hàn ẹni tí ó ti wọlé, ipò tí ó dì mú, àti ìgbà tí ìjókòó rẹ̀ máa parí.
Àmì-ìdánilójú (signature) ni èdìdì ìpamọ́-àṣírí náà. A ń ṣe ìṣírò rẹ̀ lórí àkọlé àti ẹrù-ìsọfúnni tí a ti ṣàkóso, ní lílo algorithm tí ó wà nínú àkọlé pẹ̀lú kọ́kọ́rọ́ àṣírí tàbí kọ́kọ́rọ́ àdáni. Nítorí pé ó ń bo àwọn apá méjì mìíràn, ìyípadà kankan sí àkọlé tàbí ẹrù-ìsọfúnni — àní àmì kan ṣoṣo — a máa mú kí ó jẹ́ aláìlágbára.
Àwọn ẹ̀tọ́ tí wàá sábà rí
Àwọn ẹ̀tọ́ tí a forúkọsílẹ̀ jẹ́ orúkọ kúkúrú lẹ́tà-mẹ́ta tí a ṣe àpèjúwe rẹ̀ nípasẹ̀ RFC 7519 kí àwọn ètò tí ó yàtọ̀síra lè bára wọn ṣiṣẹ́. Díẹ̀ nínú wọn ń farahàn ó fẹ́rẹ̀ẹ́ jẹ́ níbi gbogbo:
iss— issuer: ẹni tí ó dá àmì-ìdánimọ̀ náà (sáfà ìjẹ́rìí rẹ tàbí olùpèsè ìdánimọ̀).sub— subject: ẹni tí àmì-ìdánimọ̀ náà ń sọ̀rọ̀ nípa rẹ̀, tí ó sábà máa ń jẹ́ ID olùmúlò tí ó dúró ṣinṣin.aud— audience: ẹni tí a pinnu àmì-ìdánimọ̀ náà fún. API kan yẹ kí ó kọ̀ àwọn àmì-ìdánimọ̀ tí àwùjọ wọn kì í ṣe òun fúnra rẹ̀.exp— expiration time: àkókò Unix tí a kò gbọ́dọ̀ tún gba àmì-ìdánimọ̀ náà mọ́ lẹ́yìn rẹ̀.iat— issued at: àkókò Unix nígbà tí a dá àmì-ìdánimọ̀ náà.
O tún lè bá nbf (not before) àti jti (ID àmì-ìdánimọ̀ àdámọ̀) pàdé. Àwọn àkókò jẹ́ ìṣẹ́jú-àáyá láti ọdún 1970 ní UTC, ìyẹn sì ni ìdí tí olùyíparadà tí ó ń fi wọ́n hàn gẹ́gẹ́ bí ọjọ́ tí a lè kà fi ń dá ọ sílẹ̀ lọ́wọ́ ìṣírò-orí tí a nílò láti wo bóyá àmì-ìdánimọ̀ kan ti parí.
Ṣíṣí Kì í Ṣe Ìjẹ́rìí — Èyí Ni Apá Tí Ń Ṣe Ènìyàn Léwu
Ìyàtọ̀ yìí ni ohun kan ṣoṣo tí ó ṣe pàtàkì jùlọ láti yé nípa JWTs. Ṣíṣí túmọ̀ sí kíka àkóónú náà: kò nílò kọ́kọ́rọ́ kankan, ẹnikẹ́ni tí ó ní àmì-ìdánimọ̀ náà lè ṣe é, nítorí pé Base64url jẹ́ ìṣàkóso, kì í ṣe ìpamọ́-àṣírí. Ìjẹ́rìí túmọ̀ sí ìdánilójú pé àmì-ìdánimọ̀ náà jẹ́ ẹni tí ó jẹ́ gidi tí kò sì di fífọwọ́kàn — ìṣírò àmì-ìdánilójú padà pẹ̀lú kọ́kọ́rọ́ àṣírí tàbí kọ́kọ́rọ́ gbogbo ènìyàn tí ó tọ́ àti ìdánilójú pé ó bá a mu.
Irinṣẹ́ yìí ń ṣí ni. Ó ń fi ohun tí àmì-ìdánimọ̀ náà sọ hàn, kì í ṣe bóyá àmì-ìdánimọ̀ náà ṣe é gbẹ́kẹ̀lé. Àmì-ìdánimọ̀ kan lè jẹ́ èké, kí ó ti parí, tàbí kí a tún un lò, kí ó sì tún ṣí sí JSON tí ó dàbí ẹni tí ó mọ́ dáadáa. Má ṣe ṣe ìpinnu ìfọwọ́sí kankan tí ó dá lórí àwọn ẹ̀tọ́ tí a ti ṣí nìkan. Nínú iṣẹ́ gidi, o ń jẹ́rìí àmì-ìdánilójú náà ní ẹ̀gbẹ́ sáfà, o ń ṣàyẹ̀wò exp, o sì ń dá ìdánilójú pé iss àti aud bá ohun tí o retí mu — nípa lílo ìkàwé (library) tí a ti ṣàyẹ̀wò dáadáa, kì í ṣe ìfiwéra ọ̀rọ̀ tí a fi ọwọ́ kọ.

Ẹrù-ìsọfúnni Kì í Ṣe Àpótí-Ìpamọ́
Nítorí pé a kàn fi Base64url ṣàkóso ẹrù-ìsọfúnni náà, ẹnikẹ́ni tí ó bá dá àmì-ìdánimọ̀ náà dúró lè kà á. Fi gbogbo ohun tí ó wà nínú rẹ̀ sọ́rí gẹ́gẹ́ bí ti gbogbo ènìyàn. Má ṣe fi ọ̀rọ̀-aṣínà, gbogbo nọ́mbà káàdì-owó, kọ́kọ́rọ́ àṣírí, tàbí dátà ara-ẹni kankan tí ó ṣe pàtàkì sínú àwọn ẹ̀tọ́ JWT — bí o bá lè ṣí i síbí ní tẹ̀ẹ́ kan, bẹ́ẹ̀ náà ni ẹnikẹ́ni tí ó bá gba ẹ̀dà rẹ̀ náà lè ṣe. Àmì-ìdánilójú náà ń dáàbò bo lòdì sí ìyípadà, kì í ṣe lòdì sí kíka rárá. Bí o bá nílò gan-an láti fi àkóónú ẹrù-ìsọfúnni pamọ́, ìyẹn jẹ́ iṣẹ́ fún JWE (àmì-ìdánimọ̀ tí a ti pa mọ́), ìlànà tí ó yàtọ̀ pátápátá.
Ìkọ̀kọ̀ àti Àwọn Irinṣẹ́ Tí Ó Jọra
Ṣíṣàyẹ̀wò àmì-ìdánimọ̀ kan jẹ́ ìṣe tí ó ṣe pàtàkì, nítorí náà olùyíparadà yìí ń ṣiṣẹ́ patapata ní ẹ̀gbẹ́ alábàárà — ìṣàyẹ̀wò náà jẹ́ JavaScript lásán nínú tábù rẹ, kò sì sí ohun tí ó ń kúrò lọ́dọ̀ ẹ̀rọ rẹ. Fífi àmì-ìdánimọ̀ ìjókòó sí inú irinṣẹ́ tí ó gbáralé sáfà túmọ̀ sí fífi ìwé-ẹ̀rí tí ń ṣiṣẹ́ lọ́wọ́ fún ẹnì-kẹta, ìyẹn gan-an ni ohun tí o yẹ kí o yẹra fún. Fún ìṣàkóso tí ó wà lábẹ́ gbogbo rẹ̀, wo irinṣẹ́ Base64 wa, kí o sì ṣàwárí àwọn irinṣẹ́ olùṣàkóso-kọ̀ǹpútà yòókù wa fún àwọn ohun èlò-tí-ń-ṣiṣẹ́-lórí-ẹ̀rọ síi.
Àwọn ìbéèrè tí a sábà máa ń béèrè
Ṣé a ti fi ìpamọ́-àṣírí pa JWT mọ́?
Rárá. JWT lásán jẹ́ èyí tí a fi Base64url ṣàkóso, kì í ṣe ìpamọ́-àṣírí. Ẹnikẹ́ni tí ó ní àmì-ìdánimọ̀ náà lè ka àkọlé àti ẹrù-ìsọfúnni náà. Lo JWE bí o bá nílò kí àkóónú náà wà ní ìkọ̀kọ̀.
Ṣé irinṣẹ́ yìí ń jẹ́rìí àmì-ìdánilójú náà?
Rárá. Ó kàn ń ṣí àkọlé àti ẹrù-ìsọfúnni náà, ó sì ń fi wọ́n hàn nìkan. Ìjẹ́rìí àmì-ìdánilójú náà nílò kọ́kọ́rọ́ àṣírí olùdásílẹ̀ tàbí kọ́kọ́rọ́ gbogbo ènìyàn, ó sì yẹ kí a ṣe é ní ẹ̀gbẹ́ sáfà rẹ.
Ṣé ó léwu láti fi àmì-ìdánimọ̀ mi sínú rẹ̀ síbí?
Bẹ́ẹ̀ni. Ṣíṣí ń ṣẹlẹ̀ patapata nínú aṣàwárí rẹ ní lílo JavaScript ládùúgbò. A kìí fi àmì-ìdánimọ̀ náà ránṣẹ́, a kìí fi pamọ́, a kìí sì fi í ránṣẹ́ sí sáfà kankan rárá.
Kí ni iss, sub, aud, exp àti iat túmọ̀ sí?
Àwọn ẹ̀tọ́ tí a forúkọsílẹ̀ ni wọ́n: issuer, subject, audience, àkókò ìparí àti àkókò tí a dá a. Àwọn mẹ́ta tí ó jẹ́mọ́ àkókò ń lo àkókò Unix ní ìṣẹ́jú-àáyá.
Ṣé mo lè gbẹ́kẹ̀lé àwọn ẹ̀tọ́ tí a fi hàn lẹ́yìn ìṣí?
Kì í ṣe fúnra wọn nìkan. Àwọn ẹ̀tọ́ tí a ti ṣí lè wá láti ọ̀dọ̀ àmì-ìdánimọ̀ èké tàbí tí ó ti parí. Máa jẹ́rìí àmì-ìdánilójú náà nígbà gbogbo, kí o sì ṣàyẹ̀wò ìparí rẹ̀ ní ẹ̀gbẹ́ sáfà kí o tó gbẹ́kẹ̀lé wọn.
Kí ló dé tí àmì-ìdánimọ̀ mi fi ní apá mẹ́ta tí àmì-dọ́ọ̀tì yà sọ́tọ̀?
Àkọlé, ẹrù-ìsọfúnni àti àmì-ìdánilójú ni wọ́n, olúkúlùkù ni a fi Base64url ṣàkóso, àmì-dọ́ọ̀tì sì so wọ́n pọ̀. Àwọn àmì-dọ́ọ̀tì ń sọ fún olùkàwé-kóòdù ibi tí apá kọ̀ọ̀kan ti bẹ̀rẹ̀ tí ó sì ti parí.
