আসুন শুরু থেকেই অস্বীকার করা যাক:
জেডাব্লুটিটি একটি খুব আধুনিক, সহজ এবং সুরক্ষিত পদ্ধতির যা জসন ওয়েব টোকেনগুলির জন্য প্রসারিত। জেসন ওয়েব টোকেন প্রমাণীকরণের জন্য একটি রাষ্ট্রবিহীন সমাধান। সুতরাং সার্ভারে কোনও সেশন স্টেট সংরক্ষণ করার দরকার নেই, যা অবশ্যই বিশ্রামের APIs জন্য উপযুক্ত। বিশ্রামপ্রাপ্ত এপিআইগুলি সর্বদা রাষ্ট্রহীন থাকতে হবে এবং জেডাব্লুটিটিসের সাথে প্রমাণীকরণের সর্বাধিক ব্যবহৃত বিকল্প হ'ল সেশন ব্যবহার করে কেবলমাত্র সার্ভারে ব্যবহারকারীর লগ-ইন স্টেট সংরক্ষণ করা। তবে অবশ্যই সেই নীতিটি অনুসরণ করে না যা বলে যে বিশ্রামপ্রাপ্ত এপিআইগুলি রাষ্ট্রবিহীন হওয়া উচিত এবং এ কারণেই জেডাব্লুটিটির মতো সমাধানগুলি জনপ্রিয় এবং কার্যকর হয়ে ওঠে।
সুতরাং এখন আসুন জেসন ওয়েব টোকেনগুলির সাথে কীভাবে প্রমাণীকরণ কাজ করে তা জেনে নেওয়া যাক। ধরে নেওয়া আমাদের ইতিমধ্যে আমাদের ডাটাবেসে একটি নিবন্ধিত ব্যবহারকারী রয়েছে। সুতরাং ব্যবহারকারীর ক্লায়েন্টটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে একটি পোস্ট অনুরোধ করে শুরু হয়, অ্যাপ্লিকেশনটি পরে ব্যবহারকারীর উপস্থিতি আছে কিনা তা পরীক্ষা করে এবং যদি পাসওয়ার্ডটি সঠিক হয়, তবে সেই অ্যাপ্লিকেশনটি কেবলমাত্র সেই ব্যবহারকারীর জন্য একটি অনন্য জসন ওয়েব টোকেন তৈরি করবে।
টোকেন একটি ব্যবহার করে তৈরি করেছেন গোপন স্ট্রিং যে একটি সার্ভারে সংরক্ষণ করা । এর পরে, সার্ভারটি সেই জেডাব্লুটিটি ক্লায়েন্টকে ফেরত পাঠায় যা এটি কোনও কুকি বা স্থানীয় সঞ্চয়স্থানে সংরক্ষণ করবে।
ঠিক এর মতোই, ব্যবহারকারীটি সার্ভারে কোনও রাজ্য না রেখেই আমাদের অ্যাপ্লিকেশনটিতে অনুমোদনপ্রাপ্ত এবং মূলত লগইন হয়।
সুতরাং সার্ভারটি আসলে কোন ব্যবহারকারীটি আসলে লগ ইন হয়েছে তা জানে না, তবে অবশ্যই, ব্যবহারকারী জানেন যে তিনি লগ ইন করেছেন কারণ তার একটি বৈধ জাসন ওয়েব টোকেন রয়েছে যা অ্যাপ্লিকেশনটির সুরক্ষিত অংশগুলি অ্যাক্সেস করার জন্য পাসপোর্টের মতো কিছুটা।
সুতরাং আবারও, আপনি ধারণাটি পেয়েছেন তা নিশ্চিত করার জন্য। একজন ব্যবহারকারী তার অনন্য বৈধ জসন ওয়েব টোকেনটি ফিরে পাওয়ার সাথে সাথেই লগ ইন হয়ে যায় যা সার্ভারে কোথাও সংরক্ষিত নেই। এবং তাই এই প্রক্রিয়া তাই সম্পূর্ণ রাষ্ট্রহীন।
তারপরে, প্রতিবার কোনও ব্যবহারকারী তার ব্যবহারকারীর প্রোফাইল ডেটার মতো সুরক্ষিত রুট অ্যাক্সেস করতে চায়। তিনি একটি অনুরোধের সাথে তার জসন ওয়েব টোকন প্রেরণ করেন, তাই এই রুটে অ্যাক্সেস পেতে তার পাসপোর্টটি দেখানোর মতো কিছুটা।
অনুরোধটি সার্ভারে হিট হয়ে যাওয়ার পরে, আমাদের অ্যাপ্লিকেশনটি যাচুন করবে যে জাসন ওয়েব টোকন আসলেই বৈধ কিনা এবং যদি ব্যবহারকারী সত্যই তিনি যে বলেন সে ভাল, তবে অনুরোধ করা ডেটা ক্লায়েন্টকে প্রেরণ করা হবে এবং যদি তা না হয় তবে সেখানে থাকবে ব্যবহারকারীকে বলতে ত্রুটি হোন যে তাকে সেই সংস্থানটি অ্যাক্সেস করার অনুমতি নেই।
এই সমস্ত যোগাযোগ অবশ্যই https এর মধ্যে ঘটবে, সুতরাং এনক্রিপ্ট হওয়া এইচটিটিপি সুরক্ষিত করুন যাতে কেউ পাসওয়ার্ড বা জসন ওয়েব টোকনে অ্যাক্সেস পেতে পারে। তবেই আমাদের একটি সত্যিকারের সুরক্ষিত সিস্টেম রয়েছে।
সুতরাং একটি জসন ওয়েব টোকন দেখতে এই স্ক্রিনশটের বাম অংশের মতো মনে হচ্ছে যা JWt.ioSo এ JWT ডিবাগার থেকে নেওয়া হয়েছিল, এটি তিনটি অংশ নিয়ে গঠিত একটি এনকোডিং স্ট্রিং। শিরোনাম, পে-লোড এবং স্বাক্ষর এখন শিরোনামটি টোকেন নিজেই সম্পর্কে কিছুটা মেটাডেটা এবং পে-লোড এমন ডেটা যা আমরা টোকনে এনকোড করতে পারি, যে তথ্যটি আমরা চাই সত্যই। সুতরাং আমরা এখানে যত বেশি ডেটা এনকোড করতে চাই তার চেয়ে বড় JWT। যাইহোক, এই দুটি অংশ হ'ল সরল পাঠ্য যা এনকোড হবে তবে এনক্রিপ্ট করা হবে না।
সুতরাং যে কেউ এগুলি ডিকোড করতে এবং সেগুলি পড়তে সক্ষম হবে , আমরা এখানে কোনও সংবেদনশীল ডেটা সংরক্ষণ করতে পারি না। তবে এটি মোটেও সমস্যা নয় কারণ তৃতীয় অংশে, তাই স্বাক্ষরে, যেখানে জিনিসগুলি সত্যই আকর্ষণীয় হয়ে ওঠে। স্বাক্ষরটি শিরোনাম, পেডলোড এবং সার্ভারে সংরক্ষিত গোপন ব্যবহার করে তৈরি করা হয়।
এবং এই পুরো প্রক্রিয়াটিকে তখন জসন ওয়েব টোকেন স্বাক্ষরকরণ বলা হয় । স্বাক্ষরকারী অ্যালগরিদম শিরোনাম, পে-লোড এবং একটি অনন্য স্বাক্ষর তৈরির গোপনীয়তা নেয়। সুতরাং শুধুমাত্র এই ডেটা প্লাস গোপনীয়তা এই স্বাক্ষর তৈরি করতে পারে, ঠিক আছে? তারপরে শিরোনাম এবং পে-লোডের সাথে একসাথে এই স্বাক্ষরগুলি JWT গঠন করে, যা ক্লায়েন্টের কাছে প্রেরণ হয়ে যায়।
সুরক্ষিত রুটে অ্যাক্সেস দেওয়ার জন্য সার্ভারটি একবার JWT পেয়ে গেলে, ব্যবহারকারী সত্যই তিনি যে দাবি করেছেন তা নিশ্চিত করার জন্য এটি যাচাই করা দরকার। অন্য কথায়, এটি কেউ টোকেনের শিরোনাম এবং পে-লোড ডেটা পরিবর্তন করে কিনা তা যাচাই করবে। সুতরাং আবারও, এই যাচাইকরণের পদক্ষেপটি পরীক্ষা করবে যে আসলে কোনও তৃতীয় পক্ষ জাসন ওয়েব টোকেনের শিরোনাম বা পেডলোডকে পরিবর্তন করেছে কিনা।
সুতরাং, এই যাচাইকরণটি আসলে কীভাবে কাজ করে? ঠিক আছে, এটি আসলে বেশ সোজা। একবার জেডাব্লুটিটি পাওয়ার পরে, যাচাইকরণটি তার শিরোনাম এবং পে-লোড নেবে এবং সার্ভারে এখনও রক্ষা করা গোপনের সাথে একত্রে মূলত একটি পরীক্ষার স্বাক্ষর তৈরি করে।
তবে জেডাব্লুটিটি প্রথম তৈরি হওয়ার সময় যে আসল স্বাক্ষরটি উত্পন্ন হয়েছিল তা এখনও টোকেনে আছে, তাই না? এবং এটি এই যাচাইকরণের মূল চাবিকাঠি। কারণ এখন আমাদের যা করতে হবে তা হ'ল পরীক্ষার স্বাক্ষরটি মূল স্বাক্ষরের সাথে তুলনা করা। এবং যদি পরীক্ষার স্বাক্ষরটি মূল স্বাক্ষরের সমান হয় তবে এর অর্থ হ'ল পে-লোড এবং শিরোনামটি পরিবর্তন করা হয়নি।
কারণ সেগুলি যদি সংশোধন করা হত তবে পরীক্ষার স্বাক্ষরটি আলাদা হতে হত। অতএব এই ক্ষেত্রে যেখানে ডেটাগুলির কোনও পরিবর্তন হয়নি, আমরা তখন ব্যবহারকারীকে প্রমাণীকরণ করতে পারি। এবং অবশ্যই, যদি দুটি স্বাক্ষর প্রকৃতপক্ষে আলাদা হয় তবে ভাল, তবে এর অর্থ হ'ল কেউ ডেটা নিয়ে টেম্পার করেছে। সাধারণত পে লোড পরিবর্তন করার চেষ্টা করে। কিন্তু এই তৃতীয় পক্ষের বেতনের পেডে হেরফের করার অবশ্যই গোপনীয়তার অ্যাক্সেস নেই, তাই তারা জেডাব্লুটিটিতে স্বাক্ষর করতে পারে না। সুতরাং আসল স্বাক্ষর কখনই কারচুপি করা ডেটার সাথে মিল রাখে না। এবং তাই, যাচাইকরণ সর্বদা এই ক্ষেত্রে ব্যর্থ হবে will এবং এটি এই পুরো সিস্টেমটিকে কাজ করার মূল চাবিকাঠি। এটি এমন জাদু যা জেডাব্লুটিটিটিকে এত সহজ, তবে অত্যন্ত শক্তিশালী করে তোলে।
md5('original messaged' + secret) != md5('changed message' + secret)
সুতরাং কেউ যদি বার্তা পরিবর্তন করে তবে আপনি এটি সনাক্ত করতে পারেন