JWT డీకోడర్
JSON వెబ్ టోకెన్ (JWT) అనేది దాదాపు ప్రతి ఆధునిక ప్రామాణీకరణ వ్యవస్థలోనూ ఉపయోగించే ఒక కాంపాక్ట్, URL-సురక్షిత టోకెన్ ఫార్మాట్ - OAuth యాక్సెస్ టోకెన్లు, సింగిల్-పేజ్ యాప్ల కోసం సెషన్ కుక్కీలు, మైక్రోసర్వీసుల మధ్య మార్పిడి చేసుకునే API కీలు, మరియు మరెన్నో. ఈ సాధనం JWT-ను దాని స్వంత కంటెంట్ నుండి పూర్తిగా డీకోడ్ చేస్తుంది: ఇది హెడర్ మరియు పేలోడ్ను చదువుతుంది, సైనింగ్ అల్గోరిథంను గుర్తిస్తుంది, టోకెన్ గడువు ముగిసిందా అని తనిఖీ చేస్తుంది, మరియు ప్రామాణిక క్లెయిమ్లను చదవదగిన పట్టికలో జాబితా చేస్తుంది.
JWT అంటే ఏమిటి?
ఒక JWT అనేది చుక్కలతో కలిపిన మూడు Base64URL-ఎన్కోడ్ చేసిన భాగాలు:
- హెడర్ - సైనింగ్ అల్గోరిథం (
alg) మరియు టోకెన్ రకాన్ని (typ) తెలిపే చిన్న JSON ఆబ్జెక్ట్, ఉదా.{"alg":"HS256","typ":"JWT"} - పేలోడ్ - క్లెయిమ్ల JSON ఆబ్జెక్ట్: అప్లికేషన్-నిర్దిష్ట డేటాతో పాటు
exp(గడువు),iat(జారీ చేసిన సమయం),sub(సబ్జెక్ట్) వంటి ప్రామాణిక నమోదిత క్లెయిమ్లు - సిగ్నేచర్ - హెడర్ మరియు పేలోడ్ను రహస్యం లేదా ప్రైవేట్ కీతో సంతకం చేయడం ద్వారా లెక్కించబడుతుంది, తద్వారా అందుకునే సర్వర్ టోకెన్తో ఛేడ్చాటు జరగలేదని నిర్ధారించుకోగలదు
హెడర్ మరియు పేలోడ్ కేవలం ఎన్కోడ్ చేయబడినవి మాత్రమే, ఎన్క్రిప్ట్ చేయబడినవి కావు - JWT కలిగి ఉన్న ఎవరైనా దాని కంటెంట్ను చదవగలరు, ఈ సాధనం చేసేది కూడా అదే.
ఈ సాధనం ఎలా పనిచేస్తుంది
- టోకెన్ను
.వద్ద మూడు భాగాలుగా విభజిస్తుంది మరియు సరిగ్గా మూడు భాగాలు లేని దేనినైనా తిరస్కరిస్తుంది - హెడర్ మరియు పేలోడ్ భాగాలను Base64URL-డీకోడ్ చేసి ప్రతిదాన్ని JSON గా పార్స్ చేస్తుంది
- డీకోడ్ చేసిన హెడర్ నుండి
algమరియుtypను చదువుతుంది - పేలోడ్లో సంఖ్యా
expక్లెయిమ్ ఉంటే, దాన్ని ప్రస్తుత సమయంతో పోల్చి టోకెన్ చెల్లుబాటులో ఉందా లేదా గడువు ముగిసిందా, ఎంత సమయం అని తెలియజేస్తుంది - పేలోడ్లో ఉన్న ప్రామాణిక నమోదిత క్లెయిమ్లను (
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 వంటిది) మీకు అందిన టోకెన్లో నిజంగా ఉందా అని ధృవీకరించడం.