JWT Decoder በትክክል ምን ያደርጋል
የJSON Web Token (JWT) ረጅም፣ ግልጽ ያልሆነ የዘፈቀደ ፊደላት ጽሑፍ ይመስላል፣ ግን ኢንክሪፕት የተደረገ ወይም ሚስጥራዊ ሲፈር (cipher) አይደለም። በሁለት ወገኖች መካከል የተዋቀረ መረጃ የሚያጓጉዝ ጥብቅ፣ URL-ደህና መያዣ ነው። ማስመሰያ ኮድ ወደ ላይ ወዳለው ዲኮደር ይለጥፉ እናም ያንን ጽሑፍ ይከፋፍላል እና ውስጡ ያለውን እውነተኛ JSON ያሳይዎታል — ሜታዳታው፣ የይገባኛል ጥያቄዎቹ (claims)፣ ማስመሰያ ኮዱ ለማን እንደሆነ፣ እና መቼ እንደሚያልቅ። ሁሉም ነገር በአሳሽዎ ውስጥ ይከናወናል። ማስመሰያ ኮዱ በፍጹም አይላክም፣ አይመዘገብም፣ ወይም የትም አይላክም፣ ይህም እየመረመሩት ያለው ነገር ቀጥታ የክፍለ-ጊዜ ማስመሰያ ኮድ ሲሆን በጣም ወሳኝ ነው።

