system-design-bangla

Session vs Token Authentication: একটা গল্প দিয়ে শুরু করি

ধরুন আপনি একটা ক্লাবে ঢুকলেন। দুইভাবে এন্ট্রি ভেরিফাই হতে পারে:

Session based Authentication

এক্ষেত্রে Authentication করার সময় session ইনফরমেশন/তথ্য ডাটাবেসে কিংবা Session Store এ রাখা হয়। কিভাবে কাজ করে?

মূল পয়েন্ট

যেহেতু Session কোনো স্থানে স্টোর করে রাখা হয় সেজন্য Session based Authentication কে Stateful বলা হয়।

Session Based Auth

Token based Authentication

এক্ষেত্রে Authentication করার সময় session ইনফরমেশন/তথ্য ডাটাবেসে কিংবা Session Store এ রাখা হয় না। কিভাবে কাজ করে?

মূল পয়েন্ট

Token Based Auth

যেহেতু Session কোনো স্থানে স্টোর করে রাখা হয় না সেজন্য Token based Authentication কে Stateless বলা হয়।

Session vs Token-based Authentication পার্থক্য

Session vs Token-based Authentication পার্থক্য

বিষয় Session-based (সেশন-ভিত্তিক) Token-based (JWT + Refresh) (টোকেন-ভিত্তিক)
Scalability (স্কেলেবিলিটি) শেয়ার্ড স্টোর (Redis) প্রয়োজন চমৎকার (Stateless)
Revocation (রিভোকেশন) সহজ (সেশন ডিলিট করলেই হয়) কঠিন (Short TTL + Blacklist)
Latency (লেটেন্সি) প্রতি রিকোয়েস্টে অতিরিক্ত DB/Cache লুকআপ কোনো লুকআপ লাগে না (শুধু Signature চেক)
Best For (কোন ক্ষেত্রে ভালো) Monolith, Server-rendered অ্যাপ API, SPA, Microservices, Mobile অ্যাপ
Security Control সার্ভার-সাইডে শক্তিশালী নিয়ন্ত্রণ ইমপ্লিমেন্টেশনের উপর নির্ভর করে

নতুন প্রজেক্টের জন্য → Token-based (JWT + Refresh Token + HttpOnly Cookie) ব্যবহার করা যায়।

তবে সবসময় নিচের বিষয়গুলো মাথায় রাখবেন:

এবার আসল প্রশ্ন: Authentication-এর পরে কী হয়?

উপরের পুরো আলোচনাটা ছিল Authentication নিয়ে — “আপনি কে, সেটা প্রমাণ করুন।” কিন্তু session/token যাচাই হয়ে যাওয়ার পরে একটা দ্বিতীয় ধাপ আছে, যেটা Authorization:

Authentication = আপনি কে? Authorization = আপনি কী করতে পারবেন?

ক্লাবের উদাহরণে ফিরি — গার্ড আপনার ব্রেসলেট/নাম্বার চেক করে নিশ্চিত হলো আপনি ভেতরে ঢুকতে পারবেন (Authentication)। কিন্তু VIP লাউঞ্জে ঢুকতে পারবেন কিনা, সেটা আরেকটা আলাদা চেক — হয়তো ব্রেসলেটের রং আলাদা, বা একটা আলাদা স্ট্যাম্প লাগবে (Authorization)। দুটো সম্পূর্ণ আলাদা কনসার্ন, কিন্তু একটা ছাড়া আরেকটার কোনো মানে নেই।

Authorization কীভাবে কাজ করে

ইউজার ভেরিফাই হওয়ার পরে, প্রতিটা protected রিকোয়েস্টে সার্ভারকে একটা অতিরিক্ত প্রশ্নের উত্তর দিতে হয়: এই ইউজারের কি এই নির্দিষ্ট resource-এ এই নির্দিষ্ট action করার permission আছে?

এই permission ডেটা কোথা থেকে আসে, সেটা নির্ভর করে আপনি session-based না token-based ব্যবহার করছেন তার উপর: