JSON Web Token (JWT) அமைப்பும் அதன் செயல்பாடும்
JSON Web Token (JWT) என்பது இரண்டு தரப்பினருக்கு இடையே தகவல்களை ஒரு JSON பொருளாகப் பாதுகாப்பாகப் பரிமாறிக்கொள்ளப் பயன்படும் ஒரு திறந்த தரநிலையாகும் (RFC 7519). ஒரு JWT டோக்கனானது புள்ளிகளால் (.) பிரிக்கப்பட்ட மூன்று பகுதிகளைக் கொண்ட ஒரு சரமாக (string) கட்டமைக்கப்பட்டுள்ளது. அவை முறையே:
- ஹெடர் (Header): டோக்கனின் வகை மற்றும் பயன்படுத்தப்பட்ட அல்காரிதம் போன்ற மெட்டாடேட்டா தகவல்களைக் கொண்டிருக்கும்.
- பேலோடு (Payload): பயனர் விவரங்கள் அல்லது பிற உரிமைகோரல்கள் (claims) அடங்கிய உண்மையான தரவைக் கொண்டிருக்கும்.
- கையொப்பம் (Signature): டோக்கன் வழியில் மாற்றப்படவில்லை என்பதை உறுதிப்படுத்தப் பயன்படும் பாதுகாப்பு அடுக்கு.
இந்த மூன்று பகுதிகளும் Base64URL குறியாக்க முறைக்கு (encoding) உட்படுத்தப்பட்டு, புள்ளிகளால் இணைக்கப்படுகின்றன. இந்த JWT டிகோடர் கருவியானது, நீங்கள் உள்ளிடும் டோக்கனை உடனடியாகப் பகுப்பாய்வு செய்து, அதன் உள்ளடக்கங்களை மனிதர்கள் வாசிக்கக்கூடிய வடிவத்தில் பிரித்துக் காட்டுகிறது.
JWT ஹெடர் மற்றும் பேலோடு பகுப்பாய்வு
ஹெடர் (Header)
ஹெடர் பகுதியானது டோக்கனை எவ்வாறு செயலாக்க வேண்டும் என்பதைப் பற்றிய விவரங்களை வழங்குகிறது. இதில் பொதுவாகப் பயன்படுத்தப்படும் முக்கிய கூறுகள்:
alg: டோக்கனின் கையொப்பத்தை உருவாக்கப் பயன்படுத்தப்பட்ட அல்காரிதத்தைக் குறிக்கிறது (உதாரணமாக: HS256, RS256).typ: டோக்கனின் வகையைக் குறிக்கிறது, இது பொதுவாக JWT என்று இருக்கும்.
பேலோடு (Payload)
பேலோடு பகுதியில் தான் உண்மையான உரிமைகோரல்கள் (claims) சேமிக்கப்படுகின்றன. இதில் மூன்று வகையான உரிமைகோரல்கள் இருக்கலாம்: பதிவுசெய்யப்பட்டவை (registered), பொதுவானவை (public), மற்றும் தனிப்பட்டவை (private). இதில் அடிக்கடி பயன்படுத்தப்படும் சில முக்கிய நேரக் குறியீடுகள்:
iat(Issued At): டோக்கன் உருவாக்கப்பட்ட அல்லது வழங்கப்பட்ட நேரம்.exp(Expiration Time): டோக்கன் காலாவதியாகும் நேரம்.
இந்தக் கருவி இந்தத் தரவுகளைப் படித்து, அல்காரிதம், வகை, வழங்கப்பட்ட நேரம் மற்றும் காலாவதி ஆகியவற்றைத் தனித்தனியாகப் பிரித்துக் காட்டுகிறது.
டோக்கன் காலாவதி மற்றும் செல்லுபடி நிலை
ஒரு JWT டோக்கனின் ஆயுட்காலம் அதன் பேலோடில் உள்ள exp உரிமைகோரலின் அடிப்படையில் தீர்மானிக்கப்படுகிறது. இந்த டிகோடர் கருவி, டோக்கனின் காலாவதி நேரத்தை தற்போதைய நேரத்துடன் ஒப்பிட்டு அதன் செல்லுபடி நிலையை பின்வரும் பேட்ஜ்கள் மூலம் காட்டுகிறது:
- செல்லுபடியாகும்: டோக்கனின் காலாவதி நேரம் இன்னும் முடிவடையவில்லை எனில் இந்த நிலை காட்டப்படும்.
- காலாவதியானது: டோக்கனில் குறிப்பிடப்பட்டுள்ள காலாவதி நேரம் தற்போதைய நேரத்தை விடக் குறைவாக இருந்தால் இந்த நிலை காட்டப்படும்.
- இன்னும் செல்லுபடியாகவில்லை: டோக்கன் பயன்படுத்தக்கூடிய நேரத்திற்கு முன்னரே அது சமர்ப்பிக்கப்பட்டால் இந்த நிலை காட்டப்படும்.
- காலாவதி இல்லை: டோக்கனில்
expஉரிமைகோரல் எதுவும் இல்லை எனில் இந்த நிலை காட்டப்படும்.
டிகோடிங் மற்றும் கையொப்பச் சரிபார்ப்புக்கு இடையே உள்ள வேறுபாடு
JWT டோக்கனை டிகோட் செய்வது என்பது, Base64URL குறியாக்கத்தில் உள்ள ஹெடர் மற்றும் பேலோடு பகுதிகளை மீண்டும் அசல் JSON வடிவத்திற்கு மாற்றுவதாகும். இதற்கு எந்தவொரு ரகசிய விசையும் (secret key) தேவையில்லை. எவர் வேண்டுமானாலும் ஒரு JWT டோக்கனை எளிதாக டிகோட் செய்து அதில் உள்ள தகவல்களைப் பார்க்க முடியும்.
ஆனால், கையொப்பச் சரிபார்ப்பு (verification) என்பது முற்றிலும் வேறுபட்டது. டோக்கன் உருவாக்கப்பட்ட பிறகு அதில் ஏதேனும் மாற்றங்கள் செய்யப்பட்டுள்ளதா என்பதை உறுதிப்படுத்த, டோக்கனை உருவாக்கியவரின் சைனிங் சீக்ரெட் (signing secret) அல்லது பொது விசை (public key) தேவைப்படுகிறது.
இந்தக் கருவி டோக்கனின் கையொப்பத்தைச் சரிபார்ப்பதில்லை. மேலும், இது உங்களிடம் சைனிங் சீக்ரெட் அல்லது பொது விசையைக் கேட்பதும் இல்லை. இது டோக்கனில் உள்ள தரவுகளைப் படித்துப் பார்ப்பதற்கான ஒரு எளிய டிகோடர் மட்டுமே ஆகும்.
பிழை கையாளுதல் மற்றும் விதிகள்
உள்ளிடப்படும் தரவு சரியான வடிவத்தில் இருப்பதை உறுதி செய்ய இந்தக் கருவி சில விதிகளைப் பின்பற்றுகிறது. தவறான உள்ளீடுகள் வழங்கப்படும் போது பின்வரும் பிழைச் செய்திகள் காட்டப்படும்:
- உள்ளீடு காலியாக இருந்தால், கருவி "தயார். டிகோட் செய்ய ஒரு JWT-ஐ ஒட்டவும்." என்ற நிலையில் இருக்கும்.
- உள்ளீடு மூன்று புள்ளிகளால் பிரிக்கப்பட்ட பகுதியாக இல்லாவிடில், "செல்லுபடியாகும் JWT அல்ல — புள்ளியால் பிரிக்கப்பட்ட மூன்று பகுதிகள் எதிர்பார்க்கப்படுகின்றன." என்ற பிழை காட்டப்படும்.
- ஹெடர் பகுதியில் உள்ள Base64URL குறியாக்கம் தவறாக இருந்தால், "ஹெடரை டிகோட் செய்ய முடியவில்லை — செல்லுபடியற்ற Base64URL." என்று காட்டப்படும்.
- பேலோடு பகுதியில் உள்ள Base64URL குறியாக்கம் தவறாக இருந்தால், "பேலோடை டிகோட் செய்ய முடியவில்லை — செல்லுபடியற்ற Base64URL." என்று காட்டப்படும்.
- டிகோட் செய்யப்பட்ட ஹெடர் சரியான JSON அமைப்பில் இல்லை எனில், "ஹெடர் செல்லுபடியாகும் JSON அல்ல." என்ற பிழை தோன்றும்.
- டிகோட் செய்யப்பட்ட பேலோடு சரியான JSON அமைப்பில் இல்லை எனில், "பேலோடு செல்லுபடியாகும் JSON அல்ல." என்ற பிழை தோன்றும்.
- உள்ளிடப்படும் டோக்கன் மிக நீளமாக இருந்தால், "உண்மையான JWT ஆக இருக்க இது மிகவும் நீளமானது." என்ற செய்தி காட்டப்படும்.
தவறான டோக்கன் உள்ளிடப்படும் போது, டிகோட் செய்யப்பட்ட பகுதிகள் மறைக்கப்படும். உள்ளீட்டை அழிக்கும் போது, கவனம் மீண்டும் உள்ளீட்டுப் பெட்டிக்கே திரும்பும்.
தரவு செயலாக்கம் மற்றும் தனியுரிமை
இந்தக் கருவியைப் பயன்படுத்தும் போது உங்கள் தரவுகளின் தனியுரிமை முழுமையாகப் பாதுகாக்கப்படுகிறது. உங்கள் டோக்கன் உங்கள் உலாவியிலேயே டிகோட் செய்யப்படுகிறது. BroBroGo-விற்கு எதுவும் பதிவேற்றப்படுவதில்லை. இதனால் உங்கள் டோக்கன் தரவுகள் இணையம் வழியாக எந்தவொரு சர்வருக்கும் அனுப்பப்படாமல் உங்கள் கணினியிலேயே பாதுகாப்பாகச் செயலாக்கப்படுகின்றன.
அடிக்கடி கேட்கப்படும் கேள்விகள் (FAQ)
எனது JWT-ஐ இங்கே ஒட்டுவது பாதுகாப்பானதா?
ஆம். டிகோடிங் முற்றிலும் உங்கள் உலாவியிலேயே நடக்கிறது — உங்கள் டோக்கன் ஒருபோதும் BroBroGo-விற்கு அனுப்பப்படுவதில்லை.
இது கையொப்பத்தைச் சரிபார்க்கிறதா?
இல்லை. இது நீங்கள் படிப்பதற்காக ஹெடர் மற்றும் பேலோடை மட்டுமே டிகோட் செய்கிறது. கையொப்பத்தைச் சரிபார்க்க சைனிங் சீக்ரெட் (signing secret) அல்லது பொது விசை தேவை, அதை இந்தக் கருவி ஒருபோதும் கேட்பதில்லை.
எனது டோக்கன் காலாவதியாகிவிட்டதா என்பதை நான் எப்படி அறிவது?
டிகோடர் exp க்ளெய்மைப் படித்து, டிகோட் செய்யப்பட்ட டோக்கனுக்கு அருகில் செல்லுபடியாகும், காலாவதியானது, இன்னும் செல்லுபடியாகாதது அல்லது காலாவதி இல்லை போன்ற நிலை பேட்ஜைக் காட்டுகிறது.