JWT டிகோடர்

JWT டிகோடர்

JSON வெப் டோக்கன் (JWT) ஒன்றை டிகோட் செய்து அதன் ஹெடர், பேலோட் கிளெய்ம்கள், சைனிங் அல்காரிதம் மற்றும் காலாவதி நிலையை பரிசோதிக்கவும் - டெவலப்பர்கள் மற்றும் API சோதனையாளர்களுக்கான ஒரு பயனுள்ள JWT பிழைதிருத்த கருவி.

JSON வெப் டோக்கன் (JWT) ஒன்றை டிகோட் செய்து அதன் ஹெடர், பேலோட் கிளெய்ம்கள், சைனிங் அல்காரிதம் மற்றும் காலாவதி நிலையை பரிசோதிக்கவும் - டெவலப்பர்கள் மற்றும் API சோதனையாளர்களுக்கான ஒரு பயனுள்ள JWT பிழைதிருத்த கருவி.

டிகோட் செய்ய முழு JSON வெப் டோக்கனையும் பேஸ்ட் செய்யவும் (header.payload.signature).

இந்த பயன்பாட்டைப் பகிரவும்

JWT டிகோடர்

JSON வெப் டோக்கன் (JWT) என்பது ஏறக்குறைய ஒவ்வொரு நவீன அங்கீகார அமைப்பிலும் பயன்படுத்தப்படும் ஒரு சுருக்கமான, URL-பாதுகாப்பான டோக்கன் வடிவமைப்பாகும் - OAuth அணுகல் டோக்கன்கள், சிங்கிள்-பேஜ் ஆப்ஸ்களுக்கான செஷன் குக்கீகள், மைக்ரோசர்வீஸ்களுக்கு இடையே பரிமாறப்படும் API கீகள் மற்றும் பல. இந்த கருவி JWT-யை அதன் சொந்த உள்ளடக்கத்திலிருந்தே முழுமையாக டிகோட் செய்கிறது: இது ஹெடர் மற்றும் பேலோட்டைப் படிக்கிறது, சைனிங் அல்காரிதத்தைக் கண்டறிகிறது, டோக்கன் காலாவதியானதா என்பதைச் சரிபார்க்கிறது, மேலும் நிலையான கிளெய்ம்களை படிக்கக்கூடிய அட்டவணையில் பட்டியலிடுகிறது.

JWT என்றால் என்ன?

ஒரு JWT என்பது புள்ளிகளால் இணைக்கப்பட்ட மூன்று Base64URL-குறியீடாக்கப்பட்ட பகுதிகளாகும்:

JWT=base64url(header)+"."+base64url(payload)+"."+signatureJWT = base64url(header) + "." + base64url(payload) + "." + signature
  • ஹெடர் - சைனிங் அல்காரிதம் (alg) மற்றும் டோக்கன் வகையை (typ) குறிப்பிடும் ஒரு சிறிய JSON ஆப்ஜெக்ட், எ.கா. {"alg":"HS256","typ":"JWT"}
  • பேலோட் - கிளெய்ம்களின் JSON ஆப்ஜெக்ட்: ஆப்ளிகேஷன்-குறிப்பிட்ட தரவு மற்றும் exp (காலாவதி), iat (வழங்கப்பட்ட நேரம்), sub (பொருள்) போன்ற நிலையான பதிவுசெய்யப்பட்ட கிளெய்ம்கள்
  • சிக்னேச்சர் - ஹெடர் மற்றும் பேலோட்டை ஒரு ரகசியம் அல்லது தனியார் கீ மூலம் கையொப்பமிட்டு கணக்கிடப்படுகிறது, இதனால் பெறும் சர்வர் டோக்கன் மாற்றப்படவில்லை என்பதை சரிபார்க்க முடியும்

ஹெடர் மற்றும் பேலோட் குறியீடாக்கப்பட்டவை மட்டுமே, மறையாக்கப்பட்டவை அல்ல - JWT-ஐ வைத்திருக்கும் யாரும் அதன் உள்ளடக்கத்தைப் படிக்க முடியும், இதைத்தான் இந்த கருவி செய்கிறது.

