JSON Web Token అంటే ఏమిటి?
JSON Web Token (JWT) అనేది చిన్న క్లెయిమ్ల పేలోడ్ కోసం కాంపాక్ట్, URL-సురక్షిత ఎన్వెలప్. ఇది స్టేట్లెస్ వెబ్ సెషన్లు, OAuth/OIDC ID టోకెన్లు, మెషీన్-టు-మెషీన్ API ఆత్, మరియు సైన్ చేసిన మ్యాజిక్ లింక్ల కోసం ప్రామాణిక క్రెడెన్షియల్ ఫార్మాట్. JWT ఎల్లప్పుడూ డాట్లతో చేర్చిన మూడు base64url సెగ్మెంట్లు: header.payload.signature. హెడర్ మరియు పేలోడ్ JSON; సిగ్నేచర్ మొదటి రెండు సెగ్మెంట్లపై బైనరీ MAC లేదా డిజిటల్ సిగ్నేచర్.
JWTs ఎలా పనిచేస్తాయి?
ఈ టూల్ టోకెన్ డీకోడ్ చేసేటప్పుడు ప్రతి JWT లైబ్రరీ అనుసరించే అదే మూడు-దశ పాత్ నడుస్తుంది:
- టోకెన్ను డాట్లపై సరిగ్గా మూడు ఖాళీ కాని సెగ్మెంట్లుగా విభజించండి. మరేదైనా రూపం మాల్ఫార్మ్డ్.
- సెగ్మెంట్ 0 మరియు 1 ను base64url-డీకోడ్ చేయండి, అప్పుడు ప్రతిదాన్ని
JSON.parseచేయండి. హెడర్ అల్గారిథమ్ (alg) మరియు టోకెన్ టైప్ (typ) కలిగి ఉంటుంది. పేలోడ్ క్లెయిమ్లు (sub,exp,iat, కస్టమ్ కీలు) కలిగి ఉంటుంది. - సీక్రెట్ అందించబడినప్పుడు, హెడర్లో అల్గారిథమ్ ఉపయోగించి
<segment0>.<segment1>పై MAC పునఃగణించండి. మూడవ సెగ్మెంట్కు వ్యతిరేకంగా బైట్లు పోల్చండి. expక్లెయిమ్ నుండి గణించిన మానవ-చదవగలిగే గడువు సూచికతో పాటు వెరిఫికేషన్ ఫలితం మరియు డీకోడ్ చేసిన క్లెయిమ్లు చూపించండి.
బ్రౌజర్లో JWTs ఎందుకు డీకోడ్ చేయాలి?
నిజంగా వాడుకలో ఉన్న JWT ని రిమోట్ డీబగ్గర్లో పేస్ట్ చేయడం వల్ల ఆ సర్వీస్ యొక్క లాగ్లు, ఆబ్జర్వెబిలిటీ స్టాక్, మరియు సర్వీస్ డేటా పంపే ఏ భాగస్వాముడికైనా క్రెడెన్షియల్ లీక్ అవుతుంది. థర్డ్-పార్టీ సైట్ టోకెన్లు లాగ్ చేయదని క్లెయిమ్ చేసినప్పుడు కూడా మీరు దాన్ని వెరిఫై చేయలేరు. ఈ టూల్ మీరు ఆ రాజీ చేయకుండా ఉండాలని నిర్మించబడింది:
- సున్నా నెట్వర్క్: రన్టైమ్లో
fetch,XMLHttpRequest, లేదాsendBeaconకాల్లు లేవు. మీరు డీకోడ్ మరియు వెరిఫై చేస్తున్నప్పుడు DevTools తెరవండి — నెట్వర్క్ పానెల్ నిశ్శబ్దంగా ఉంటుంది. - నేటివ్ Web Crypto: HMAC వెరిఫికేషన్
crypto.subtle.importKeyమరియుcrypto.subtle.signఉపయోగిస్తుంది, మీ రన్టైమ్ పిలిచే అదే ప్రిమిటివ్లు. - స్టాటిక్ డిప్లాయ్: ప్రతి పేజీ సర్వర్ ఎండ్పాయింట్ లేని సింగిల్ స్టాటిక్ HTML ఫైల్. లీక్ అవ్వడానికి టోకెన్ లేదు ఎందుకంటే దాన్ని లీక్ చేయడానికి సర్వర్ లేదు.
ఈ టూల్ ఏమి వెరిఫై చేస్తుంది, మరియు ఏమి చేయదు?
ఈ టూల్ యొక్క వెర్షన్ 1 కేవలం HMAC-SHA ఫ్యామిలీ సిగ్నేచర్లు మాత్రమే వెరిఫై చేస్తుంది. స్పష్టంగా:
- సపోర్ట్ చేయబడినవి: HS256, HS384, HS512. షేర్డ్ సీక్రెట్ అందించండి మరియు టూల్ MAC పునఃగణించి పోల్చుతుంది.
- ఇంకా సపోర్ట్ చేయబడలేదు: RS256/384/512 (RSA), ES256/384/512 (ECDSA), EdDSA, మరియు PS256/384/512 (RSA-PSS). వీటికి PEM లేదా JWK రూపంలో పబ్లిక్ కీ అవసరం మరియు ఫాలో-అప్ రిలీజ్కు ఉద్దేశపూర్వకంగా వాయిదా వేయబడ్డాయి.
- తిరస్కరించబడింది:
alg: "none". టూల్ టోకెన్ డీకోడ్ చేస్తుంది కానీ దాన్ని స్పష్టంగా అసురక్షితంగా ఫ్లాగ్ చేస్తుంది — సిగ్నేచర్ వ్యాలిడేషన్ జరగడం లేదు, మరియు అటువంటి టోకెన్ అంగీకరించే ప్రొడక్షన్ సిస్టమ్ తీవ్రమైన వలసిరాలి కలిగి ఉంది.
JWT డీకోడింగ్ ఉదాహరణ ఎలా కనిపిస్తుంది?
పైన ఉన్న ఇన్పుట్ ఫీల్డ్లో కానోనికల్ RFC 7519 ఉదాహరణ టోకెన్ పేస్ట్ చేయండి:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
హెడర్ {"alg":"HS256","typ":"JWT"} కు మరియు పేలోడ్ {"sub":"1234567890","name":"John Doe","iat":1516239022} కు డీకోడ్ అవుతుంది. వెరిఫై పానెల్లో your-256-bit-secret నమోదు చేయండి మరియు సిగ్నేచర్ చెక్ చెల్లుబాటైనది తిరిగి ఇస్తుంది. సీక్రెట్ యొక్క ఒక్క అక్షరం మార్చండి మరియు అది చెల్లుబాటు కాదు తిరిగి ఇస్తుంది. ఇవేదీ మీ బ్రౌజర్ వదలవు.
ఇది ప్రొడక్షన్లో టోకెన్ డీబగ్ చేయడానికి అవసరమైనప్పుడు మేము కోరుకున్న JWT డీకోడర్: గోప్యత-గౌరవించే, వేగంగా, మరియు రన్టైమ్ ఉపయోగించే అదే ప్రిమిటివ్లపై నిర్మించబడింది.