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

JWT কী এবং কেন এটি ব্যবহার করা হয় তার সহজ গাইড

ইন্টারনেটে যখন আমরা কোনো ওয়েবসাইট বা অ্যাপ ব্যবহার করি, তখন আমাদের নিরাপত্তার জন্য 'লগইন' করতে হয়। কিন্তু একবার লগইন করার পর সার্ভার কীভাবে মনে রাখে যে আপনিই সেই ব্যক্তি? এই কাজটি করার জন্য আধুনিক সময়ে JWT (JSON Web Token) খুবই জনপ্রিয়। সহজ কথায়, এটি একটি ডিজিটাল পরিচয়পত্র যা আপনার হয়ে সার্ভারের কাছে প্রমাণ দেয় যে আপনি একজন বৈধ ব্যবহারকারী।


১. সেশন (Session) বনাম JWT এর প্রয়োজনীয়তা

রেফারেন্স: [01:32]

আগেকার দিনে যখন আমরা লগইন করতাম, সার্ভার একটি Session ID তৈরি করত। এটা অনেকটা একটা খাতার মতো, যেখানে লেখা থাকত যে "১ নম্বর ইউজার লগইন করেছে"।

সমস্যা: ধরুন, একটি বড় কোম্পানির অনেকগুলো শাখা বা সার্ভার আছে (যেমন- ঢাকা, চট্টগ্রাম, সিলেট)। আপনি ঢাকা থেকে লগইন করলেন, কিন্তু চট্টগ্রাম সার্ভার আপনাকে চিনতে পারবে না কারণ ওই খাতাটা তো শুধু ঢাকাতেই আছে! সব সার্ভারের জন্য একটা কমন খাতা (Database) রাখা যায়, কিন্তু সেটা সিস্টেমকে ধীরগতি করে দেয়।

সমাধান (JWT): এই সমস্যা মেটাতেই JWT-এর জন্ম। এটি কোনো খাতার ওপর নির্ভর করে না, বরং ইউজারকে একটি ডিজিটাল কার্ড দিয়ে দেয় যা যেকোনো সার্ভার দেখলেই চিনতে পারে।


২. একটি কফি শপের গল্পের মাধ্যমে JWT বোঝা

রেফারেন্স: [04:44]

ভিডিওতে একটি দারুণ উদাহরণের মাধ্যমে এটি বোঝানো হয়েছে:

  • পরিস্থিতি: নবীন নামের একজন ব্যক্তি একটি কফি শপে ৫০ ডলার দিয়ে এক মাসের পাস কিনলেন।

  • পুরানো পদ্ধতি (Session): কফি শপের ম্যানেজার বব তার খাতায় লিখে রাখলেন নবীনের নাম। পরদিন বব না থেকে যদি রোহিত আসে, সে তো নবীনকে চিনবে না কারণ সে খাতা দেখেনি।

  • নতুন পদ্ধতি (JWT/Token): ম্যানেজার বব নবীনকে একটি আইডি কার্ড দিলেন যেখানে লেখা আছে: "নাম: নবীন, মেয়াদ: ৩০ দিন" এবং নিচে ম্যানেজারের একটি অফিসিয়াল স্ট্যাম্প (Signature) আছে।

এখন নবীন যেকোনো শাখায় যাক বা যে ম্যানেজারই থাকুক, কার্ডের স্ট্যাম্প দেখে সবাই বুঝতে পারবে এটা আসল। এটাই হলো Token-based Authentication

সহজ ব্যাখ্যা: > * Credentials (ক্রিডেনশিয়ালস): আপনার ইউজারনেম এবং পাসওয়ার্ড।

  • Token (টোকেন): লগইন করার পর সার্ভার থেকে পাওয়া সেই ডিজিটাল আইডি কার্ড।

৩. JWT আসলে কী দিয়ে তৈরি? (Structure)

রেফারেন্স: [09:42]

