§

আপনার JWT পেস্ট করুন

Parsing ও signature verification উভয়ই locally চলে। token সম্পর্কে কিছু server-এ পাঠানো হয় না।
§

হেডার

json
§

পেলোড

json
§

Signature verify করুন

Signature verify করতে একটি secret লিখুন।

বাংলাদেশ ও পশ্চিমবঙ্গের ডেভেলপাররা AWS Cognito, Auth0, Firebase Authentication, এবং custom OAuth সার্ভারের JWT token নিয়ে কাজ করেন। production-এ একটি token debug করার সময় সেটি remote debugger-এ পাঠানো মানে সেই সার্ভিসের log-এ credential ফাঁস করা। এই tool টি ব্রাউজারেই তিনটি Base64URL segment বিভক্ত করে, header, payload এবং signature দেখায়, এবং `exp`, `iat`, ও `nbf`-এর মতো standard claim সঠিক time-zone rendering সহ decode করে — আপনার bearer token কখনো ট্যাব ছাড়ে না বা কোনো server-side log-এ দেখা যায় না।

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 করে:

  1. token-কে dot দিয়ে ঠিক তিনটি non-empty segment-এ split করুন। অন্য যেকোনো আকার malformed।
  2. Segment 0 ও 1 Base64url-decode করুন, তারপর প্রতিটি JSON.parse করুন। header algorithm (alg) ও token type (typ) বহন করে। payload claim (sub, exp, iat, custom key) বহন করে।
  3. Secret দেওয়া থাকলে, header-এর algorithm ব্যবহার করে <segment0>.<segment1>-এর উপর MAC পুনর্গণনা করুন। তৃতীয় segment-এর বিরুদ্ধে byte তুলনা করুন।
  4. Decoded claim-এর পাশে verification ফলাফল দেখান, exp claim থেকে গণনা করা 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, বা sendBeacon call নেই। decode ও verify করার সময় DevTools খুলুন — Network panel নীরব থাকে।
  • Native Web Crypto: HMAC verification crypto.subtle.importKeycrypto.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 ব্যবহার করে তার উপর নির্মিত।