JSON Web Token એટલે શું?
એક JSON Web Token (JWT) એ નાના ક્લેમ્સ પેલોડ માટેનું એક સંક્ષિપ્ત, URL-સુરક્ષિત પરબિડીયું છે. તે સ્ટેટલેસ વેબ સેશન, OAuth/OIDC ID ટોકન, મશીન-થી-મશીન API પ્રમાણીકરણ અને હસ્તાક્ષરિત મેજિક લિંક માટેનું માનક ઓળખપત્ર (credential) ફોર્મેટ છે. JWT હંમેશા ડોટ્સથી જોડાયેલા ત્રણ base64url ખંડ હોય છે: header.payload.signature. હેડર અને પેલોડ JSON છે; હસ્તાક્ષર એ પ્રથમ બે ખંડો પરનો બાઇનરી MAC કે ડિજિટલ હસ્તાક્ષર છે.
JWT?
જ્યારે આ ટૂલ ટોકન ડિકોડ કરે, ત્યારે તે દરેક JWT લાઇબ્રેરી અનુસરતા ત્રણ-તબક્કાના સમાન માર્ગ પર ચાલે:
- ટોકનને ડૉટ્સ પર ઠીક ત્રણ ખાલી-ન-હોય-તેવા ભાગોમાં વિભાજિત કરો. કોઈ પણ અન્ય આકાર ખામીયુક્ત (malformed) ગણાય.
- ખંડ 0 અને 1 ને Base64url-ડિકોડ કરો, પછી દરેકને
JSON.parseકરો. હેડર એલ્ગોરિધમ (alg) અને ટોકન પ્રકાર (typ) વહન કરે છે. પેલોડ ક્લેમ્સ વહન કરે છે (sub,exp,iat, કસ્ટમ કી). - જો ગોપનીય કળી (secret) આપેલ હોય, તો હેડરમાં ઉલ્લેખિત અલ્ગોરિધ્મ વડે
<segment0>.<segment1>પર MAC ફરીથી ગણો. ત્રીજા ભાગ સામે bytes ની સરખામણી કરો. - ડિકોડ કરેલા ક્લેમ્સની સાથોસાથ ચકાસણી પરિણામ રજૂ કરો, જેમાં
expક્લેમ પરથી ગણાયેલ માણસ-વાંચી શકાય તેવો સમાપ્તિ સૂચક પણ શામેલ છે.
બ્રાઉઝરમાં JWT શા માટે ડિકોડ કરવા?
ઉપયોગમાં ચાલી રહેલ વાસ્તવિક JWT ને કોઈ દૂરસ્થ ડિબગરમાં paste કરવાથી ત્યાં સેવાના log, observability stack, અને ડેટા-ભાગીદારોને ઓળખ-ચિહ્ન (credential) લીક થઈ જાય. ત્રીજા-પક્ષ સાઇટ ટોકન log ન કરવાનો દાવો કરે, તો પણ તમે ચકાસી શકો નહીં. આ ટૂલ એ સમજૂતી ક્યારેય ન કરવી પડે એ માટે બનાવ્યું:
- Zero network:
fetch,XMLHttpRequest,sendBeacon. DevTools decode verify — Network panel silent. - Native Web Crypto: HMAC
crypto.subtle.importKeycrypto.subtle.sign. - Static deploy: single static HTML no server endpoint. No token leak server.
આ સાધન શું ચકાસે છે અને શું નથી ચકાસતું?
આ ટૂલના આવૃત્તિ 1 ફક્ત HMAC-SHA પરિવારની સહીઓ (signatures) ચકાસે. ચોક્કસ ભાષામાં:
- Supported: HS256, HS384, HS512. Shared secret tool MAC recompute compare.
- Not yet supported: RS256/384/512 (RSA), ES256/384/512 (ECDSA), EdDSA, PS256/384/512 (RSA-PSS). Public key PEM JWK follow-up.
- Refused:
alg: "none". Token decode insecure flag — signature validation production vulnerability.
JWT ડિકોડિંગનું ઉદાહરણ કેવું દેખાય છે?
ઉપરના ઇનપુટ ફીલ્ડમાં માનક RFC 7519 ઉદાહરણ ટોકન પેસ્ટ કરો:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Header {"alg":"HS256","typ":"JWT"}, payload {"sub":"1234567890","name":"John Doe","iat":1516239022}. Verify panel your-256-bit-secret signature valid. Secret one character change invalid. Browser.
આ એ જ JWT ડિકોડર છે જે અમારી ઇચ્છા હતી કે અસ્તિત્વમાં હોત જ્યારે અમારે પ્રોડક્શનમાં કોઈ ટોકન ડિબગ કરવાનું હતું: ગોપનીયતા-આદર કરનાર, ઝડપી, અને એ જ પ્રિમિટિવ્સ પર બનેલું જે રનટાઇમ વાપરે છે.