இந்த கருவி எவ்வாறு செயல்படுகிறது

  1. டோக்கனை . இல் மூன்று பகுதிகளாகப் பிரிக்கிறது மற்றும் சரியாக மூன்று பகுதிகள் இல்லாத எதையும் நிராகரிக்கிறது
  2. ஹெடர் மற்றும் பேலோட் பகுதிகளை Base64URL-டிகோட் செய்து ஒவ்வொன்றையும் JSON ஆக பாகுபடுத்துகிறது
  3. டிகோட் செய்யப்பட்ட ஹெடரிலிருந்து alg மற்றும் typ-ஐ படிக்கிறது
  4. பேலோட்டில் எண்ணியல் exp கிளெய்ம் இருந்தால், அதை தற்போதைய நேரத்துடன் ஒப்பிட்டு டோக்கன் செல்லுபடியாகுமா அல்லது காலாவதியானதா என்பதையும், எவ்வளவு காலமாக என்பதையும் தெரிவிக்கிறது
  5. பேலோட்டில் உள்ள நிலையான பதிவுசெய்யப்பட்ட கிளெய்ம்களை (iss, sub, aud, exp, iat, nbf, jti) ஒரு அட்டவணையில் பிரித்தெடுக்கிறது, யூனிக்ஸ் டைம்ஸ்டாம்ப்களை படிக்கக்கூடிய தேதிகளாக மாற்றுகிறது

இந்த கருவி சிக்னேச்சரை ஒருபோதும் சரிபார்க்காது - அவ்வாறு செய்ய சைனிங் ரகசியம் அல்லது பப்ளிக் கீ தேவைப்படும், இதை இந்த கருவி ஒருபோதும் கேட்பதோ பார்ப்பதோ இல்லை. இது டோக்கனை வைத்திருக்கும் யாருக்கும் ஏற்கனவே சாதாரண உரையாக இருக்கும் பகுதிகளை மட்டுமே டிகோட் செய்து பரிசோதிக்கிறது.

உதாரண

மேலே உள்ள புலத்தில் இந்த பிரபலமான மாதிரி டோக்கனை (jwt.io-வில் பயன்படுத்தப்படுவதும்) பேஸ்ட் செய்து சமர்ப்பிக்கவும்:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

இதை டிகோட் செய்தால் கிடைப்பது:

  • ஹெடர்: {"alg":"HS256","typ":"JWT"}
  • பேலோட்: {"sub":"1234567890","name":"John Doe","iat":1516239022}
  • நிலை: காலாவதி கிளெய்ம் இல்லை - இந்த டோக்கன் ஒருபோதும் காலாவதியாகாது
  • கிளெய்ம்கள் அட்டவணை: sub (பொருள்) = 1234567890, iat (வழங்கப்பட்ட நேரம்) = டைம்ஸ்டாம்ப் படிக்கக்கூடிய UTC தேதியாக மாற்றப்பட்டது

இது ஏன் முக்கியம்

ஒரு மூன்றாம் தரப்பு வெப்சைட்டில் JWT-ஐ பேஸ்ட் செய்யாமல் அதை பரிசோதிக்க முடிவது, அங்கீகாரத்தை பிழைதிருத்தும்போது மிகவும் பயனுள்ளதாக இருக்கும்: ஒரு API உண்மையில் எந்த அல்காரிதத்தில் கையொப்பமிடுகிறது என்பதை உறுதிப்படுத்துவது, கிளையண்டைக் குற்றம் சாட்டுவதற்கு முன் அணுகல் டோக்கன் காலாவதியானதா எனச் சரிபார்ப்பது, அல்லது உங்கள் பேக்எண்ட் எதிர்பார்க்கும் ஒரு கிளெய்ம் (aud அல்லது ஒரு கஸ்டம் டெனன்ட் ID போன்றவை) உண்மையில் உங்களுக்கு வழங்கப்பட்ட டோக்கனில் இருக்கிறதா எனச் சரிபார்ப்பது.