JSON Web Tokens (JWTs) आधुनिक authentication को मेरुदण्ड हुन् — API authorization देखि single sign-on सम्म। तर जब केही गलत हुन्छ, तपाईंले समस्या फेला पार्न टोकनलाई छिटो डिकोड र इन्स्पेक्ट गर्नुपर्छ। यो गाइडले JWT कसरी काम गर्छ, प्रत्येक भागमा के हुन्छ, र हाम्रो फ्री JWT डिकोडर प्रयोग गरेर third-party सर्भरमा expose नगरी टोकन कसरी डिबग गर्ने भनेर बताउँछ।
JWT Token डिकोड गर्नुहोस् — फ्री र प्राइभेट
कुनै पनि JWT पेस्ट गर्नुहोस् र तुरुन्तै decoded header, payload claims, expiry status र algorithm हेर्नुहोस्। कुनै signup छैन, कुनै server छैन।
JSON Web Token (JWT) के हो?
JSON Web Token (JWT, उच्चारण "जट") एउटा compact, URL-safe string हो जुन दुई पक्षबीच सुरक्षित रूपमा जानकारी पठाउन प्रयोग गरिन्छ। यो RFC 7519 द्वारा परिभाषित छ र वेब application र APIs मा authentication र authorization को लागि व्यापक रूपमा प्रयोग गरिन्छ।
JWT किन लोकप्रिय छन्
- Stateless: सर्भरलाई session data store गर्नुपर्दैन — टोकनमै सबै जानकारी हुन्छ।
- Compact: HTTP headers, URL parameters वा cookies मा पठाउन पर्याप्त सानो।
- Self-contained: Payload मा user identity र permission हुन्छ, जसले database lookup घटाउँछ।
- Cross-domain: विभिन्न domain र microservices मा सजिलै काम गर्छ।
JWT लाई Google, Auth0, Firebase, AWS Cognito जस्ता प्रमुख platform र OAuth 2.0 वा OpenID Connect प्रयोग गर्ने हरेक आधुनिक API ले प्रयोग गर्छ।
JWT संरचना: Header, Payload र Signature
प्रत्येक JWT मा तीन भाग हुन्छन् जुन dot (.) ले छुट्याइएका हुन्छन्:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.signature
प्रत्येक भाग Base64URL-encoded JSON हो:
1. Header
Header मा सामान्यतया दुई field हुन्छन्:
- alg: Signing algorithm (जस्तै HS256, RS256, ES256)
- typ: Token type, सामान्यतया "JWT"
{
"alg": "HS256",
"typ": "JWT"
}
2. Payload (Claims)
Payload मा claims हुन्छन् — user र metadata बारे statements। तीन प्रकार छन्:
| प्रकार | उदाहरण | विवरण |
|---|---|---|
| Registered | iss, sub, exp, iat, aud | JWT standard द्वारा पूर्वनिर्धारित |
| Public | name, email, role | Custom तर सामान्यतया प्रयोग हुने |
| Private | company_id, plan | तपाईंको app को लागि custom claims |
3. Signature
Signature encoded header र payload लाई secret key (HMAC) वा private key (RSA/ECDSA) ले sign गरेर बनाइन्छ। यसले टोकनमा कुनै छेडछाड भएको छैन भनेर सुनिश्चित गर्छ।
सामान्य JWT Claims को व्याख्या
Authentication समस्याहरू debug गर्न standard claims बुझ्नु आवश्यक छ:
| Claim | पूरा नाम | विवरण | उदाहरण |
|---|---|---|---|
| iss | Issuer | टोकन कसले बनाउयो र sign गर्यो | "https://auth.example.com" |
| sub | Subject | टोकनले कुन user वा entity लाई प्रतिनिधित्व गर्छ | "user_1234" |
| aud | Audience | इच्छित प्राप्तकर्ता (API वा service) | "https://api.example.com" |
| exp | Expiration | Unix timestamp जब टोकन expire हुन्छ | 1711756800 |
| iat | Issued At | Unix timestamp जब टोकन बनाइयो | 1711670400 |
| nbf | Not Before | यो समय अघि टोकन अमान्य छ | 1711670400 |
| jti | JWT ID | Replay attack रोक्न unique identifier | "abc-123-def" |
यदि तपाईंको API ले 401 Unauthorized फर्काउँछ भने, सबैभन्दा पहिले exp claim जाँच गर्नुहोस् — expired टोकन auth failure को #1 कारण हो।
JWT Signing Algorithms: HS256 vs RS256 vs ES256
JWT header मा algorithm ले signature कसरी बनाइन्छ र verify गरिन्छ भनेर निर्धारण गर्छ:
| Algorithm | प्रकार | Key | सबैभन्दा राम्रो |
|---|---|---|---|
| HS256 | HMAC + SHA-256 | Shared secret | Simple apps, same-server auth |
| RS256 | RSA + SHA-256 | Public/private key pair | Microservices, third-party verification |
| ES256 | ECDSA + SHA-256 | Public/private key pair | Mobile apps, performance-sensitive |
कुन प्रयोग गर्ने?
- HS256: सबैभन्दा सरल — जब issuer र verifier दुवैले एउटै secret share गर्छन्।
- RS256: Distributed systems को लागि सबैभन्दा सामान्य — Auth0, Google, AWS Cognito द्वारा प्रयोग गरिन्छ।
- ES256: RSA भन्दा सानो signatures र छिटो verification — mobile र IoT को लागि उपयुक्त।
JWT टोकन अनलाइन कसरी डिकोड गर्ने
हाम्रो फ्री JWT डिकोडरले तपाईंलाई सर्भरमा नपठाई कुनै पनि टोकन तुरुन्तै इन्स्पेक्ट गर्न दिन्छ:
Step-by-Step
- आफ्नो JWT कपी गर्नुहोस् — ब्राउजर DevTools (Application → Cookies वा Network → Headers), API response, वा terminal बाट।
- डिकोडरमा पेस्ट गर्नुहोस् — tool ले तुरुन्तै टोकनलाई तीन भागमा विभाजन गर्छ।
- Header इन्स्पेक्ट गर्नुहोस् — algorithm (
alg) र token type जाँच गर्नुहोस्। - Payload claims रिभ्यू गर्नुहोस् — user info, roles, timestamps सहित सबै claims हेर्नुहोस्।
- Token validity जाँच गर्नुहोस् — tool ले
expलाई तपाईंको हालको समयसँग तुलना गर्छ र "Valid" वा "Expired" badge देखाउँछ।
हाम्रो डिकोडर 100% तपाईंको ब्राउजरमा JavaScript प्रयोग गरेर चल्छ। तपाईंको JWT टोकन कहिल्यै तपाईंको device बाट बाहिर जाँदैन।
सामान्य JWT समस्याहरू Debug गर्ने
जब authentication बिग्रन्छ, JWT प्रायः कारण हुन्छ। यहाँ सबैभन्दा सामान्य समस्याहरू छन्:
1. Token Expired (401 Unauthorized)
Token डिकोड गर्नुहोस् र exp claim जाँच गर्नुहोस्। यदि यो बितेको समयमा छ भने, token expire भइसकेको छ। समाधान: refresh token endpoint बाट नयाँ token लिनुहोस्।
2. Invalid Audience (403 Forbidden)
aud claim API ले अपेक्षा गरेकोसँग मेल खाँदैन। यो तब हुन्छ जब तपाईं एउटा API को लागि बनेको token अर्को API मा प्रयोग गर्नुहुन्छ।
3. Token अझै Valid छैन
यदि nbf (Not Before) claim भविष्यको समयमा सेट छ भने, token अहिले स्वीकार गरिने छैन।
4. आवश्यक Claims हराइरहेका
केही APIs लाई role, scope, वा permissions जस्ता विशिष्ट claims चाहिन्छ। Token डिकोड गरेर यी claims छन् कि छैनन् जाँच गर्नुहोस्।
5. Algorithm Mismatch
Server ले RS256 अपेक्षा गर्छ तर token ले HS256 प्रयोग गर्छ (वा उल्टो)।
6. Clock Skew
यदि iat verifying server को सापेक्ष अलिकति भविष्यमा छ भने, यसले token reject गर्न सक्छ।
JWT सुरक्षा सर्वोत्तम अभ्यासहरू
JWT शक्तिशाली छन् तर गलत प्रयोग गरेमा खतरनाक हुन सक्छन्। यी best practices पालन गर्नुहोस्:
- Token लाई short-lived राख्नुहोस्: Access tokens को लागि
exp15-60 मिनेट सेट गर्नुहोस्। लामो session को लागि refresh tokens प्रयोग गर्नुहोस्। - Payload मा secrets कहिल्यै नराख्नुहोस्: JWT encoded छन्, encrypted छैनन् — जोसुकैले payload पढ्न सक्छ।
- सधैं algorithm validate गर्नुहोस्: "alg: none" attack रोक्न server-side मा expected algorithm सेट गर्नुहोस्।
- HTTPS मात्र प्रयोग गर्नुहोस्: Man-in-the-middle interception रोक्न token सधैं HTTPS मा मात्र पठाउनुहोस्।
- Token सुरक्षित रूपमा store गर्नुहोस्: XSS attack रोक्न HttpOnly cookies प्रयोग गर्नुहोस् (localStorage होइन)।
- सबै claims validate गर्नुहोस्: Signature मात्र होइन —
iss,aud,exp, रnbfपनि server-side verify गर्नुहोस्।
Production credentials भएको JWT कहिल्यै third-party website मा डिकोड नगर्नुहोस्। हाम्रो जस्तो privacy-first tool प्रयोग गर्नुहोस् जसले सबै कुरा locally process गर्छ।
JWT vs Session Tokens vs API Keys
सही authentication mechanism छनौट गर्नु तपाईंको use case मा निर्भर गर्छ:
| Feature | JWT | Session Token | API Key |
|---|---|---|---|
| Stateless | हो — self-contained | होइन — server-side store चाहिन्छ | होइन — server lookup चाहिन्छ |
| Expiry | Built-in (exp claim) | Server-managed | सामान्यतया expire हुँदैन |
| Revocation | गाह्रो (blocklist चाहिन्छ) | सजिलो (store बाट delete) | सजिलो (key delete) |
| Payload data | हो (claims) | होइन (ID मात्र) | होइन (key मात्र) |
| Cross-domain | सजिलो (Bearer header) | गाह्रो (cookie domain limits) | सजिलो (header) |
| सबैभन्दा राम्रो | SPAs, microservices, OAuth | परम्परागत web apps | Server-to-server, third-party |
धेरै आधुनिक application हरूले combination प्रयोग गर्छन्: short-lived access tokens को लागि JWT, HttpOnly cookies मा refresh tokens, र external integrations को लागि API keys।
How to Use the Tool (Step by Step)
- 1
आफ्नो JWT Token कपी गर्नुहोस्
ब्राउजर DevTools (Cookies वा Network tab), API response, वा terminal output बाट token लिनुहोस्।
- 2
डिकोडरमा पेस्ट गर्नुहोस्
JWT Decoder tool खोल्नुहोस् र token पेस्ट गर्नुहोस्। यो तुरुन्तै header, payload र signature मा विभाजित हुन्छ।
- 3
Header र Algorithm इन्स्पेक्ट गर्नुहोस्
Decoded header मा signing algorithm (HS256, RS256, आदि) र token type जाँच गर्नुहोस्।
- 4
Payload Claims रिभ्यू गर्नुहोस्
सबै claims जाँच गर्नुहोस् — user ID, roles, permissions, issued time र expiration।
- 5
Token Validity जाँच गर्नुहोस्
Tool ले स्वचालित रूपमा expiry time लाई तपाईंको हालको समयसँग तुलना गर्छ र token valid छ कि expired देखाउँछ।
Frequently Asked Questions
के यो tool ले JWT signature verify गर्न सक्छ?+−
सक्दैन। Signature verification को लागि secret key वा public key चाहिन्छ, जुन कहिल्यै browser tool मा paste गर्नु हुँदैन। हाम्रो decoder ले Base64-encoded header र payload मात्र पढ्छ।
के मेरो JWT token server मा पठाइन्छ?+−
पठाइँदैन। सबै decoding 100% तपाईंको browser मा JavaScript बाट हुन्छ। तपाईंको token कहिल्यै तपाईंको device बाट बाहिर जाँदैन।
JWT expired हुनु भनेको के हो?+−
Expired JWT भनेको हालको समय "exp" claim को Unix timestamp भन्दा अगाडि पुगिसकेको हो। कुनै पनि सही तरिकाले configure गरिएको server ले token reject गर्नेछ।
के secret key बिना JWT decode गर्न सकिन्छ?+−
सकिन्छ। JWT को header र payload Base64URL-encoded मात्र हो, encrypted होइन। जोसुकैले यिनलाई पढ्न सक्छ। Secret key signature verify गर्न मात्र चाहिन्छ।
HS256 र RS256 मा के फरक छ?+−
HS256 ले shared secret key प्रयोग गर्छ (symmetric)। RS256 ले private key ले sign र public key ले verify गर्छ (asymmetric)। RS256 distributed systems को लागि राम्रो छ।
JWT लाई localStorage मा किन राख्नु हुँदैन?+−
localStorage page मा चल्ने जुनसुकै JavaScript बाट accessible छ, जसले token लाई XSS attack को लागि vulnerable बनाउँछ। HttpOnly cookies बढी सुरक्षित छन्।
JWT Token डिकोड गर्नुहोस् — फ्री र प्राइभेट
कुनै पनि JWT पेस्ट गर्नुहोस् र तुरुन्तै decoded header, payload claims, expiry status र algorithm हेर्नुहोस्। कुनै signup छैन, कुनै server छैन।
JWT Decoder खोल्नुहोस् →Related Guides
Hash Generator — MD5, SHA-256 Nepali Guide (2026)
MD5, SHA-256 hashes generate गर्नुहोस् — hashing बुझ्नुहोस्, file verify गर्नुहोस्।
Base64 Encode/Decode गाइड
Base64 encoding र decoding — API development, data transmission, image embedding सबैका लागि।
Password Strength Checker गाइड
आफ्नो password कति strong छ जाँच्नुहोस् — र Nepal मा हुने cyber attacks बाट बच्नुहोस्।
Regex Tester — Regular Expressions Test (2026)
Regex patterns test — real-time matching।