JWT ഘടനയും അതിന്റെ പ്രവർത്തനരീതിയും
JSON Web Token (JWT) എന്നത് രണ്ട് കക്ഷികൾക്കിടയിൽ വിവരങ്ങൾ സുരക്ഷിതമായി കൈമാറുന്നതിനായി ഉപയോഗിക്കുന്ന ഒരു കോംപാക്റ്റ് ഫോർമാറ്റാണ്. ഒരു JWT പ്രധാനമായും ഡോട്ട് (.) ഉപയോഗിച്ച് വേർതിരിച്ച മൂന്ന് ഭാഗങ്ങൾ അടങ്ങിയ ഒരു സ്ട്രിംഗ് ആണ്. ഈ മൂന്ന് ഭാഗങ്ങൾ താഴെ പറയുന്നവയാണ്:
- ഹെഡർ: ടോക്കണിന്റെ തരം, അത് ഒപ്പിടാൻ ഉപയോഗിച്ച അൽഗോരിതം എന്നിവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഇതിൽ അടങ്ങിയിരിക്കുന്നു.
- പേലോഡ്: ക്ലെയിമുകൾ (Claims) അടങ്ങിയിരിക്കുന്ന ഭാഗമാണിത്. ഉപയോക്താവിനെക്കുറിച്ചുള്ള വിവരങ്ങളും മറ്റ് മെറ്റാഡാറ്റയും ഇതിലാണ് ഉൾപ്പെടുത്തുന്നത്.
- സിഗ്നേച്ചർ (Signature): ടോക്കൺ വഴിയിൽ വെച്ച് തിരുത്തപ്പെട്ടിട്ടില്ല എന്ന് ഉറപ്പാക്കാൻ ഉപയോഗിക്കുന്ന ഒപ്പാണിത്.
ഈ മൂന്ന് ഭാഗങ്ങളും Base64URL എൻകോഡിംഗ് ഉപയോഗിച്ചാണ് എൻകോഡ് ചെയ്യുന്നത്. വെബ്ബ് യുആർഎല്ലുകളിൽ സുരക്ഷിതമായി ഉപയോഗിക്കാൻ കഴിയുന്ന തരത്തിലാണ് Base64URL എൻകോഡിംഗ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. ഈ ടൂൾ ഇൻപുട്ടായി ലഭിക്കുന്ന JWT-ലെ ആദ്യത്തെ രണ്ട് ഭാഗങ്ങളെ ഡീകോഡ് ചെയ്ത് വായിക്കാവുന്ന JSON ഫോർമാറ്റിലേക്ക് മാറ്റുന്നു.
JWT ഹെഡറും പേലോഡും: പ്രധാന ക്ലെയിമുകൾ
JWT-യുടെ ഹെഡറിലും പേലോഡിലും അടങ്ങിയിരിക്കുന്ന വിവരങ്ങൾ JSON ഫോർമാറ്റിലാണ് സൂക്ഷിക്കുന്നത്. ഇവയിൽ സാധാരണയായി കാണപ്പെടുന്ന ചില പ്രധാന ക്ലെയിമുകൾ താഴെ പറയുന്നവയാണ്:
ഹെഡറിലെ പ്രധാന വിവരങ്ങൾ
alg: ടോക്കൺ ഒപ്പിടാൻ ഉപയോഗിച്ച അൽഗോരിതം (ഉദാഹരണത്തിന്: HS256, RS256).typ(Type): ടോക്കണിന്റെ തരം വ്യക്തമാക്കുന്നു, സാധാരണയായി ഇത് "JWT" ആയിരിക്കും.
പേലോഡിലെ പ്രധാന വിവരങ്ങൾ
iat(Issued At): ടോക്കൺ നിർമ്മിച്ച സമയം (Unix epoch സമയത്തിൽ).exp(Expiration Time): ടോക്കണിന്റെ കാലാവധി അവസാനിക്കുന്ന സമയം.
ഈ ടൂൾ ഈ ക്ലെയിമുകൾ സ്വയമേവ കണ്ടെത്തി മനുഷ്യർക്ക് വായിക്കാവുന്ന രീതിയിലേക്ക് മാറ്റി നൽകുന്നു.
ഡീകോഡിംഗും വെരിഫിക്കേഷനും തമ്മിലുള്ള വ്യത്യാസം
ഒരു JWT ഡീകോഡ് ചെയ്യുന്നതും അത് വെരിഫൈ ചെയ്യുന്നതും രണ്ട് വ്യത്യസ്ത കാര്യങ്ങളാണ്.
- ഡീകോഡിംഗ് (Decoding): Base64URL എൻകോഡ് ചെയ്ത സ്ട്രിംഗിനെ സാധാരണ JSON ടെക്സ്റ്റിലേക്ക് മാറ്റുന്ന പ്രക്രിയയാണിത്. ഇതിനായി യാതൊരുവിധ രഹസ്യ കീകളുടെയും (Secret Key) ആവശ്യമില്ല. ആർക്കും ഒരു JWT ഡീകോഡ് ചെയ്ത് അതിലെ വിവരങ്ങൾ വായിക്കാൻ സാധിക്കും.
- വെരിഫിക്കേഷൻ (Verification): ടോക്കൺ നിർമ്മിച്ചതിന് ശേഷം അതിൽ മാറ്റങ്ങൾ വരുത്തിയിട്ടില്ല എന്ന് ഉറപ്പാക്കാൻ സിഗ്നേച്ചർ പരിശോധിക്കുന്ന പ്രക്രിയയാണിത്. ഇതിനായി സൈനിംഗ് സീക്രട്ട് അല്ലെങ്കിൽ പബ്ലിക് കീ ആവശ്യമാണ്.
ഈ ടൂൾ സിഗ്നേച്ചർ വെരിഫൈ ചെയ്യുന്നില്ല. ഇത് നിങ്ങൾക്ക് വായിക്കാനായി ഹെഡറും പേലോഡും ഡീകോഡ് ചെയ്യുക മാത്രമാണ് ചെയ്യുന്നത്. സിഗ്നേച്ചർ വെരിഫൈ ചെയ്യാൻ സൈനിംഗ് സീക്രട്ട് അല്ലെങ്കിൽ പബ്ലിക് കീ ആവശ്യമാണ്, ഈ ടൂൾ അത് ഒരിക്കലും ചോദിക്കില്ല. സിഗ്നേച്ചർ പരിശോധിക്കാത്തതിനാൽ, ടോക്കണിന്റെ വിശ്വാസ്യത ഉറപ്പാക്കാൻ ഈ ഡീകോഡിംഗ് മാത്രം ഉപയോഗിക്കരുത്.
ടൂളിന്റെ ഇൻപുട്ടുകളും ഔട്ട്പുട്ടുകളും
ഈ ടൂൾ ഉപയോഗിക്കാൻ വളരെ ലളിതമാണ്. ഇൻപുട്ട് ഫീൽഡിലേക്ക് ഒരു JWT നൽകുമ്പോൾ താഴെ പറയുന്ന ഔട്ട്പുട്ടുകൾ തൽക്ഷണം ലഭ്യമാകും:
ഇൻപുട്ട് നിബന്ധനകൾ
- ഇൻപുട്ട് ഡോട്ട് ഉപയോഗിച്ച് വേർതിരിച്ച മൂന്ന് ഭാഗങ്ങളുള്ള ഒരു സ്ട്രിംഗ് ആയിരിക്കണം.
- ഇൻപുട്ടിന് വളരെ കൂടുതൽ ദൈർഘ്യം ഉണ്ടാകാൻ പാടില്ല.
ലഭ്യമാകുന്ന ഔട്ട്പുട്ടുകൾ
- ഹെഡർ: ഡീകോഡ് ചെയ്ത ഹെഡർ JSON ഫോർമാറ്റിൽ.
- പേലോഡ്: ഡീകോഡ് ചെയ്ത പേലോഡ് JSON ഫോർമാറ്റിൽ.
- അൽഗോരിതം: ടോക്കണിൽ ഉപയോഗിച്ചിരിക്കുന്ന അൽഗോരിതം.
- തരം: ടോക്കണിന്റെ തരം.
- ഇഷ്യൂ ചെയ്തത്: ടോക്കൺ നിർമ്മിച്ച സമയം.
- കാലാവധി തീരുന്നത്: ടോക്കണിന്റെ കാലാവധി അവസാനിക്കുന്ന സമയം.
- അക്ഷരങ്ങൾ: ഇൻപുട്ട് ചെയ്ത JWT-ൽ അടങ്ങിയിരിക്കുന്ന ആകെ അക്ഷരങ്ങളുടെ എണ്ണം.
- സ്റ്റാറ്റസ്: ടോക്കണിന്റെ സാധുത വ്യക്തമാക്കുന്ന ബാഡ്ജ്.
പിശകുകളും പരിഹാരങ്ങളും
നിങ്ങൾ നൽകുന്ന ഇൻപുട്ട് കൃത്യമല്ലെങ്കിൽ ടൂൾ താഴെ പറയുന്ന പിശക് സന്ദേശങ്ങൾ കാണിക്കുകയും ഡീകോഡ് ചെയ്ത ഭാഗങ്ങൾ മറയ്ക്കുകയും ചെയ്യും:
- സാധുവായ JWT അല്ല — ഡോട്ട് ഉപയോഗിച്ച് വേർതിരിച്ച മൂന്ന് ഭാഗങ്ങൾ പ്രതീക്ഷിക്കുന്നു: നൽകിയ ഇൻപുട്ടിൽ മൂന്ന് ഭാഗങ്ങൾ ഇല്ലെങ്കിൽ ഈ സന്ദേശം കാണിക്കുന്നു.
- ഹെഡർ ഡീകോഡ് ചെയ്യാൻ കഴിഞ്ഞില്ല — അസാധുവായ Base64URL: ഹെഡർ ഭാഗം ശരിയായ രീതിയിൽ Base64URL ഡീകോഡ് ചെയ്യാൻ കഴിയാത്തതാണെങ്കിൽ ഈ സന്ദേശം കാണിക്കുന്നു.
- പേലോഡ് ഡീകോഡ് ചെയ്യാൻ കഴിഞ്ഞില്ല — അസാധുവായ Base64URL: പേലോഡ് ഭാഗം ശരിയായ രീതിയിൽ Base64URL ഡീകോഡ് ചെയ്യാൻ കഴിയാത്തതാണെങ്കിൽ ഈ സന്ദേശം കാണിക്കുന്നു.
- ഹെഡർ സാധുവായ JSON അല്ല: ഡീകോഡ് ചെയ്ത ഹെഡർ ഘടന ശരിയായ JSON ഫോർമാറ്റിൽ അല്ലെങ്കിൽ ഈ സന്ദേശം കാണിക്കുന്നു.
- പേലോഡ് സാധുവായ JSON അല്ല: ഡീകോഡ് ചെയ്ത പേലോഡ് ഘടന ശരിയായ JSON ഫോർമാറ്റിൽ അല്ലെങ്കിൽ ഈ സന്ദേശം കാണിക്കുന്നു.
- യഥാർത്ഥ JWT ആകാൻ ഇതിന് വളരെ കൂടുതൽ ദൈർഘ്യമുണ്ട്: ഇൻപുട്ടിന്റെ നീളം പരിധിയിൽ കൂടുതലാകുമ്പോൾ ഈ സന്ദേശം കാണിക്കുന്നു.
ഇൻപുട്ട് ഫീൽഡ് ശൂന്യമായിരിക്കുമ്പോൾ ടൂൾ "തയ്യാറാണ്. ഡീകോഡ് ചെയ്യാൻ ഒരു JWT പേസ്റ്റ് ചെയ്യുക." എന്ന അവസ്ഥയിലായിരിക്കും. ഇൻപുട്ട് ക്ലിയർ ചെയ്യുമ്പോൾ ഫോക്കസ് വീണ്ടും ഇൻപുട്ട് ഫീൽഡിലേക്ക് തന്നെ മടങ്ങിയെത്തുന്നു.
സ്വകാര്യതയും ഡാറ്റാ പ്രോസസ്സിംഗും
നിങ്ങളുടെ ടോക്കൺ ബ്രൗസറിലാണ് ഡീകോഡ് ചെയ്യുന്നത്. BroBroGo-ലേക്ക് ഒന്നും അപ്ലോഡ് ചെയ്യപ്പെടുന്നില്ല. പ്രോസസ്സിംഗ് പൂർണ്ണമായും നിങ്ങളുടെ പ്രാദേശിക ഉപകരണത്തിൽ തന്നെ നടക്കുന്നതിനാൽ ഡാറ്റാ ചോർച്ചയെക്കുറിച്ചുള്ള ആശങ്കകൾ ഇല്ലാതെ ഇത് ഉപയോഗിക്കാവുന്നതാണ്.
അടിക്കടി ചോദിക്കുന്ന ചോദ്യങ്ങൾ (FAQ)
എന്റെ JWT ഇവിടെ പേസ്റ്റ് ചെയ്യുന്നത് സുരക്ഷിതമാണോ?
അതെ. ഡീകോഡിംഗ് പൂർണ്ണമായും നിങ്ങളുടെ ബ്രൗസറിലാണ് നടക്കുന്നത് — നിങ്ങളുടെ ടോക്കൺ ഒരിക്കലും BroBroGo-ലേക്ക് അയയ്ക്കുന്നില്ല.
ഇത് സിഗ്നേച്ചർ വെരിഫൈ ചെയ്യുമോ?
ഇല്ല. ഇത് നിങ്ങൾക്ക് വായിക്കാനായി ഹെഡറും പേലോഡും ഡീകോഡ് ചെയ്യുക മാത്രമാണ് ചെയ്യുന്നത്. സിഗ്നേച്ചർ വെരിഫൈ ചെയ്യാൻ സൈനിംഗ് സീക്രട്ട് അല്ലെങ്കിൽ പബ്ലിക് കീ ആവശ്യമാണ്, ഈ ടൂൾ അത് ഒരിക്കലും ചോദിക്കില്ല.
എന്റെ ടോക്കണിന്റെ കാലാവധി കഴിഞ്ഞോ എന്ന് എങ്ങനെ അറിയാം?
ഡീകോഡർ exp ക്ലെയിം വായിക്കുകയും ഡീകോഡ് ചെയ്ത ടോക്കണിന് സമീപം ഒരു സ്റ്റാറ്റസ് ബാഡ്ജ് (സാധുതയുള്ളത്, കാലാവധി കഴിഞ്ഞത്, ഇതുവരെ സാധുതയായിട്ടില്ല, അല്ലെങ്കിൽ കാലാവധി ഇല്ലാത്തത്) കാണിക്കുകയും ചെയ്യുന്നു. ടോക്കണിൽ exp ക്ലെയിം ഇല്ലെങ്കിൽ "കാലാവധി ഇല്ല" എന്ന സ്റ്റാറ്റസ് കാണിക്കും. ഈ ടൂൾ exp ക്ലെയിം മാത്രമേ പരിശോധിക്കൂ — ഇത് ഒപ്പ്, ഇഷ്യൂവർ അല്ലെങ്കിൽ ഓഡിയൻസ് എന്നിവ പരിശോധിക്കുന്നില്ല.