Introduction
আজকের ডিজিটাল যুগে আমরা যখনই কোনো ওয়েবসাইট বা অ্যাপে লগইন করি, ব্যাকগ্রাউন্ডে সিকিউরিটির অনেক কাজ চলে। আগেকার দিনে সার্ভার মনে রাখত কে লগইন করেছে, কিন্তু এখনকার মডার্ন অ্যাপ্লিকেশনে JWT (JSON Web Token) বা সহজ কথায় "Jot" অনেক বেশি জনপ্রিয়। এই ভিডিওতে সহজ কিছু উদাহরণের মাধ্যমে বোঝানো হয়েছে কেন আমাদের সেশন আইডি (Session ID) বাদ দিয়ে JWT-র দিকে যাওয়া উচিত এবং এটি আসলে কীভাবে কাজ করে।
১. সেশন (Session) ভিত্তিক অথেন্টিকেশন এবং এর সমস্যা
রেফারেন্স: [01:32]
আগে যখন আপনি কোনো ওয়েবসাইটে ইউজারনেম ও পাসওয়ার্ড দিয়ে লগইন করতেন, সার্ভার আপনার জন্য একটি Session ID তৈরি করত। এই আইডিটি সার্ভারের মেমোরিতে জমা থাকত। আপনি যখনই নতুন কোনো রিকোয়েস্ট পাঠাতেন, সার্ভার সেই আইডি দেখে বুঝত যে আপনিই সেই ব্যক্তি।
সহজ উদাহরণ (Coffee Shop Scenario): ভিডিওতে একটি দারুণ উদাহরণ দেওয়া হয়েছে। ধরুন আপনি একটি কফি শপে প্রতিদিন কফি খান। আপনি ৫০ ডলার অগ্রিম দিয়ে দিলেন এবং দোকানদার (Bob) আপনার চেহারা দেখে বা খাতায় লিখে রাখল যে আপনি টাকা দিয়েছেন। কিন্তু যদি দোকানদার বদলে যায় বা আপনি অন্য কোনো শহরের সেই একই চেইন শপে যান, তারা আপনাকে চিনবে না। কারণ আপনার তথ্যের খাতাটি (Database) শুধুমাত্র আগের দোকানেই ছিল।
সেশন ভিত্তিক সমস্যার সহজ ব্যাখ্যা:
-
Scalability (স্কেলেবিলিটি): যদি আপনার অ্যাপ্লিকেশন অনেক বড় হয় এবং অনেকগুলো সার্ভার থাকে, তবে সব সার্ভারকে জানাতে হবে যে ইউজার লগইন করেছে। এটি মেইনটেইন করা বেশ কঠিন এবং খরচসাপেক্ষ।
-
Sticky Sessions: ইউজারকে সবসময় একই সার্ভারে রিকোয়েস্ট পাঠাতে হয়, যা সিস্টেমকে স্লো করে দিতে পারে।
২. JWT বা টোকেন ভিত্তিক অথেন্টিকেশন কী?
রেফারেন্স: [09:22]
এই সমস্যার সমাধান হলো Token। কফি শপের উদাহরণে ফিরে যাই—এখন দোকানদার আপনাকে কোনো খাতায় লিখে না রেখে একটি কার্ড বা পাস দিল। এই কার্ডে আপনার নাম, কার্ড দেওয়ার তারিখ এবং মেয়াদ শেষ হওয়ার তারিখ লেখা আছে। সাথে আছে দোকানদারের একটি Secret Seal বা স্বাক্ষর (Signature)।
এখন আপনি পৃথিবীর যে প্রান্তেই সেই কফি শপে যান না কেন, কার্ডটি দেখালেই তারা বুঝবে এটি আসল। কারণ তাদের কাছে সেই সীল বা স্বাক্ষরটি চেনার উপায় আছে। এটাই হলো JWT।
সহজ ভাষায়: JWT হলো একটি ছোট প্যাকেজ যা ইন্টারনেটের মাধ্যমে এক জায়গা থেকে অন্য জায়গায় নিরাপদে তথ্য আদান-প্রদান করতে পারে।
৩. JWT-এর গঠন (Structure of JWT)
রেফারেন্স: [10:48]
একটি JWT দেখতে অদ্ভুত কোড মনে হলেও এর তিনটি প্রধান অংশ থাকে:
-
Header: এখানে বলা থাকে টোকেনটি কোন টাইপের এবং কোন অ্যালগরিদম (যেমন: HS256) ব্যবহার করে এটি তৈরি করা হয়েছে।
-
Payload: এখানে ইউজারের তথ্য থাকে। যেমন—ইউজার আইডি, নাম, বা টোকেনটি কখন এক্সপায়ার হবে। এগুলোকে বলা হয় Claims।
-
Signature: এটি সবচেয়ে গুরুত্বপূর্ণ অংশ। হেডার এবং পেলোডকে একটি সিক্রেট কি (Secret Key) দিয়ে এনক্রিপ্ট করে এটি তৈরি করা হয়। কেউ যদি টোকেনের তথ্য পরিবর্তন করার চেষ্টা করে, তবে সিগনেচার আর মিলবে না।
কঠিন শব্দের সহজ ব্যাখ্যা:
-
Payload: মূলত যে ডেটা বা তথ্য আমরা পাঠাতে চাই।
-
Algorithm: একটি গাণিতিক নিয়ম যা ডেটাকে সুরক্ষিত বা ছোট করতে ব্যবহার করা হয়।
৪. কেন JWT সেরা?
রেফারেন্স: [12:57]
-
Stateless: সার্ভারকে ইউজারের কোনো তথ্য মেমোরিতে ধরে রাখতে হয় না। টোকেন নিজেই সব তথ্য বহন করে।
-
Mobile Friendly: মোবাইল অ্যাপের ক্ষেত্রে এটি সেশনের চেয়ে অনেক বেশি কার্যকর।
-
Accountability: এটি প্রমাণ করে যে তথ্যটি সঠিক জায়গা থেকেই এসেছে এবং মাঝপথে কেউ তা পরিবর্তন করেনি।
এনালাইসিস ও আমার চিন্তাভাবনা
ভিডিওর মূল উদ্দেশ্য: কনটেন্ট ক্রিয়েটর এখানে বোঝাতে চেয়েছেন যে, বর্তমানের ডিস্ট্রিবিউটেড সিস্টেমে (যেখানে অনেকগুলো সার্ভার একসাথে কাজ করে) সেশন ম্যানেজমেন্ট অনেক জটিল। JWT এই জটিলতা কমিয়ে নিরাপত্তা নিশ্চিত করে।
বাস্তব প্রেক্ষাপট ও আমার বিশ্লেষণ: JWT দারুণ হলেও এর কিছু সীমাবদ্ধতা আছে। যেমন—একবার টোকেন ইস্যু করলে সেটি ম্যানুয়ালি ডিলিট বা 'Logout' করা কঠিন (যদি না আপনি ব্ল্যাকলিস্টিং ব্যবহার করেন)।
বিকল্প ও পরামর্শ: ১. Security: JWT সাধারণত 'Base64' এনকোডেড থাকে, অর্থাৎ যে কেউ চাইলে এটি ডিকোড করে ভেতরের তথ্য দেখতে পারে। তাই পেলোডে কখনো গোপন পাসওয়ার্ড বা ক্রেডিট কার্ড নম্বর রাখবেন না। ২. HTTPS: সবসময় HTTPS ব্যবহার করুন যাতে মাঝপথে কেউ টোকেনটি চুরি করতে না পারে। ৩. Refresh Tokens: দীর্ঘ সময়ের জন্য সিকিউরিটি নিশ্চিত করতে 'Access Token' এর পাশাপাশি 'Refresh Token' ব্যবহার করা একটি ভালো প্র্যাকটিস।
সারকথা: আপনি যদি এমন কোনো অ্যাপ্লিকেশন বানান যেখানে স্কেলেবিলিটি এবং পারফরম্যান্স জরুরি, তবে JWT ই আপনার প্রথম পছন্দ হওয়া উচিত।
ভিডিও লিঙ্ক: https://youtu.be/CELcrLHQmZs
[
#35 What is JWT and Why
Telusko · 115K views
](http://www.youtube.com/watch?v=CELcrLHQmZs)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d