JWT দেখতে অনেকটা হিজিবিজি কোডের মতো মনে হলেও এর তিনটি প্রধান অংশ থাকে:

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

  2. Payload (পেলোড): এখানে আপনার তথ্য থাকে (যেমন: ইউজার আইডি, নাম, টোকেন কবে শেষ হবে)।

  3. Signature (সিগনেচার): এটি সবচেয়ে গুরুত্বপূর্ণ। সার্ভার তার নিজস্ব একটি গোপন কোড (Secret Key) দিয়ে এটি তৈরি করে। যদি কেউ টোকেনের তথ্য পরিবর্তন করার চেষ্টা করে, তবে সিগনেচারটি আর মিলবে না।

সহজ ব্যাখ্যা: > * Payload (পেলোড): ট্রাকের ভেতরে যেমন মালপত্র থাকে, তেমনি টোকেনের ভেতর যে তথ্য থাকে তাকে পেলোড বলে।

  • Algorithm (অ্যালগরিদম): তথ্যগুলো লক বা এনকোড করার একটি বিশেষ গাণিতিক নিয়ম।

৪. JWT কীভাবে কাজ করে? (Implementation logic)

রেফারেন্স: [12:43]

সার্ভার এবং ক্লায়েন্টের মধ্যে কথোপকথনটি নিচের মতো হয়:

  1. লগইন: ইউজার আইডি-পাসওয়ার্ড পাঠায়।

  2. টোকেন প্রদান: সার্ভার সব ঠিক থাকলে একটি JWT তৈরি করে ইউজারকে পাঠিয়ে দেয়।

  3. রিকোয়েস্ট: এরপর থেকে ইউজার যখনই কোনো তথ্য চায়, সে প্রতিবার ওই JWT টোকেনটি সাথে পাঠায়।

  4. ভেরিফিকেশন: সার্ভার শুধু টোকেনের সিগনেচার চেক করে দেখে। যদি ঠিক থাকে, তবে তথ্য দিয়ে দেয়।


৫. এনকোডিং বনাম এনক্রিপশন (Accountability)

রেফারেন্স: [13:58]

JWT সাধারণত Encoded থাকে, Encrypted নয়। এর মানে হলো, যে কেউ চাইলে আপনার টোকেনটি ডিকোড করে আপনার নাম বা তথ্য দেখতে পারবে। কিন্তু কেউ সেটা পরিবর্তন করতে পারবে না।

তাই মনে রাখবেন:

  • JWT এর ভেতরে কখনো পাসওয়ার্ড বা খুব গোপন তথ্য রাখবেন না।

  • JWT ব্যবহারের মূল লক্ষ্য হলো Accountability (জবাবদিহিতা)—অর্থাৎ আপনি কে, সেটা নিশ্চিত করা।


আমাদের বিশ্লেষণ ও মতামত

ভিডিও নির্মাতার মূল উদ্দেশ্য: টেলুস্কো (Telusko) এখানে বোঝাতে চেয়েছেন যে আধুনিক ডিস্ট্রিবিউটেড সিস্টেম বা মাইক্রোসার্ভিসে (যেখানে অনেকগুলো সার্ভার একসাথে কাজ করে) কেন সেশন ম্যানেজমেন্টের চেয়ে JWT বেশি কার্যকর। এটি সিস্টেমকে স্কেলেবল (Scalable) বা বড় করার সুবিধা দেয়।

বাস্তব প্রেক্ষাপট ও চিন্তা: আজকাল প্রায় সব মোবাইল অ্যাপ এবং আধুনিক ওয়েব অ্যাপ (React, Angular, Vue) এ JWT ব্যবহার করা হয়। তবে এর একটি ঝুঁকি হলো, যদি কেউ আপনার টোকেনটি চুরি করে নেয়, তবে সে আপনার হয়ে সার্ভারে প্রবেশ করতে পারবে।

বিকল্প ও পরামর্শ: ১. HTTPS ব্যবহার করুন: যাতে ইন্টারনেটে ডেটা আদান-প্রদানের সময় কেউ টোকেন চুরি করতে না পারে।

