JWT ডিকোডার

একটি JSON Web Token পেস্ট করে এর header ও payload পড়ুন, কখন মেয়াদ শেষ হবে দেখুন এবং প্রতিটি ক্লেইম বুঝুন। আপনার টোকেন কখনো ব্রাউজার ছেড়ে যায় না।

ব্রাউজারেই চলেসাইন-আপ লাগে নাকিছুই আপলোড হয় না

ডিকোড করা মানে যাচাই করা নয়। JWT-এর header ও payload যে কেউ পড়তে পারে, কারণ সেগুলো শুধু base64url-এনকোড করা। এই টুল দেখায় টোকেনটি কী দাবি করে; টোকেনটি আসল কিনা তা প্রমাণ করে না। সবসময় আপনার সার্ভারে সিগনেচার যাচাই করুন।

Header

Payload


      

সিগনেচার যাচাই (ঐচ্ছিক, HS256/HS384/HS512)

আপনার দেওয়া সিক্রেট দিয়ে ব্রাউজারের Web Crypto API ব্যবহার করে HMAC সিগনেচার যাচাই করে। সিক্রেট কখনো এই পেজ ছেড়ে যায় না। RSA/ECDSA টোকেনের জন্য ইস্যুকারীর পাবলিক কী লাগে, তাই সেগুলো এখানে যাচাই হয় না।

JWT ডিকোডার কীভাবে ব্যবহার করবেন

  1. টোকেনটি এনকোড করা টোকেন বক্সে পেস্ট করুন। Authorization হেডার থেকে আসা শুরুর Bearer উপেক্ষা করা হয়।
  2. header ও payload সঙ্গে সঙ্গে ডিকোড হয়ে ফরম্যাট করা JSON হিসেবে দেখা যায়।
  3. ক্লেইমের ব্যাখ্যা টেবিল পড়ুন: exp, iat ও nbf তারিখে রূপান্তরিত হয়, সাথে “মেয়াদ শেষ হবে” / “মেয়াদ শেষ হয়েছে” সময়।
  4. মেয়াদ-সংক্রান্ত সমস্যার জন্য স্ট্যাটাস বার এবং alg: none-এর মতো ঝুঁকিপূর্ণ সেটিংয়ের জন্য সতর্কবার্তা দেখুন।
  5. চাইলে শেয়ার্ড সিক্রেট দিয়ে HS256, HS384 বা HS512 সিগনেচার লোকালি যাচাই করুন।

JWT-এর ভেতরে কী থাকে?

একটি JSON Web Token (RFC 7519) হলো বিন্দু দিয়ে জোড়া তিনটি base64url স্ট্রিং: header.payload.signature। header-এ সাইনিং অ্যালগরিদম (alg) ও টোকেনের ধরন থাকে। payload-এ ক্লেইম থাকে, যেমন ব্যবহারকারী কে এবং টোকেনের মেয়াদ কখন শেষ। signature প্রথম দুই অংশের ওপর একটি সিক্রেট বা প্রাইভেট কী দিয়ে গণনা করা হয়।

ডিকোড করা মানে যাচাই করা নয়

header ও payload শুধু এনকোড করা, এনক্রিপ্ট করা নয়, তাই টোকেন হাতে থাকলে যে কেউ এগুলো পড়তে পারে। এজন্যই JWT payload-এ কখনো পাসওয়ার্ড বা সিক্রেট রাখবেন না। ডিকোড করলে জানা যায় টোকেন কী বলছে। সিগনেচার যাচাই, সাধারণত আপনার API সার্ভারে jose বা PyJWT-এর মতো লাইব্রেরি দিয়ে, প্রমাণ করে কে এটি ইস্যু করেছে এবং এটি পরিবর্তিত হয়নি। সার্ভারকে exp, nbf, iss ও aud-ও যাচাই করতে হবে এবং অপ্রত্যাশিত অ্যালগরিদম প্রত্যাখ্যান করতে হবে।

নিবন্ধিত ক্লেইমের চিট শিট

ক্লেইমঅর্থ
issIssuer: কে টোকেনটি তৈরি ও সাইন করেছে
subSubject: সাধারণত ব্যবহারকারীর ID
audAudience: টোকেনটি কোন API-এর জন্য
expমেয়াদ শেষের সময়, Unix epoch থেকে সেকেন্ডে
nbfএই সময়ের আগে বৈধ নয়
iatইস্যুর সময়
jtiটোকেনের অনন্য ID, বাতিল-তালিকার জন্য কাজে লাগে

“token expired” ত্রুটি ডিবাগ করা

নতুন মনে হওয়া টোকেনও যদি API প্রত্যাখ্যান করে, তাহলে সার্ভারের ঘড়ির সাথে exp ও nbf মিলিয়ে দেখুন। মেশিনগুলোর মধ্যে ঘড়ির সামান্য পার্থক্য সাধারণ ব্যাপার, তাই বেশিরভাগ লাইব্রেরি ৩০-৬০ সেকেন্ড ছাড় দেয়। এছাড়া দেখুন exp সেকেন্ডে আছে কিনা: মিলিসেকেন্ডে মান দেওয়া একটি প্রচলিত বাগ, যা মেয়াদকে হাজার হাজার বছর ভবিষ্যতে ঠেলে দেয়।

সচরাচর জিজ্ঞাসিত প্রশ্ন

প্রোডাকশনের JWT এখানে পেস্ট করা কি নিরাপদ?
ডিকোডিং পুরোপুরি আপনার ব্রাউজারে JavaScript দিয়ে হয়। টোকেন আপলোড, লগ বা সংরক্ষণ করা হয় না। তবুও যেকোনো ক্রেডেনশিয়ালের মতো লাইভ টোকেন সাবধানে ব্যবহার করুন, আর স্ক্রিনশট শেয়ার করার সময় মেয়াদোত্তীর্ণ বা টেস্ট টোকেন ব্যবহার করুন।
এই টুল কি JWT সিগনেচার যাচাই করে?
শুধু ডিকোড করলে করে না। শেয়ার্ড সিক্রেট দিয়ে চাইলে HS256, HS384 ও HS512 টোকেন যাচাই করতে পারেন; HMAC লোকালি Web Crypto API দিয়ে গণনা হয়। RS256 ও ES256 টোকেন আপনার সার্ভারে ইস্যুকারীর পাবলিক কী দিয়ে যাচাই করতে হবে।
আমার টোকেন মেয়াদোত্তীর্ণ দেখাচ্ছে কেন?
আপনার কম্পিউটারের ঘড়ির তুলনায় exp ক্লেইমটি অতীতে। নতুন টোকেন চান, অথবা refresh token দিয়ে রিফ্রেশ করুন। সময় ভুল মনে হলে ঘড়ির পার্থক্য বা মিলিসেকেন্ডে লেখা exp মান আছে কিনা দেখুন।
JWT, JWS ও JWE-এর পার্থক্য কী?
JWT হলো ক্লেইমের ফরম্যাট। JWS হলো তিন অংশের সাইন করা JWT, যা এই টুল ডিকোড করে। JWE হলো পাঁচ অংশের এনক্রিপ্টেড JWT; ডিক্রিপশন কী ছাড়া এর payload পড়া যায় না।
alg “none” কেন বিপজ্জনক?
সাইন না করা টোকেন যে কেউ জাল করতে পারে। সার্ভারকে অবশ্যই alg: none প্রত্যাখ্যান করতে হবে এবং শুধু প্রত্যাশিত নির্দিষ্ট অ্যালগরিদমই গ্রহণ করা উচিত।

সম্পর্কিত টুল