JSON Web Token কী?
একটি JSON Web Token (JWT) হলো একটি ছোট claims payload-এর জন্য একটি compact, URL-safe envelope। এটি stateless web session, OAuth/OIDC ID token, machine-to-machine API auth, এবং signed magic link-এর জন্য মানক credential ফরম্যাট। একটি JWT সর্বদা dot দিয়ে joined তিনটি base64url segment: header.payload.signature। header ও payload হলো JSON; signature হলো প্রথম দুটি segment-এর উপর একটি binary MAC বা digital signature।
JWT কীভাবে কাজ করে?
এই tool যখন একটি token decode করে তখন প্রতিটি JWT লাইব্রেরি যে তিন-ধাপের পথ অনুসরণ করে সেটি walk করে:
- token-কে dot দিয়ে ঠিক তিনটি non-empty segment-এ split করুন। অন্য যেকোনো আকার malformed।
- Segment 0 ও 1 Base64url-decode করুন, তারপর প্রতিটি
JSON.parseকরুন। header algorithm (alg) ও token type (typ) বহন করে। payload claim (sub,exp,iat, custom key) বহন করে। - Secret দেওয়া থাকলে, header-এর algorithm ব্যবহার করে
<segment0>.<segment1>-এর উপর MAC পুনর্গণনা করুন। তৃতীয় segment-এর বিরুদ্ধে byte তুলনা করুন। - Decoded claim-এর পাশে verification ফলাফল দেখান,
expclaim থেকে গণনা করা human-readable expiry indicator সহ।
ব্রাউজারে JWT decode কেন করবেন?
একটি real, ব্যবহার-চলমান JWT remote debugger-এ পেস্ট করা সেই service-এর log, observability stack, এবং service যে partner-এ ডেটা পাঠায় তাদের কাছে credential ফাঁস করে। তৃতীয়-পক্ষের site token log না করার দাবি করলেও আপনি verify করতে পারবেন না। এই tool তৈরি হয়েছে যাতে আপনাকে কখনো সেই আপোষ করতে না হয়:
- Zero network: runtime-এ কোনো
fetch,XMLHttpRequest, বাsendBeaconcall নেই। decode ও verify করার সময় DevTools খুলুন — Network panel নীরব থাকে। - Native Web Crypto: HMAC verification
crypto.subtle.importKeyওcrypto.subtle.signব্যবহার করে, একই primitive আপনার runtime call করবে। - Static deploy: প্রতিটি পেজ কোনো server endpoint ছাড়া একটি একক static HTML ফাইল। কোনো leak করার token নেই কারণ leak করার server নেই।
এই tool কী verify করে, আর কী করে না?
এই tool-এর Version 1 শুধুমাত্র HMAC-SHA family signature verify করে। সুনির্দিষ্টভাবে:
- সমর্থিত: HS256, HS384, HS512। shared secret দিন এবং tool MAC পুনর্গণনা ও তুলনা করবে।
- এখনো সমর্থিত নয়: RS256/384/512 (RSA), ES256/384/512 (ECDSA), EdDSA, এবং PS256/384/512 (RSA-PSS)। এগুলো PEM বা JWK form-এ public key প্রয়োজন এবং ইচ্ছাকৃতভাবে follow-up release-এ স্থগিত।
- প্রত্যাখ্যাত:
alg: "none"। tool token decode করে কিন্তু স্পষ্টভাবে এটি insecure হিসেবে flag করে — কোনো signature validation হচ্ছে না, এবং এমন token গ্রহণকারী যেকোনো production system একটি গুরুতর vulnerability ধারণ করে।
JWT decoding উদাহরণ কেমন দেখায়?
উপরের input field-এ canonical RFC 7519 example token পেস্ট করুন:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Header decode হয় {"alg":"HS256","typ":"JWT"}-এ এবং payload {"sub":"1234567890","name":"John Doe","iat":1516239022}-এ। verify panel-এ your-256-bit-secret লিখুন এবং signature check বৈধ ফেরত দেয়। secret-এর একটি character পরিবর্তন করলে অবৈধ ফেরত দেয়। এর কিছুই আপনার ব্রাউজার ছাড়ে না।
এটি সেই JWT decoder যা আমরা চেয়েছিলাম যখন production-এ একটি token debug করার প্রয়োজন ছিল: গোপনীয়তা-সম্মানী, দ্রুত, এবং runtime যে primitive ব্যবহার করে তার উপর নির্মিত।