JWT ডিবাগার JSON Web Token ডিকোড ও ইন্সপেক্ট করে — header, payload ও signature পার্স করে, claims প্রদর্শন করে এবং expiry স্ট্যাটাস ফ্ল্যাগ করে। আলাদা ডিকোডার চালানো বা jwt.io-তে না গিয়ে অথেন্টিকেশন সমস্যা ডিবাগ করা, OAuth/OIDC টোকেন ইন্সপেক্ট করা এবং JWT কন্টেন্ট যাচাই করার জন্য নিখুঁত।
JWT (JSON Web Token) হলো আধুনিক API জুড়ে অথ টোকেনের জন্য প্রধান ফরম্যাট — OAuth, OIDC, সেশন টোকেন, এবং কাস্টম API অথ। কিন্তু একটি JWT দেখতে অর্থহীন মনে হয়: বিন্দু দিয়ে জোড়া লাগানো তিনটি Base64URL-এনকোড করা স্ট্রিং। JWT Debugger সেই স্ট্রিংটিকে তার তিনটি অংশে পার্স করে — header, payload, এবং signature — প্রতিটি ডিকোড করে এবং JSON কনটেন্ট সিনট্যাক্স হাইলাইটিংসহ প্রদর্শন করে।
পেলোডটি পরিচিত claim-গুলোর জন্য পার্স করা হয়: iss (issuer), sub (subject), exp (expiry), iat (issued at), nbf (not before), aud (audience), jti (token ID)। Expiry Unix টাইমস্ট্যাম্প থেকে মানুষের পড়ার উপযোগী ফরম্যাটে রূপান্তর করা হয় এবং valid, expired, বা not yet valid হিসেবে ফ্ল্যাগ করা হয়। টুলটি signature ভেরিফাই করে না — তার জন্য secret key প্রয়োজন এবং তা একটি ক্লায়েন্ট-সাইড টুলের সুযোগের বাইরে — কিন্তু এটি ঠিক দেখায় একটি টোকেনে কী আছে, যাতে আপনি দ্রুত অথ সমস্যার সমাধান করতে পারেন।
হেডারের algorithm ফিল্ড (alg) স্পষ্টভাবে হাইলাইট করা হয়, যার মধ্যে একটি টোকেন যদি "none" অ্যালগরিদম ব্যবহার করে তার সতর্কতাও থাকে — এটি একটি সুপরিচিত JWT দুর্বলতা, যেখানে সার্ভার যদি স্বাক্ষরবিহীন টোকেন প্রত্যাখ্যান না করে তাহলে signature ভেরিফিকেশন সম্পূর্ণভাবে এড়িয়ে যাওয়া সম্ভব। HMAC-ভিত্তিক অ্যালগরিদম (HS256, HS384, HS512) এবং RSA/ECDSA-ভিত্তিক অ্যালগরিদম (RS256, ES256) উভয়ই শনাক্ত ও লেবেল করা হয়, ফলে আপনি সঙ্গে সঙ্গে জানতে পারেন কোনো API shared-secret নাকি public-key সাইনিং স্কিম ব্যবহার করছে। কাস্টম, নন-স্ট্যান্ডার্ড claim-গুলোও সম্পূর্ণভাবে দেখানো হয়, কারণ বাস্তব-জগতের বেশিরভাগ টোকেনে role বা tenant ID-এর মতো অ্যাপ্লিকেশন-নির্দিষ্ট ডেটা থাকে।
JWT-কে ডট দিয়ে বিভক্ত করে এবং প্রতিটি সেগমেন্ট Base64URL-ডিকোড করে: header, payload এবং signature। প্রতিটি সিনট্যাক্স হাইলাইটিং সহ আলাদাভাবে দেখানো হয়।
অ্যালগরিদম (HS256, RS256, ES256) এবং টোকেন টাইপ প্রদর্শন করে। কোনো সার্ভিস কোন সাইনিং স্কিম ব্যবহার করছে তা দ্রুত যাচাই করুন।
JSON payload পার্স করে রঙ-কোডেড keys, strings, numbers ও booleans সহ রেন্ডার করে। এক নজরেই সব claims দেখা যায়।
exp (expiry), iat (issued at), এবং nbf (not before) টাইমস্ট্যাম্প চেক করে। টোকেনটি valid, expired, নাকি not yet active তা মানুষের পড়ার উপযোগী সময় সহ ফ্ল্যাগ করে।
নিবন্ধিত claims (iss, sub, aud, exp, iat, nbf, jti) শনাক্ত করে এবং তাদের অর্থ সম্পর্কে দ্রুত-রেফারেন্স নোট দেয়।
কাঁচা টোকেনটি প্রতিটি সেগমেন্টের জন্য আলাদা রঙে দেখানো হয়, যাতে আপনি header, payload ও signature ভিজ্যুয়ালি আলাদা করতে পারেন।
যখন একটি API 401 Unauthorized রিটার্ন করে, টোকেনটি এক্সপায়ার্ড, ত্রুটিপূর্ণ, নাকি ভুল issuer থেকে ইস্যু করা হয়েছে কিনা চেক করতে পেস্ট করুন।
OAuth/OIDC ফ্লো থেকে ফেরত পাওয়া access token ও ID token ডিকোড করে অনুমোদিত scope, ইউজার আইডেন্টিটি ও expiry দেখুন।
ব্যাকএন্ড টোকেনটি গ্রহণ করবে ধরে নেওয়ার আগে নিশ্চিত করুন প্রয়োজনীয় claims (roles, permissions, tenant ID) টোকেনে উপস্থিত আছে।
যখন একটি ব্যাকএন্ড সার্ভিস দ্বারা টোকেন তৈরি হয়, payload সার্ভিসের ইচ্ছার সাথে মিলছে কিনা যাচাই করতে ডিকোড করুন।
সিকিউরিটি রিভিউয়ের সময়, localStorage বা কুকিতে সংরক্ষিত টোকেন ডিকোড করে ক্লায়েন্ট-সাইডে কোন সংবেদনশীল ডেটা উন্মুক্ত হচ্ছে তা মূল্যায়ন করুন।
DevSuite Pro ডকে JWT আইকনে ক্লিক করুন। একটি টোকেন ইনপুট ফিল্ড এবং তিনটি ডিকোড করা প্যান সহ একটি প্যানেল খুলবে।
যেকোনো JWT পেস্ট করুন — একটি API রেসপন্স, Authorization header, কুকি, বা localStorage থেকে। "Bearer " প্রিফিক্স সহ বা ছাড়া উভয়ই কাজ করে।
Header প্যানে অ্যালগরিদম ও টাইপ দেখা যায়। নিশ্চিত করুন এটি আপনার ব্যাকএন্ডের প্রত্যাশিত স্কিম ব্যবহার করছে (প্রায়ই HS256 বা RS256)।
Payload প্যানে সিনট্যাক্স হাইলাইটিং সহ সব claims দেখা যায়। স্ট্যান্ডার্ড claims (iss, sub, exp) তাদের উদ্দেশ্য সহ ফ্ল্যাগ করা থাকে।
স্ট্যাটাস ব্যাজে Valid, Expired, বা Not Yet Valid দেখা যায়। যদি Expired হয়, তাহলে সম্ভবত এই কারণেই আপনার অথ ব্যর্থ হচ্ছে।
বিনামূল্যে DevSuite Pro ইনস্টল করুন এবং আপনার ব্রাউজারের জন্য ৬৪+ ডেভলপার টুল আনলক করুন।