JWT ডিকোডার কী?
একটি JWT (JSON Web Token) হলো আধুনিক ওয়েব API-গুলোতে প্রমাণীকরণ ও অনুমোদন ক্লেইম উপস্থাপনের প্রমিত পদ্ধতি। এটি একটি সংক্ষিপ্ত, স্বয়ংসম্পূর্ণ টোকেন যা তিনটি অংশ নিয়ে গঠিত — সাইনিং অ্যালগরিদম বর্ণনাকারী একটি হেডার, প্রকৃত ক্লেইম (যেমন ব্যবহারকারীর আইডি, ভূমিকা এবং মেয়াদ শেষের সময়) বহনকারী একটি পে-লোড এবং একটি সিগনেচার যা প্রাপক সার্ভারকে টোকেনটি পরিবর্তন করা হয়নি তা যাচাই করতে দেয়।
এই ডিকোডার হেডার ও পে-লোড তাৎক্ষণিকভাবে পড়ে যাতে আপনি প্রমাণীকরণ সমস্যা ডিবাগ করতে পারেন, কোনো API প্রকৃতপক্ষে কী ক্লেইম পাঠাচ্ছে তা পরীক্ষা করতে পারেন অথবা টোকেনের মেয়াদ কখন শেষ হচ্ছে দেখতে পারেন — সবকিছু আপনার ব্রাউজারে স্থানীয়ভাবে চলে, কোনো ব্যাকএন্ড, কমান্ড-লাইন টুল বা তৃতীয় পক্ষের সার্ভারে সংবেদনশীল টোকেন পেস্ট করার প্রয়োজন হয় না।
এই ক্যালকুলেটর কখন ব্যবহার করবেন
- একটি API কেন টোকেন প্রত্যাখ্যান করছে তা এর claims এবং মেয়াদ উত্তীর্ণের সময় পরীক্ষা করে ডিবাগ করা
- সাপোর্ট তদন্ত বা ঘটনা প্রতিক্রিয়ার সময় টোকেনের মেয়াদ উত্তীর্ণের সময় পরীক্ষা করা
- যাচাই করা যে একটি SSO বা OAuth প্রদানকারী আপনার অ্যাপ্লিকেশন যে ক্লেইমগুলো প্রত্যাশা করে সেগুলোই ইস্যু করছে।
- ইন্টারভিউ প্রস্তুতি বা নিরাপত্তা কোর্সওয়ার্কের জন্য JWT কীভাবে গঠিত হয় তা শেখা
- ব্রাউজার ডেভ টুলস বা সার্ভার লগ থেকে ধরা একটি টোকেনের বিষয়বস্তু বুঝতে পরীক্ষা করা
- অ্যালগরিদম-অমিল সনাক্তকরণ ব্যর্থতা ডিবাগ করতে টোকেনগুলোর মধ্যে হেডার অ্যালগরিদম তুলনা করা
ধাপসমূহ:
- আপনার JWT ইনপুট বাক্সে পেস্ট করুন, অথবা একটি চেষ্টা করতে "নমুনা লোড করুন"-এ ক্লিক করুন।
- আপনি টাইপ করার সাথে সাথে হেডার ও পেলোড স্বয়ংক্রিয়ভাবে ডিকোড হয়ে যায়।
- সহজবোধ্য আকারে iss, sub, exp এবং iat-এর মতো claims পর্যালোচনা করুন।
- টাইমস্ট্যাম্প claims (exp, iat, nbf) স্বয়ংক্রিয়ভাবে পাঠযোগ্য তারিখে রূপান্তরিত হয়।
সূত্র
JWT = base64Url(header) + "." + base64Url(payload) + "." + base64Url(signature)
ডিকোডিং: "." দিয়ে বিভক্ত করুন, প্রথম দুটি অংশ base64Url-ডিকোড করুন, JSON হিসেবে পার্স করুন।
যাচাইকরণ (এখানে করা হয় না): HMACSHA256(base64Url(header) + "." + base64Url(payload), secret) === signature
ব্যবহারের ক্ষেত্র
- একটি API কেন টোকেন প্রত্যাখ্যান করছে তা এর claims পরীক্ষা করে ডিবাগ করা
- সাপোর্ট তদন্তের সময় টোকেনের মেয়াদ উত্তীর্ণের সময় পরীক্ষা করা
- SSO বা OAuth প্রদানকারী আপনার প্রত্যাশিত claims ইস্যু করছে কিনা তা যাচাই করা
- ইন্টারভিউ প্রস্তুতি বা কোর্সওয়ার্কের জন্য JWT কীভাবে গঠিত হয় তা শেখা
- ব্রাউজার ডেভ টুলস বা সার্ভার লগ থেকে পেস্ট করা টোকেন দ্রুত পরীক্ষা করা
প্রধান সুবিধাসমূহ
- কোনো ব্যাকএন্ড বা কমান্ড-লাইন টুল ছাড়াই তাৎক্ষণিকভাবে যেকোনো JWT ডিকোড করুন
- সবকিছু ক্লায়েন্ট-সাইডে চলে — টোকেন কখনো সার্ভারে পাঠানো হয় না
- টাইমস্ট্যাম্প claims স্বয়ংক্রিয়ভাবে পাঠযোগ্য তারিখে রূপান্তরিত হয়
- বিনামূল্যে, সাইন-আপের প্রয়োজন নেই, যেকোনো অ্যালগরিদমের JWT-তে কাজ করে
প্রো টিপস
- "unauthorized" ত্রুটি ডিবাগ করার সময় প্রথমে সবসময় 'exp' পরীক্ষা করুন — মেয়াদ উত্তীর্ণ টোকেন সবচেয়ে সাধারণ কারণ
- অ্যালগরিদম-অমিল বাগ ধরতে হেডারের 'alg' আপনার ব্যাকএন্ড কী প্রত্যাশা করে তার সাথে ক্রস-রেফারেন্স করুন
- সার্ভার-সাইডে স্বাক্ষর যাচাই না করে ডিকোড করা পেলোডকে কখনো পরিচয়ের প্রমাণ হিসেবে বিশ্বাস করবেন না
- একটি টোকেন ফাঁস হলে ঝুঁকি সীমিত করতে দীর্ঘমেয়াদী JWT-এর পরিবর্তে রিফ্রেশ টোকেনসহ স্বল্পমেয়াদী টোকেন ব্যবহার করুন
এড়ানোর সাধারণ ভুলসমূহ
- একটি ডিকোড করা JWT-কে যাচাইকৃত JWT বলে ধরে নেওয়া — ডিকোডিং শুধু বিষয়বস্তু পড়ে, সত্যতা নিশ্চিত করে না
- পেলোডে সংবেদনশীল ডেটা (পাসওয়ার্ড, সিক্রেট) সংরক্ষণ করা, ভুলে যাওয়া যে এটি যে কেউ পড়তে পারে
- অবিশ্বস্ত অনলাইন ডিকোডারে প্রোডাকশন টোকেন পেস্ট করা
- টোকেনের মেয়াদ সংক্রান্ত সমস্যা ডিবাগ করার সময় 'exp' (মেয়াদ উত্তীর্ণ) এবং 'iat' (ইস্যুর সময়) গুলিয়ে ফেলা
মূল শব্দ ব্যাখ্যা
- Claim: একটি সাবজেক্ট সম্পর্কে দাবি করা তথ্যের একটি অংশ, যেমন একটি ইউজার আইডি বা রোল
- হেডার (Header): প্রথম JWT সেগমেন্ট, যা স্বাক্ষর অ্যালগরিদম ও টোকেনের ধরন নির্দিষ্ট করে
- পেলোড (Payload): দ্বিতীয় JWT সেগমেন্ট, যাতে প্রকৃত claims থাকে
- স্বাক্ষর (Signature): তৃতীয় JWT সেগমেন্ট, যা টোকেন পরিবর্তিত হয়নি তা যাচাই করতে ব্যবহৃত হয়
সম্পর্কিত ধারণা
- হ্যাশ জেনারেটর:
- UUID জেনারেটর:
- Base64 এনকোডার/ডিকোডার:
- JSON ফরম্যাটার:
- পাসওয়ার্ড শক্তি পরীক্ষক:
উদাহরণ
eyJhbGciOiJIUzI1NiJ9 দিয়ে শুরু হওয়া একটি টোকেন ডিকোড হয়ে {"alg":"HS256","typ":"JWT"} হেডার তৈরি করে — যা বোঝায় টোকেনটি HMAC-SHA256 দিয়ে স্বাক্ষরিত।
আপনার ফলাফলের ব্যাখ্যা
ডিকোডারটি JWT-কে দুটি ডট বিভাজকে বিভক্ত করে এবং প্রথম দুটি অংশ Base64URL-এ ডিকোড করে। হেডার আপনাকে সাইনিং অ্যালগরিদম (যেমন HS256 বা RS256) এবং টোকেনের ধরন জানায়। পেলোডে প্রকৃত ক্লেইম থাকে — ব্যবহারকারীর পরিচয়, অনুমতি এবং টাইমস্ট্যাম্প।
টাইমস্ট্যাম্প ক্লেইম (exp, iat, nbf) স্বয়ংক্রিয়ভাবে ইউনিক্স এপোক থেকে পাঠযোগ্য তারিখে রূপান্তরিত হয়। যদি 'exp' অতীতের তারিখ দেখায়, তবে টোকেনটি মেয়াদোত্তীর্ণ এবং বেশিরভাগ সার্ভার এটি প্রত্যাখ্যান করবে। 'sub' (বিষয়) ক্লেইমে সাধারণত ব্যবহারকারীর আইডি থাকে এবং 'iss' (ইস্যুয়ার) টোকেনটি তৈরি করা সার্ভারটি চিহ্নিত করে।
মনে রাখবেন ডিকোডিং যাচাইকরণ নয়। স্বাক্ষর বিভাগটি প্রদর্শিত হয় তবে গোপন বা পাবলিক কী ছাড়া এটি যাচাই করা যায় না। ডিকোড করা পেলোড শুধুমাত্র তথ্যের জন্য — সার্ভার-পার্শ্বে স্বাক্ষর যাচাই ছাড়া এটি কখনও পরিচয়ের প্রমাণ হিসেবে বিশ্বাস করবেন না।

