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

জেসন ওয়েব টোকেন (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) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

জাভা ফিডব্যাক এবং স্ট্রাকচার্ড কনকারেন্সি: বিবর্তনের গল্প

Introduction এই ভিডিওর নির্দিষ্ট অংশে জাভা ল্যাঙ্গুয়েজ আর্কিটেক্ট ব্রায়ান গোয়েটজ (Brian Goetz) আলোচনা করেছেন কীভাবে জাভার নতুন ফিচারগুলো তৈরি হয় এবং এতে সাধারণ ডেভেলপারদের মতামতের গুরুত্ব কতটুকু। বিশেষ করে Structured Concurrency -এর মতো জটিল ফিচারগুলো কেন বারবার 'Preview' অবস্থায় থাকে এবং কীভাবে কমিউনিটির ফিডব্যাক সেই ফিচারগুলোকে আরও নিখুঁত করতে সাহায্য করে, তা এখানে সহজভাবে বোঝানো হয়েছে। ১. ভালো ফিডব্যাক আসলে কী? ভিডিও রেফারেন্স: [ 34:53 ] ব্রায়ান গোয়েটজ বলছেন যে, জাভা টিম যখন কোনো নতুন ফিচারের খসড়া (Draft) বা প্রস্তাব (JEP) প্রকাশ করে, তখন তারা এমন কিছু জানতে চায় যা তারা নিজেরা আগে ভাবেনি। বিস্তারিত: একজন ডেভেলপার হিসেবে আমরা যখন কোনো নতুন ফিচার দেখি, আমাদের প্রথম প্রতিক্রিয়া হয় সেটার Syntax বা লেখার ধরন নিয়ে। কিন্তু ব্রায়ানের মতে, "এই লেখাটা কেন এমন হলো?" বা "এটা কোটলিন বা স্কালা-র মতো কেন নয়?"—এই ধরনের ফিডব্যাক খুব একটা কাজে আসে না। আসল দামী ফিডব্যাক হলো সেইটা, যা নতুন কোনো বাস্তব সমস্যা (Edge Case) তুলে ধরে। আমার চিন্তা: আপনি যদি কেবল দ...

[Master Post] Machine Learning for Everybody – Full Course

URL: https://youtu.be/i_LwzRVP7bg?t=0 Title: Machine Learning for Everybody – Full Course Topics:- মেশিন লার্নিংয়ের হাতেখড়ি এবং গুগল কোল্যাব সেটআপ মেশিন লার্নিংয়ের খুঁটিনাটি ও ফিচারের সহজ পাঠ Classification বনাম Regression এবং মডেল ট্রেনিংয়ের সহজ পাঠ মেশিন লার্নিংয়ের জন্য ডেটা তৈরি এবং প্রসেসিং করার সহজ গাইড K-Nearest Neighbors (KNN) থিওরির সহজ পাঠ কে-নিয়ারেস্ট নেইবারস (KNN) ইমপ্লিমেন্টেশন সহজ বাংলায় নেইভ বেইজ থিওরি এবং এর প্রয়োগ: সহজ পাঠ লজিস্টিক রিগ্রেশন: থিওরি ও ইমপ্লিমেন্টেশন SVM থিওরি এবং ইমপ্লিমেন্টেশন সহজ পাঠ নিউরাল নেটওয়ার্ক এবং টেনসরফ্লোর সহজ পাঠ টেনসরফ্লো দিয়ে নিউরাল নেটওয়ার্ক ক্লাসিফিকেশন শেখার সহজ গাইড লিনিয়ার রিগ্রেশন: সহজ কথায় মূল ধারণা ও গণিত লিনিয়ার রিগ্রেশন: সহজ ভাষায় খুঁটিনাটি ও হাতে-কলমে শেখা লিনিয়ার রিগ্রেশন এবং নিউরন মডেলের সহজ পাঠ TensorFlow দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ১ টেনসরফ্লো দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ২ আনসুপারভাইজড লার্নিং: কে-মিনস ক্লাস্টারিংয়ের সহজ পাঠ Principal C...