সরাসরি প্রধান সামগ্রীতে চলে যান

জেসন ওয়েব টোকেন (JWT) এর সহজ পাঠ

Introduction

আজকের আলোচনা হচ্ছে JSON Web Token বা সংক্ষেপে JWT নিয়ে। সহজ কথায় বলতে গেলে, যখন আমরা কোনো ওয়েবসাইটে লগইন করি, তখন সার্ভার কীভাবে বোঝে যে আমি সেই সঠিক ইউজার? এই কাজটি করার একটি আধুনিক এবং জনপ্রিয় উপায় হলো JWT। এটি মূলত একটি নিরাপদ মাধ্যম যার মাধ্যমে এক পক্ষ থেকে অন্য পক্ষে তথ্য পাঠানো হয়। বিশেষ করে মাইক্রোসার্ভিস (Microservices) আর্কিটেকচারে এটি ব্যাপক ব্যবহৃত হয় [00:00]।


১. জেন্ডার বা স্ট্যাটলেস প্রোটোকল কী?

রেফারেন্স: https://www.youtube.com/watch?v=MB9SgSYw0Gw&t=96s

আমাদের ইন্টারনেট চলে HTTP প্রোটোকলের ওপর ভিত্তি করে। এই HTTP হলো "Stateless", মানে এটি আগের কোনো কথা মনে রাখতে পারে না। ধরুন, আপনি ফেসবুকে একবার লগইন করলেন। এখন আপনি যদি আপনার প্রোফাইল পেজে যান, সার্ভার কিন্তু ভুলে গেছে যে আপনি একটু আগেই লগইন করেছিলেন। তাই প্রতিবার আপনাকে চেনানোর জন্য কোনো একটা মেকানিজম দরকার। আগে এই কাজটা Session ID দিয়ে করা হতো, কিন্তু বর্তমানে বড় বড় অ্যাপ্লিকেশনে JWT বেশি সুবিধাজনক [02:02]।


২. সেশন আইডি বনাম জেডব্লিউটি (JWT)

রেফারেন্স: https://www.youtube.com/watch?v=MB9SgSYw0Gw&t=480s

  • সেশন আইডি: এখানে সার্ভার একটি আইডি তৈরি করে নিজের কাছে জমা রাখে এবং ইউজারকে দেয়। ইউজার প্রতিবার সেই আইডি দেখালে সার্ভার তার ডাটাবেজ থেকে মিলিয়ে দেখে। এটা অনেকটা মেলায় ব্যাগ জমা রাখার টোকেনের মতো [05:08]।

  • JWT: এটি একটু আলাদা। এখানে সার্ভার কোনো তথ্য নিজের কাছে জমা রাখে না। বরং ইউজারের সব তথ্য (যেমন নাম বা আইডি) একটি বিশেষ টোকেনের ভেতরেই ঢুকিয়ে ইউজারকে দিয়ে দেয়। ইউজার যখন আবার আসে, তখন সে ওই টোকেনটা দেখায়। সার্ভার শুধু টোকেনটা চেক করে দেখে যে সেটা কেউ টেম্পার বা পরিবর্তন করেছে কি না [08:42]।


৩. JWT এর গঠন (Structure)

রেফারেন্স: https://www.youtube.com/watch?v=MB9SgSYw0Gw&t=621s

একটি JWT টোকেন দেখতে অনেকগুলো হিজিবিজি অক্ষরের মতো মনে হলেও এর তিনটি প্রধান অংশ থাকে, যা ডট (.) দিয়ে আলাদা করা হয় [10:21]:

  1. Header (হেডার): এখানে বলা থাকে টোকেনটি কোন অ্যালগরিদমে তৈরি।

  2. Payload (পেলোড): এখানে ইউজারের তথ্য (যেমন ইউজার আইডি, নাম) থাকে। মনে রাখবেন, এখানে গোপন পাসওয়ার্ড রাখা উচিত নয় কারণ এটি যে কেউ ডিকোড করতে পারে [13:53]।

  3. Signature (সিগনেচার): এটি সবচেয়ে গুরুত্বপূর্ণ। হেডার এবং পেলোডকে একটি গোপন 'Secret Key' দিয়ে এনক্রিপ্ট করে এটি বানানো হয়। যদি কেউ টোকেনের তথ্য সামান্য পরিবর্তন করে, তবে সিগনেচার আর মিলবে না [14:39]।