২. Refresh Token: নিরাপত্তার জন্য টোকেনের মেয়াদ কম রাখা উচিত (যেমন ১৫ মিনিট) এবং নতুন টোকেন পাওয়ার জন্য রিফ্রেশ টোকেন সিস্টেম ব্যবহার করা ভালো।

সারসংক্ষেপে, JWT হলো এক ধরনের স্মার্ট আইডি কার্ড যা আপনার অ্যাপের নিরাপত্তা ব্যবস্থাকে অনেক বেশি শক্তিশালী এবং আধুনিক করে তোলে।

[

#35 What is JWT and Why

Telusko · 115K views

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

মন্তব্যসমূহ

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

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

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

Allow CSP in Chrome and Firefox and Call Server API in Spring boot Bangla

ঠিক আছে 🔥। আমি তোমার জন্য একটি সম্পূর্ণ README-style document বানাচ্ছি, যেখানে Chrome এবং Firefox দুটোতেই Spring Boot backend-এর জন্য CSP এবং CORS ঠিকভাবে configure করার process step-by-step আছে। README: CSP & CORS Configuration for Spring Boot (Chrome & Firefox) Overview এই document-এ দেখানো হয়েছে কিভাবে: Spring Boot backend থেকে Content Security Policy (CSP) configure করা যায়। Spring Boot backend থেকে Cross-Origin Resource Sharing (CORS) allow করা যায়। Chrome ও Firefox-এ fetch/API calls চালাতে হয় কীভাবে। ⚠️ Important: নিচের setup mostly development/test environment-এর জন্য। Production environment-এ অবশ্যই CSP & CORS secure করে configure করতে হবে। 1. Spring Boot Backend Configuration 1.1 CSP (Content Security Policy) Spring Boot WebFlux বা Spring MVC application-এ CSP header সেট করতে হবে: a) WebFlux (reactive) import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web....

AWS Lambda কী?

AWS Lambda কী? AWS Lambda হল একটি সার্ভারলেস কম্পিউটিং সার্ভিস, যা AWS ক্লাউডে কোড রান করার জন্য ব্যবহৃত হয়। Lambda ব্যবহারকারীদের কোনো সার্ভার বা ইনফ্রাস্ট্রাকচার ম্যানেজমেন্ট ছাড়াই কোড চালাতে সাহায্য করে। এটি মূলত ইভেন্ট-ড্রিভেন, যেখানে বিভিন্ন AWS সেবা (যেমন S3, DynamoDB, SNS) বা কাস্টম ইভেন্ট দ্বারা Lambda ফাংশন ট্রিগার হতে পারে। Lambda কোড রান করার পর তা একাধিক আউটপুট জেনারেট করতে পারে, অথবা অন্যান্য সিস্টেমে ফলাফল পাঠাতে পারে। Lambda একটি serverless প্ল্যাটফর্ম, যার মানে হল আপনি কোনও সার্ভার বা হোস্টিং ম্যানেজ করবেন না। আপনি শুধুমাত্র আপনার কোড লেখবেন এবং Lambda সার্ভিস তার ইনফ্রাস্ট্রাকচার পরিচালনা করবে। AWS Lambda এর প্রধান সুবিধা: সার্ভার পরিচালনা প্রয়োজন নেই : আপনি কেবল কোড লেখবেন, সার্ভার বা ইনফ্রাস্ট্রাকচার সম্পর্কিত কোনও চিন্তা করার দরকার নেই। স্কেলিং : Lambda স্বয়ংক্রিয়ভাবে ইনফ্রাস্ট্রাকচার স্কেল করতে পারে। আপনার অ্যাপ্লিকেশনের উপর ট্রাফিক বাড়লে Lambda আপনাআপনি সেই অনুযায়ী স্কেল হবে। কোনও ইনিশিয়াল কস্ট নেই : আপনি শুধুমাত্র আপনার কোড রান হওয়া সময়ের জন্য খরচ দেন, স...