ሦስት ክፍሎች፣ ሁለት ነጥቦች
እያንዳንዱ በደንብ የተዋቀረ JWT በነጥቦች የተጣመሩ ሦስት Base64url-ኮድ የተደረጉ ጽሑፎች ናቸው፦ header.payload.signature። ያ ነጠላ የነጥብ ፊደል ትንታኔ አድራጊዎች አንድ ክፍል የት እንደሚያልቅ እና ቀጣዩ የት እንደሚጀምር የሚያውቁበት መንገድ ነው፣ የተሳሳተ ቁጥር ነጥቦች ያለው ማስመሰያ ኮድ ሌላ ነገር ከመነበቡ በፊት ውድቅ የሚደረግበትም ምክንያት ነው።
ራስጌው (header) ማስመሰያ ኮዱን ራሱ የሚገልጽ ትንሽ JSON ኦብጀክት ነው። ማለት ይቻላል ሁልጊዜ typ (አይነት፣ ብዙውን ጊዜ JWT) እና alg — የፊርማ አልጎሪዝም፣ እንደ HS256 (HMAC ከSHA-256 ጋር) ወይም RS256 (RSA ከSHA-256 ጋር) ያለ ይይዛል። ራስጌው ፊርማው በትክክል እንዴት እንደተመረተ ለአረጋጋጭ ይነግራል።
ጭነቱ (payload) አብዛኞቹ ሰዎች የሚያስቡበት ክፍል ነው። ይህ የይገባኛል ጥያቄዎችን — ስለ ተጠቃሚው እና ማስመሰያ ኮዱ የተነገሩ ንግግሮችን — የያዘ ሌላ JSON ኦብጀክት ነው። ስፔሲፊኬሽኑ የይገባኛል ጥያቄዎችን ወደ የተመዘገበ (መደበኛ፣ የተጠበቁ ስሞች)፣ ህዝባዊ፣ እና የግል (ለራስዎ መተግበሪያ የሚፈጥሯቸው ልማድ ስሞች) ይከፋፍላል። ጭነቱን ዲኮድ ማድረግ ማን እንደገባ፣ ምን ሚና እንደያዙ፣ እና ክፍለ-ጊዜያቸው መቼ እንደሚያልቅ ያሳያል።
ፊርማው (signature) ክሪፕቶግራፊክ ማህተም ነው። ከራስጌው ውስጥ ካለው አልጎሪዝም እና ከሚስጥር ወይም የግል ቁልፍ ጋር ኮድ በተደረገው ራስጌ እና ጭነት ላይ ተመስርቶ ይሰላል። ሁለቱንም ሌሎች ክፍሎች ስለሚሸፍን፣ ወደ ራስጌው ወይም ጭነቱ የተደረገ ማንኛውም ለውጥ — አንድ ፊደል እንኳ — ልክ እንዳልሆነ ያደርገዋል።
በጣም የሚያዩዋቸው የይገባኛል ጥያቄዎች
የተመዘገቡ የይገባኛል ጥያቄዎች የተለያዩ ስርዓቶች እርስ በርስ እንዲሰሩ በRFC 7519 የተገለጹ አጫጭር፣ ሦስት-ፊደላት ስሞች ናቸው። ጥቂቶቹ በሁሉም ቦታ ማለት ይቻላል ይታያሉ፦
iss— issuer (አውጪ)፦ ማስመሰያ ኮዱን ማን እንደፈጠረ (የማረጋገጫ አገልጋይዎ ወይም የማንነት አቅራቢ)።sub— subject (ርዕሰ ጉዳይ)፦ ማስመሰያ ኮዱ ስለ ማን እንደሆነ፣ ብዙውን ጊዜ የተረጋጋ የተጠቃሚ መለያ።aud— audience (ተቀባይ)፦ ማስመሰያ ኮዱ ለማን የታሰበ ነው። አንድ API ተቀባይነቱ ራሱ ያልሆነ ማስመሰያ ኮድ ውድቅ ማድረግ አለበት።exp— expiration time (የማብቂያ ጊዜ)፦ ማስመሰያ ኮዱ ተቀባይነት መያዝ የሌለበት ከዚያ በኋላ ያለ የዩኒክስ ማህተም ጊዜ።iat— issued at (የተሰጠበት)፦ ማስመሰያ ኮዱ የተፈጠረበት የዩኒክስ ማህተም ጊዜ።
nbf (ከዚህ በፊት አይሆንም) እና jti (ልዩ ማስመሰያ ኮድ መለያ) ም ሊያጋጥሙዎት ይችላሉ። ማህተም ጊዜዎች ከ1970 ጀምሮ በUTC ውስጥ ሰከንዶች ናቸው፣ ለዚህ ነው እነሱን ወደ በሰው ሊነበብ የሚችል ቀናት ደግሞ የሚያሳይ ዲኮደር ማስመሰያ ኮድ አልፎ እንደሆነ ማረጋገጥ አዕምሮአዊ ሂሳብ ስራ የሚቆጥብልዎት።
ዲኮድ ማድረግ ማረጋገጥ አይደለም — ይህ ሰዎችን የሚነክሰው ክፍል ነው
ይህ ልዩነት ስለJWT ዎች ለመረዳት እጅግ ወሳኙ ነጥብ ነው። ዲኮድ ማድረግ ማለት ይዘቱን ማንበብ ማለት ነው፦ ምንም ቁልፍ አይጠይቅም እናም ማስመሰያ ኮዱን የያዘ ማንም ሊያደርገው ይችላል፣ ምክንያቱም Base64url ኢንኮዲንግ እንጂ ኢንክሪፕሽን አይደለም። ማረጋገጥ ማለት ማስመሰያ ኮዱ እውነተኛ እና ያልተነካ መሆኑን ማረጋገጥ ማለት ነው — ፊርማውን በትክክለኛው ሚስጥር ወይም ህዝባዊ ቁልፍ በድጋሚ በማስላት እና ተመሳሳይ መሆኑን በማረጋገጥ።
ይህ መሳሪያ ዲኮድ ብቻ ያደርጋል። ማስመሰያ ኮዱ የሚለውን ያሳይዎታል፣ ማስመሰያ ኮዱ ታማኝ መሆኑን አይደለም። አንድ ማስመሰያ ኮድ ሊሸፈን፣ ሊያልቅ፣ ወይም ደግሞ ጥቅም ላይ ሊውል ይችላል እና አሁንም ወደ ንጹህ የሚመስል JSON ዲኮድ ሊደረግ ይችላል። በዲኮድ የተደረጉ የይገባኛል ጥያቄዎች ብቻ ተመስርተው በፍጹም የፍቃድ ውሳኔ አያድርጉ። በፕሮዳክሽን ውስጥ ፊርማውን በአገልጋይ-ጎን ያረጋግጣሉ፣ expን ያረጋግጣሉ፣ እና iss እና aud ከሚጠብቁት ጋር እንደሚዛመዱ ያረጋግጣሉ — የተረጋገጠ ላይብረሪ በመጠቀም፣ በእጅ የተሰራ የጽሑፍ ንጽጽር በፍጹም አይደለም።

