প্রমাণীকরণের মতো পরিস্থিতিতে সেশন ওভার JWT ব্যবহার করার সুবিধা কী?
এটি কি স্বতন্ত্র পদ্ধতি হিসাবে ব্যবহৃত হয় বা এটি অধিবেশনটিতে ব্যবহৃত হয়?
প্রমাণীকরণের মতো পরিস্থিতিতে সেশন ওভার JWT ব্যবহার করার সুবিধা কী?
এটি কি স্বতন্ত্র পদ্ধতি হিসাবে ব্যবহৃত হয় বা এটি অধিবেশনটিতে ব্যবহৃত হয়?
উত্তর:
প্রতি মন্তব্য "সেশন" ব্যবহার করে জেডাব্লুটিটির কোনও লাভ নেই। জেডব্লিউটি সার্ভারে এটি করার পরে ক্লায়েন্টের সেশন স্টেট বজায় রাখার একটি উপায় সরবরাহ করে।
এটি জিজ্ঞাসা করার সময় লোকেরা প্রায়শই যা বোঝায় তা হ'ল " সার্ভার-সাইড সেশন ব্যবহার করে জেডাব্লুটিটি ব্যবহারের সুবিধা কী "
সার্ভার-সাইড সেশনগুলির সাথে আপনাকে সেশন আইডেন্টিফায়ারটি একটি ডেটাবেজে সংরক্ষণ করতে হবে, নাহলে এটি মেমোরিতে রাখা উচিত এবং নিশ্চিত হয়ে নিন যে ক্লায়েন্ট সর্বদা একই সার্ভারকে হিট করে। এই দুজনেরই ঘাটতি রয়েছে। ডাটাবেসের ক্ষেত্রে (বা অন্য কেন্দ্রিয়ায়িত স্টোরেজ) ক্ষেত্রে এটি বাধা হয়ে দাঁড়ায় এবং বজায় রাখার জিনিস - প্রতিটি অনুরোধের সাথে মূলত একটি অতিরিক্ত প্রশ্ন করা উচিত।
একটি মেমরির সমাধান সহ আপনি আপনার অনুভূমিক স্কেলিং সীমাবদ্ধ করেন এবং সেশনগুলি নেটওয়ার্ক ইস্যু দ্বারা প্রভাবিত হবে (ক্লায়েন্টস ওয়াইফাই এবং মোবাইল ডেটা, সার্ভার রিবুটিং ইত্যাদির মধ্যে রোমিং)
অধিবেশনটিকে ক্লায়েন্টে স্থানান্তরিত করার অর্থ আপনি কোনও সার্ভার-সাইড সেশনের উপর নির্ভরতা সরিয়ে ফেলেন তবে এটি চ্যালেঞ্জগুলির নিজস্ব সেট চাপিয়ে দেয়।
এই সমস্যাগুলি JWTs এবং অন্যান্য ক্লায়েন্ট-সাইড সেশন মেকানিজমগুলি দ্বারা ভাগ করে নেওয়া হয়।
জেডাব্লুটি বিশেষত এগুলির শেষ ঠিকানাগুলি। এটি JWT কী তা বুঝতে সাহায্য করতে পারে:
এটি কিছুটা তথ্য। ব্যবহারকারীর সেশনের জন্য আপনি ব্যবহারকারীর নাম এবং টোকেনের মেয়াদ শেষ হওয়ার সময় অন্তর্ভুক্ত করতে পারেন। তবে এটি অনুমিতভাবে কিছু হতে পারে, এমনকি সেশন আইডি বা ব্যবহারকারীর সম্পূর্ণ প্রোফাইলও। (তবে দয়া করে এটি করবেন না) এটি একটি সুরক্ষিত স্বাক্ষর পেয়েছে যা দূষিত পক্ষগুলিকে নকল টোকেন তৈরি করা থেকে বিরত করে (তাদের সাইন করতে আপনার সার্ভারের ব্যক্তিগত কীতে অ্যাক্সেস দরকার এবং আপনি স্বাক্ষর করতে পারেন যে তারা স্বাক্ষরিত হওয়ার পরেও তাদের পরিবর্তন করা হয়নি) আপনি প্রতিটি অনুরোধের সাথে তাদের প্রেরণ করুন, ঠিক যেমন কোনও কুকি বা Authorization
শিরক পাঠানো হবে। আসলে এগুলি সাধারণত HTTP Authorization
শিরোনামে প্রেরণ করা হয় তবে একটি কুকি ব্যবহার করা ভাল।
টোকেন স্বাক্ষরিত এবং তাই সার্ভারটি এর উত্স যাচাই করতে পারে। আমরা ধরে নেব যে সার্ভারটি সুরক্ষিতভাবে সাইন ইন করার নিজস্ব ক্ষমতার উপর ভরসা করে (আপনার একটি স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করা উচিত: এটি নিজেই করার চেষ্টা করবেন না এবং সার্ভারটি সঠিকভাবে সুরক্ষিত করবেন)
সুরক্ষিতভাবে টোকন পরিবহনের বিষয়ে ইস্যুতে উত্তরটি সাধারণত কোনও এনক্রিপ্ট করা চ্যানেল, সাধারণত HTS- র মাধ্যমে প্রেরণ করা হয়।
ক্লায়েন্টে সুরক্ষিতভাবে টোকেন সংরক্ষণ করার বিষয়ে, আপনাকে অবশ্যই এটি নিশ্চিত করতে হবে যে খারাপ লোকেরা এটি পেতে না পারে। এর (বেশিরভাগ) এর অর্থ জেএসকে খারাপ ওয়েবসাইটগুলি থেকে টোকেনটি তাদের কাছে ফেরত পাঠাতে বাধা দেওয়া। অন্যান্য ধরণের এক্সএসএস আক্রমণকে প্রশমিত করতে ব্যবহৃত একই কৌশল ব্যবহার করে এটি প্রশমিত করা হয়।
আপনার যদি জেডাব্লুটিটি অবৈধ করার প্রয়োজন হয় তবে অবশ্যই এটি অর্জন করার উপায় রয়েছে। কেবলমাত্র তাদের "অন্যান্য সেশনগুলি সমাপ্ত" করার জন্য অনুরোধ করেছেন এমন ব্যবহারকারীদের জন্য প্রতি ব্যবহারকারী পর্ব সংরক্ষণ করা খুব কার্যকর পদ্ধতি যা সম্ভবত যথেষ্ট ভাল হবে। যদি অ্যাপ্লিকেশনটিতে প্রতি সেশনের অবৈধকরণের প্রয়োজন হয়, তবে একটি সেশন আইডি একইভাবে বজায় রাখা যায় এবং "নিহত টোকেন" টেবিলটি এখনও সম্পূর্ণ ব্যবহারকারীর সারণির চেয়ে অনেক কম ছোট রক্ষণাবেক্ষণ করা যেতে পারে (আপনার কেবলমাত্র রেকর্ডগুলি নতুনের চেয়ে বেশি ধরে রাখতে হবে দীর্ঘতম অনুমোদিত টোকেন আজীবন) এটি সম্ভবত আসল সেশন রাষ্ট্রের টেবিলের তুলনায় অনেক ছোট টেবিল হতে পারে, সুতরাং লকআপগুলি এখনও আরও দক্ষ are
জেডাব্লুটি টোকেন ব্যবহারের অন্য একটি সুবিধা হ'ল সম্ভবত আপনি যে ভাষায় এটি আশা করতে পারেন প্রতিটি ভাষায় উপলব্ধ গ্রন্থাগার ব্যবহার করে তা প্রয়োগ করা যুক্তিসঙ্গতভাবে সহজ। এটি আপনার প্রাথমিক ব্যবহারকারী প্রমাণীকরণ প্রকল্প থেকে সম্পূর্ণ বিবাহবিচ্ছেদ হয়েছে - আপনি যদি আঙুলের মুদ্রণ ভিত্তিক সিস্টেমে যান তবে আপনার সেশন ম্যানেজমেন্ট স্কিমে কোনও পরিবর্তন করার দরকার নেই।
আরও সূক্ষ্ম সুবিধা: কারণ জেডাব্লুটিটি "তথ্য" বহন করতে পারে এবং ক্লায়েন্টের দ্বারা এটি অ্যাক্সেস করতে পারে আপনি এখন কিছু স্মার্ট জিনিস শুরু করতে পারেন। উদাহরণস্বরূপ ব্যবহারকারীকে মনে করিয়ে দিন যে তাদের সেশনটি লগ আউট হওয়ার কয়েকদিন আগেই মেয়াদ শেষ হয়ে যাবে, টোকনে মেয়াদ শেষ হওয়ার তারিখের ভিত্তিতে তাদের পুনরায়-প্রমাণীকরণের বিকল্প প্রদান করবে। আপনি যে কল্পনা করতে পারেন।
সংক্ষেপে: জেডাব্লুটিটি অন্যান্য সেশন কৌশলগুলির কিছু প্রশ্ন এবং ত্রুটিগুলির উত্তর দেয় answers
জেডব্লিউটিগুলি নিরাপদ সঞ্চয়স্থান বা পরিবহণের মতো অন্যান্য সমস্যার উত্তর দেয় না, তবে এটি কোনও নতুন সুরক্ষা সমস্যা প্রবর্তন করে না।
জেডাব্লুটিটির চারপাশে প্রচুর নেতিবাচকতা বিদ্যমান তবে আপনি যদি অন্য ধরণের প্রমাণীকরণের জন্য একই সুরক্ষাটি প্রয়োগ করেন তবে আপনি ভাল হয়ে যাবেন be
একটি চূড়ান্ত নোট: এটি কুকিজ বনাম টোকেন নয়। কুকিজ হ'ল তথ্য বিট সংরক্ষণ এবং পরিবহনের একটি প্রক্রিয়া এবং জেডাব্লুটি টোকেনগুলি সংরক্ষণ ও পরিবহনেও ব্যবহার করা যেতে পারে।
সংক্ষিপ্ত উত্তরটি: কোনওটি নয়।
একটি দীর্ঘ সংস্করণ হ'ল:
আমি এই সুপারিশ পড়ার পর অধিবেশন পরিচালনার জন্য JWTs বাস্তবায়িত GraphQL ডক্স :
আপনি যদি এই কোনও প্রমাণীকরণ ব্যবস্থার সাথে পরিচিত না হন তবে আমরা এক্সপ্রেস-জেভিউটি ব্যবহার করার পরামর্শ দিচ্ছি কারণ এটি ভবিষ্যতের কোনও নমনীয়তা ছাড়াই সহজ।
বাস্তবায়ন বাস্তবিকই সহজ ছিল কারণ এটি কেবল কিছুটা জটিলতা যুক্ত করেছিল। কিছুক্ষণ পরে, আমি (আপনার মতো) কী কী উপকার হয়েছিল তা ভাবতে শুরু করি। দেখা যাচ্ছে যে জেডব্লিউটি-র পক্ষে সেশন ম্যানেজমেন্ট হিসাবে খুব কম (বা সম্ভবত কিছুই নেই) রয়েছে, যেমন এই ব্লগ পোস্টটি বিশদভাবে ব্যাখ্যা করেছে:
আমার দুটি সেন্ট, যা পথে joepie91 এর বিখ্যাত ব্লগ পোস্টের সাথে কিছু বিপরীত যুক্ত করে।
যে বিবেচনা আজকের (এবং আগামীকালের) অ্যাপ্লিকেশন (বেশিরভাগই) হয় নেটিভ মেঘ
আছে একটি অর্থনৈতিক সুবিধা আছে Stateless JWT প্রমাণীকরণ , যা আবেদন দাঁড়িপাল্লা যেমন দাঁড়িপাল্লা:
খরচ বহন করতে বরাবর মেঘ অ্যাপ্লিকেশন প্রতি নিঃশ্বাসে এক স্বপক্ষে ।
এই ব্যয় হ্রাস করা হয় যখন ব্যবহারকারীদের আর কোনও সেশন স্টোর "বিরুদ্ধে" প্রমাণীকরণ করতে হয় না।
প্রক্রিয়াজাতকরণ
একটি সেশন স্টোর চালানো 24/7 অর্থ ব্যয় করে।
K8S বিশ্বে মেমরি ভিত্তিক সমাধানগুলি নিয়ে আপনি দূরে সরে যেতে পারবেন না, কারণ পোঁদগুলি সাময়িক আকারের।
স্টিকি সেশনগুলি ঠিক একই কারণে ভাল ভাবেনা।
স্টোরেজ
ডেটা সংরক্ষণের জন্য অর্থ ব্যয় হয়। এসএসডি-তে ডেটা সংরক্ষণের জন্য আরও বেশি খরচ হয়।
সেশন সম্পর্কিত ক্রিয়াকলাপগুলি দ্রুত সমাধান করা দরকার, সুতরাং একটি অপটিকাল ড্রাইভ কোনও বিকল্প নয়।
I / O
কিছু মেঘ সরবরাহকারী ডিস্ক সম্পর্কিত I / O এর জন্য অর্থ গ্রহণ করে।
ব্যান্ডউইথ
কিছু ক্লাউড সরবরাহকারী সার্ভারের উদাহরণগুলির মধ্যে নেটওয়ার্ক ক্রিয়াকলাপের জন্য চার্জ করে।
এটি প্রায়শই নিশ্চিত যেহেতু এপিআই এবং সেশন স্টোরটি পৃথক দৃষ্টান্ত ances
সেশন স্টোরকে ক্লাস্টারিং
ব্যয় আরও পূর্বের সমস্ত ব্যয় আরও বাড়িয়ে তোলে।
আমি ব্যবহারকারীর প্রমাণীকরণের জন্য জেডাব্লুটি এবং টোকেন + ক্যাশেয়ের মধ্যে একটি অনুরূপ প্রশ্ন চয়ন করেছি।
এই নিবন্ধগুলি পড়ার পরে, আমার কাছে এটি স্পষ্টভাবে স্পষ্ট যে JWT প্রতিশ্রুতিগুলি যে সমস্যাগুলি নিয়ে আসে সেগুলি ছাড়িয়ে যায় না। সুতরাং টোকেন + ক্যাশে (রেডিস / মেমক্যাচ) আমার পক্ষে যাওয়ার উপায়।
অথ শিরোনাম বনাম জেডাব্লুটি বনাম সেশনস - কীভাবে এপিআই-র জন্য রাইট আথ টেকনিক নির্বাচন করতে হয়