( এই থ্রেড থেকে উদ্ভূত হওয়ায় এটি সত্যই নিজের নিজস্ব একটি প্রশ্ন এবং নোডজেএস ইত্যাদির সাথে নির্দিষ্ট নয়)
আমি প্রমাণীকরণের সাথে একটি REST এপিআই সার্ভার বাস্তবায়ন করছি, এবং আমি জেডাব্লুটি টোকেন হ্যান্ডলিং সফলভাবে প্রয়োগ করেছি যাতে কোনও ব্যবহারকারীর নাম / পাসওয়ার্ড দিয়ে একটি / লগইন এন্ডপয়েন্টের মাধ্যমে লগইন করতে পারে, যার ভিত্তিতে একটি জেডাব্লুটি টোকন সার্ভার সিক্রেট থেকে উত্পন্ন হয় এবং ফিরে আসে ক্লায়েন্ট। তারপরে প্রতিটি প্রত্যয়িত API অনুরোধে টোকনটি ক্লায়েন্ট থেকে সার্ভারে দেওয়া হয়, যার উপরে টোকেন যাচাই করতে সার্ভার গোপন ব্যবহার করা হয়।
তবে, টোকনকে কীভাবে এবং কতটা পরিমাণে কার্যকর করা উচিত, সত্যিকারের সুরক্ষিত সিস্টেম তৈরি করার জন্য আমি সর্বোত্তম অনুশীলনগুলি বোঝার চেষ্টা করছি। টোকনকে "বৈধতা দেওয়ার" ক্ষেত্রে ঠিক কী জড়িত থাকতে হবে? সার্ভার-সিক্রেট ব্যবহার করে স্বাক্ষরটি যাচাই করা যায় কি যথেষ্ট, নাকি সার্ভারে সঞ্চিত কিছু ডেটার বিরুদ্ধে টোকেন এবং / অথবা টোকেন পেইডও ক্রস-চেক করা উচিত?
একটি টোকেন ভিত্তিক প্রমাণীকরণ সিস্টেম কেবলমাত্র প্রতিটি অনুরোধে ব্যবহারকারীর নাম / পাসওয়ার্ড দেওয়ার মতোই নিরাপদ থাকবে তবে শর্ত থাকে যে কোনও ব্যবহারকারীর পাসওয়ার্ড পাওয়ার চেয়ে টোকন অর্জন করা সমান বা আরও বেশি কঠিন। তবে, আমি যে উদাহরণগুলি দেখেছি, কেবলমাত্র টোকেন তৈরি করতে প্রয়োজনীয় তথ্য হ'ল ব্যবহারকারীর নাম এবং সার্ভার-সাইড সিক্রেট। এর অর্থ এই নয় যে কোনও ক্ষতিকারক ব্যবহারকারী সার্ভার সিক্রেট সম্পর্কে জ্ঞান অর্জন করার জন্য এক মিনিটের জন্য ধরে নিচ্ছেন, তিনি এখন যে কোনও ব্যবহারকারীর পক্ষে টোকেন তৈরি করতে পারবেন , যার ফলে কেবলমাত্র একটি প্রদত্ত ব্যবহারকারীর কাছেই অ্যাক্সেস থাকা সম্ভব নয় যেহেতু পাসওয়ার্ড থাকলে প্রাপ্ত হয়েছে, তবে বাস্তবে সমস্ত ব্যবহারকারীর অ্যাকাউন্টে?
এটি আমার কাছে প্রশ্ন নিয়ে আসে:
1) জেডাব্লুটি টোকেন বৈধতা কেবলমাত্র টোকেনের স্বাক্ষর যাচাই করা, একা সার্ভারের গোপনীয়তার অখণ্ডতার উপর নির্ভর করে বা পৃথক বৈধকরণের প্রক্রিয়া সহ সীমাবদ্ধ হওয়া উচিত?
কিছু ক্ষেত্রে আমি টোকেন এবং সার্ভার সেশনগুলির সম্মিলিত ব্যবহার দেখেছি যেখানে / লগইন শেষ পয়েন্টের মাধ্যমে সফল লগইন করার পরে একটি সেশনটি প্রতিষ্ঠিত হয়। এপিআই অনুরোধগুলি টোকেনকে বৈধতা দেয় এবং টোকেনে পাওয়া ডিকোডড ডেটাটি সেশনে সঞ্চিত কিছু ডেটার সাথে তুলনা করে। যাইহোক, সেশনগুলি ব্যবহার করার অর্থ কুকি ব্যবহার করা এবং কোনও অর্থে এটি টোকেন ভিত্তিক পদ্ধতির ব্যবহারের লক্ষ্যকে পরাস্ত করে। এটি নির্দিষ্ট ক্লায়েন্টদের জন্যও সমস্যা তৈরি করতে পারে।
সার্ভারটি বর্তমানে সমস্ত টোকেনকে একটি মেমক্যাচে বা অনুরূপ ব্যবহারে রাখার জন্য এটি কল্পনা করতে পারে, এমনকি সার্ভারের গোপনীয়তা আপস করা হলেও যাতে কোনও আক্রমণকারী "বৈধ" টোকেন তৈরি করতে পারে, কেবলমাত্র লগইন শেষের পয়েন্টের মাধ্যমে তৈরি করা টোকেনগুলি গ্রহণ করা হবে। এটি কি যুক্তিসঙ্গত বা কেবল অতিরিক্ত কাজ / অতিরিক্ত কাজ?
2) যদি জেডাব্লুটি স্বাক্ষর যাচাইকরণ টোকেনগুলি বৈধ করার একমাত্র মাধ্যম, যার অর্থ সার্ভার সিক্রেটের অখণ্ডতা হল ব্রেকিং পয়েন্ট, কীভাবে সার্ভার সিক্রেটস পরিচালনা করা উচিত? পরিবেশে পরিবর্তনশীল থেকে পড়ুন এবং প্রতি মোতায়েন করা স্ট্যাক একবার তৈরি (এলোমেলোভাবে?)? পর্যায়ক্রমে পুনরায় নতুন বা ঘোরানো (এবং যদি থাকে তবে, কীভাবে বিদ্যমান বৈধ টোকেনগুলি রোটেশনের আগে তৈরি হয়েছিল তবে রোটেশনের পরে যাচাই করা দরকার, সম্ভবত সার্ভারটি কোনও নির্দিষ্ট সময়ে বর্তমান এবং পূর্ববর্তী গোপন ধারণ করে থাকলে) ? অন্যকিছু?
সার্ভার সিক্রেট আপোস হওয়ার ঝুঁকি নিয়ে আসতে পারে তখন আমি কেবল অতিরিক্ত মাত্রায় বেহাল হয়ে যাচ্ছি, যা অবশ্যই আরও সাধারণ সমস্যা যা সকল ক্রিপ্টোগ্রাফিক পরিস্থিতিতে সমাধান করা প্রয়োজন ...
RSAPrivateKey privateKey
??