JWT (JSON Web Token) প্রমাণীকরণ হল একটি পদ্ধতি যা ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদে তথ্য স্থানান্তর করার জন্য ব্যবহৃত হয়। এই তথ্যটি JSON অবজেক্ট আকারে প্রেরণ করা হয় এবং এটি ডিজিটালভাবে স্বাক্ষরিত হয়, যাতে এটি যাচাইযোগ্য এবং বিশ্বাসযোগ্য হয়।
JWT প্রমাণীকরণের মূল ধারণা:
টোকেনের গঠন: একটি JWT তিনটি অংশ নিয়ে গঠিত, যা বিন্দু দ্বারা পৃথক হয়:
হেডার: টোকেন সম্পর্কিত মেটাডেটা ধারণ করে, যেমন কোন স্বাক্ষর অ্যালগরিদম (যেমন HMAC, SHA256) ব্যবহার করা হয়েছে।
পেলোড: টোকেনের মূল অংশ, যেখানে দাবিগুলি (claims) থাকে। দাবিগুলি হল ব্যবহারকারীর সম্পর্কে বিবৃতি (যেমন তাদের আইডি বা অনুমতি) বা যেকোনো অতিরিক্ত তথ্য যা আপনি অন্তর্ভুক্ত করতে চান।
স্বাক্ষর: হেডার এবং পেলোডের ভিত্তিতে গোপন চাবি বা প্রাইভেট কি দিয়ে তৈরি করা হয়। এটি নিশ্চিত করে যে ডেটার অখণ্ডতা বজায় রয়েছে।
স্বাক্ষর প্রক্রিয়া: ব্যবহারকারী লগইন করার সময় বা প্রমাণীকরণ করার সময়, সার্ভার একটি JWT তৈরি করে এবং এটি একটি গোপন চাবি বা পাবলিক/প্রাইভেট কি জোড়া দিয়ে স্বাক্ষর করে।
টোকেনের প্রবাহ:
ব্যবহারকারী লগইন করলে, সার্ভার একটি JWT তৈরি করে এবং ক্লায়েন্টকে পাঠায়।
ক্লায়েন্ট এই টোকেনটি সংরক্ষণ করে (সাধারণত লোকাল স্টোরেজ বা কুকিজে) এবং পরবর্তী অনুরোধে এটি Authorization হেডারে অন্তর্ভুক্ত করে (Authorization: Bearer <token> আকারে)।
সার্ভার প্রতিটি অনুরোধের সময় টোকেনটি যাচাই করে, স্বাক্ষর এবং দাবিগুলি পরীক্ষা করে এবং টোকেনের ভিত্তিতে ব্যবহারকারীর অ্যাক্সেস অনুমতি দেয়।
Stateless: JWT প্রমাণীকরণ স্টেটলেস, অর্থাৎ সার্ভারকে ব্যবহারকারীর সেশন ডেটা সংরক্ষণ করতে হয় না। টোকেনটি নিজেই সার্ভারকে ব্যবহারকারী যাচাই করার জন্য প্রয়োজনীয় সমস্ত তথ্য বহন করে।
উদাহরণ:
লগইন প্রবাহ:
ব্যবহারকারী লগইন করার জন্য প্রমাণপত্র প্রদান করে।
প্রমাণপত্র সঠিক হলে, সার্ভার একটি JWT তৈরি করে এবং ক্লায়েন্টকে পাঠায়।
ক্লায়েন্ট টোকেনটি পরবর্তী অনুরোধে ব্যবহার করে সুরক্ষিত রিসোর্স অ্যাক্সেস করতে।