ጭነት ደህንነት ማዕድ (vault) አይደለም
ጭነቱ Base64url-ኮድ ብቻ የተደረገ ስለሆነ፣ ማስመሰያ ኮዱን በሚያገኝ ማንም ይነበባል። በውስጡ ያለውን ሁሉ ህዝባዊ አድርገው ይያዙት። የይለፍ ቃላትን፣ ሙሉ የክሬዲት ካርድ ቁጥሮችን፣ ሚስጥር ቁልፎችን፣ ወይም ማንኛውንም ስሜታዊ የግል መረጃ በJWT የይገባኛል ጥያቄዎች ውስጥ አያስቀምጡ — እዚህ በአንድ ጠቅታ ዲኮድ ማድረግ ከቻሉ፣ ቅጂ የያዘ ማንም ሌላ ሰውም ይችላል። ፊርማው ከማሻሻል ይጠብቃል፣ ከማንበብ በፍጹም አይደለም። በእውነት የጭነት ይዘቶችን መደበቅ ካስፈለገዎት፣ ያ ስራ ለJWE (ኢንክሪፕት የተደረጉ ማስመሰያ ኮዶች) ነው፣ ሙሉ ለሙሉ የተለየ ስፔሲፊኬሽን ነው።
ግላዊነት እና ተያያዥ መሳሪያዎች
ማስመሰያ ኮድ መመርመር ስሜታዊ ተግባር ስለሆነ፣ ይህ ዲኮደር ሙሉ በሙሉ ደንበኛ-ጎን ይካሄዳል — ትንታኔው በትርዎ ውስጥ ቀላል JavaScript ነው እናም ምንም ነገር ከማሽንዎ አይወጣም። የክፍለ-ጊዜ ማስመሰያ ኮድ ወደ አገልጋይ-ደገፍ መሳሪያ መለጠፍ ማለት ቀጥታ ማስመሰያ ኮድ ለሦስተኛ ወገን መስጠት ማለት ነው፣ ይህም በትክክል ማስወገድ ያለብዎት ነው። ስለ ኢንኮዲንግ ከስር ላለው መሰረት፣ የBase64 መሳሪያችንን ይመልከቱ፣ ተጨማሪ በመሳሪያ-ላይ ደግፎችን ለማግኘት ቀሪ የገንቢ መሳሪያዎቻችንን ያስሱ።
በተደጋጋሚ የሚጠየቁ ጥያቄዎች
JWT ኢንክሪፕት ይደረጋል?
አይ። መደበኛ JWT Base64url-ኮድ ተደርጓል፣ ኢንክሪፕት አልተደረገም። ማስመሰያ ኮዱን የያዘ ማንም ራስጌውን እና ጭነቱን ማንበብ ይችላል። ይዘቶች መደበቅ ካስፈለጎት JWE ይጠቀሙ።
ይህ መሳሪያ ፊርማውን ያረጋግጣል?
አይ። ራስጌውን እና ጭነቱን ብቻ ዲኮድ አድርጎ ያሳያል። ፊርማውን ማረጋገጥ የአውጪውን ሚስጥር ወይም ህዝባዊ ቁልፍ ይጠይቃል እናም በአገልጋይዎ ላይ መደረግ አለበት።
ማስመሰያ ኮዴን እዚህ መለጠፍ ደህና ነው?
አዎ። ዲኮድ ማድረግ ሙሉ በሙሉ በአሳሽዎ ውስጥ በአካባቢ JavaScript በመጠቀም ይካሄዳል። ማስመሰያ ኮዱ በፍጹም አይላክም፣ አይቀመጥም፣ ወይም ወደ አገልጋይ አይላክም።
iss፣ sub፣ aud፣ exp እና iat ምን ማለት ናቸው?
እነዚህ የተመዘገቡ የይገባኛል ጥያቄዎች ናቸው፦ አውጪ፣ ርዕሰ ጉዳይ፣ ተቀባይ፣ የማብቂያ ጊዜ እና የተሰጠበት ጊዜ። ሦስቱ ጊዜ-ነክ የሆኑት በሰከንዶች የዩኒክስ ማህተም ጊዜዎችን ይጠቀማሉ።
ከዲኮድ በኋላ የሚታዩትን የይገባኛል ጥያቄዎች መተማመን እችላለሁ?
ብቻቸውን አይደለም። የተዲኮዱ የይገባኛል ጥያቄዎች ከሸፈነ ወይም ካለቀ ማስመሰያ ኮድ ሊመጡ ይችላሉ። እነሱን ከመተማመንዎ በፊት ሁልጊዜ ፊርማውን ያረጋግጡ እና በአገልጋይ-ጎን የማብቂያ ጊዜውን ያረጋግጡ።
ማስመሰያ ኮዴ በነጥቦች የተለያዩ ሦስት ክፍሎች ያሉት ለምንድን ነው?
እነዚያ ራስጌ፣ ጭነት እና ፊርማ ናቸው፣ እያንዳንዳቸው Base64url-ኮድ ተደርገው በነጥቦች የተጣመሩ። ነጥቦቹ እያንዳንዱ ክፍል የት እንደሚጀምር እና እንደሚያልቅ ለትንታኔ አድራጊዎች ይነግራሉ።