৪. কোডিং উদাহরণ (Conceptual Example)

ভিডিওতে সরাসরি কোডিং না দেখালেও, নোড জেএস (Node.js) এ কীভাবে একটি JWT তৈরি করা হয় তার একটি সহজ উদাহরণ নিচে দেওয়া হলো:

JavaScript

const jwt = require('jsonwebtoken');

// ১. ইউজারের তথ্য (Payload)
const user = {
    id: 123,
    username: 'sumit'
};

// ২. একটি সিক্রেট কি (Secret Key)
const secretKey = 'my-super-secret-key';

// ৩. টোকেন তৈরি করা (Sign)
const token = jwt.sign(user, secretKey, { expiresIn: '1h' });

console.log(token); 

ব্যাখ্যা:

  • এখানে user অবজেক্টটি হলো আমাদের পেলোড।

  • secretKey হলো সেই চাবি যা দিয়ে আমরা টোকেনটি লক করছি।

  • jwt.sign() ফাংশনটি এই সব কিছু মিলিয়ে একটি স্ট্রিং বা টোকেন তৈরি করে দিচ্ছে যা আমরা ইউজারকে পাঠিয়ে দেব।


৫. এনালাইসিস এবং আমার মতামত

কন্টেন্ট ক্রিয়েটর কী বোঝাতে চেয়েছেন? সুমিত ভাই এখানে মূলত বুঝিয়েছেন যে, মডার্ন ওয়েব অ্যাপ্লিকেশনে কেন আমরা সেশন ছেড়ে JWT এর দিকে ঝুঁকছি। বিশেষ করে যখন আমাদের অনেকগুলো সার্ভার থাকে (Microservices), তখন ডাটাবেজে সেশন চেক করা অনেক সময়সাপেক্ষ। JWT এই সমস্যা সমাধান করে কারণ এটি নিজেই নিজের পরিচয় বহন করে [18:14]।

বাস্তবতা এবং সীমাবদ্ধতা: JWT খুব সুবিধাজনক হলেও এর একটি বড় সমস্যা হলো—একবার টোকেন ইস্যু করলে সেটি সার্ভার থেকে সরাসরি ক্যান্সেল করা কঠিন (যদি না আপনি ব্ল্যাকলিস্টিং ব্যবহার করেন)। তাই টোকেনের মেয়াদ (Expiry time) সব সময় কম রাখা উচিত [17:26]।

বিকল্প ও পরামর্শ:

  • খুব সেনসিটিভ অ্যাপ্লিকেশনের জন্য সেশন এবং টোকেন দুটোর সংমিশ্রণ ব্যবহার করা যেতে পারে।

  • পেলোডে কখনো পাসওয়ার্ড বা ক্রেডিট কার্ডের মতো তথ্য রাখবেন না।

  • সিক্রেট কি (Secret Key) সব সময় অনেক বড় এবং জটিল রাখার চেষ্টা করবেন।

ট্যাক্সোনমি (শ্রেণিবিন্যাস):

  • Security: Authentication, Authorization.

  • Data Format: JSON.

  • Architecture: Stateless, Microservices.

সামগ্রিকভাবে, আপনি যদি একজন বিগিনার ডেভেলপার হন, তবে JWT শেখা আপনার জন্য বাধ্যতামূলক, কারণ বর্তমানে প্রায় সব আধুনিক এপিআই (API) এই পদ্ধতিতেই কাজ করে।

[

JSON Web Token - Bangla ( বাংলা ) Tutorial

Learn with Sumit - LWS - Bangladesh · 36K views

](http://www.youtube.com/watch?v=MB9SgSYw0Gw)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...