প্রমাণীকরণ এবং সেশন পরিচালনার জন্য এসপিএ সেরা অনুশীলন


307

অ্যাঙ্গুলার, অ্যাম্বার, রিএ্যাক্ট ইত্যাদির ফ্রেমওয়ার্ক ব্যবহার করে এসপিএ স্টাইল অ্যাপ্লিকেশনগুলি তৈরি করার সময় লোকেরা প্রমাণীকরণ এবং সেশন ম্যানেজমেন্টের জন্য কিছু সেরা অভ্যাস বলে বিশ্বাস করে? আমি সমস্যাটি বিবেচনার কয়েকটি উপায় সম্পর্কে ভাবতে পারি।

  1. এটিআইপি এবং ইউআই-এর একই উত্স ডোমেন ধরে নিয়েছে এমন একটি নিয়মিত ওয়েব অ্যাপ্লিকেশন সহ প্রমাণীকরণের চেয়ে আলাদাভাবে চিকিত্সা করুন।

    এটিতে সম্ভবত একটি সেশন কুকি, সার্ভার সাইড সেশন স্টোরেজ এবং সম্ভবত কিছু সেশন এআইপি এন্ডপয়েন্ট রয়েছে যা ব্যক্তিগতকৃতকরণে সহায়তা করতে বা সম্ভবত ক্লায়েন্টের পক্ষে ভূমিকা / দক্ষতা নির্ধারণের জন্য বর্তমান ব্যবহারকারীর তথ্য পাওয়ার জন্য সত্যায়িত ওয়েব ইউআই হিট করতে পারে। সার্ভারটি অবশ্যই অবশ্যই ডেটা অ্যাক্সেস রক্ষা করার নিয়মগুলি প্রয়োগ করবে, ইউআই কেবল অভিজ্ঞতাটি কাস্টমাইজ করতে এই তথ্যটি ব্যবহার করবে।

  2. কোনও সর্বজনীন এপিআই ব্যবহার করে তৃতীয় পক্ষের ক্লায়েন্টের মতো এটি ব্যবহার করুন এবং OAuth এর মতো কিছু টোকেন সিস্টেমের সাথে প্রমাণীকরণ করুন। এই টোকেন প্রক্রিয়াটি ক্লায়েন্ট ইউআই দ্বারা ব্যবহৃত সার্ভার এপিআই-তে করা প্রতিটি অনুরোধকে প্রমাণীকরণ করবে।

আমি এখানে আসলে একজন বিশেষজ্ঞের চেয়ে বেশি নই তবে # 1 বেশিরভাগ ক্ষেত্রেই যথেষ্ট যথেষ্ট বলে মনে হয় তবে আমি আরও কিছু অভিজ্ঞ মতামত শুনতে চাই।


আমি এই ভাবে উপস্থাপিত করা, stackoverflow.com/a/19820685/454252
allenhwkim

উত্তর:


476

দৈর্ঘ্যে, এই প্রশ্নটি কিছুটা ভিন্ন আকারে সম্বোধন করা হয়েছে:

বিশুদ্ধ প্রমাণীকরণ

তবে এটি এটি সার্ভার-সাইড থেকে সম্বোধন করে। এর ক্লায়েন্ট-পাশ থেকে এটি তাকান। যদিও আমরা এটি করার আগে একটি গুরুত্বপূর্ণ উপস্থাপনা আছে:

জাভাস্ক্রিপ্ট ক্রিপ্টো হতাশ

এ সম্পর্কে মাতাসানোর নিবন্ধটি বিখ্যাত, তবে এতে থাকা পাঠগুলি অত্যন্ত গুরুত্বপূর্ণ:

https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/august/javascript-cryptography-considered-harmful/

সংক্ষেপ:

  • একটি মধ্যম আক্রমণ মধ্যাহ্নে আপনার ক্রিপ্টো কোডটি এর সাথে প্রতিস্থাপন করতে পারে <script> function hash_algorithm(password){ lol_nope_send_it_to_me_instead(password); }</script>
  • একটি ম্যান-ইন-দ্য মিডল আক্রমণ এমন একটি পৃষ্ঠার তুলনায় তুচ্ছ যা কোনও নন-এসএসএল সংযোগের মাধ্যমে যে কোনও সংস্থান সরবরাহ করে।
  • আপনার একবার এসএসএল হয়ে গেলে আপনি যে কোনও উপায়ে রিয়েল ক্রিপ্টো ব্যবহার করছেন।

এবং নিজের নিজস্ব একটি যুক্তকরণ যুক্ত করতে:

  • একটি এক্সএসএস আক্রমণ একটি সফল আক্রমণকারী আপনার ক্লায়েন্টের ব্রাউজারে কোড কার্যকর করতে পারে, এমনকি আপনি এসএসএল ব্যবহার করছেন - এমনকি যদি আপনি প্রতিটি হ্যাচকে নীচে ফেলে রাখেন তবে আপনার আক্রমণকারী যদি মৃত্যুদণ্ড কার্যকর করার উপায় খুঁজে পায় তবে আপনার ব্রাউজার ক্রিপ্টো এখনও ব্যর্থ হতে পারে অন্য কারও ব্রাউজারে জাভাস্ক্রিপ্ট কোড।

আপনি জাভাস্ক্রিপ্ট ক্লায়েন্ট ব্যবহার করতে চাইলে এটি প্রচুর পরিমাণে RESTful প্রমাণীকরণের স্কিমকে অসম্ভব বা নির্বিকার করে। দেখা যাক!

এইচটিটিপি বেসিক আথ

প্রথম এবং সর্বাগ্রে, এইচটিটিপি বেসিক আথ। সহজতম স্কিম: প্রতিটি অনুরোধের সাথে কেবল একটি নাম এবং পাসওয়ার্ড পাস করুন।

এটি অবশ্যই SSL এর প্রয়োজন, কারণ আপনি প্রতিটি অনুরোধের সাথে একটি বেস 64 (বিপরীতভাবে) এনকোডড নাম এবং পাসওয়ার্ডটি পাস করছেন। যে কেউ লাইনে শুনছেন তারা তুচ্ছভাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড বের করতে পারবেন। বেশিরভাগ "বেসিক অ্যাথটি নিরাপত্তাহীন" যুক্তিগুলি "বেসিক অ্যাথ ওভার এইচটিটিপি" র একটি জায়গা থেকে আসে যা একটি ভয়ঙ্কর ধারণা।

ব্রাউজারটি বেকড-ইন এইচটিটিপি বেসিক অ্যাথ সমর্থন সরবরাহ করে তবে এটি পাপ হিসাবে কুৎসিত এবং আপনার অ্যাপ্লিকেশনটির জন্য সম্ভবত এটি ব্যবহার করা উচিত নয়। বিকল্প, যদিও, জাভাস্ক্রিপ্টে ব্যবহারকারীর নাম এবং পাসওয়ার্ড স্ট্যাশ করা হয়।

এটি সবচেয়ে বিশ্রামযুক্ত সমাধান ful সার্ভারের কোনও অবস্থার কোনও জ্ঞানের প্রয়োজন নেই এবং ব্যবহারকারীর সাথে প্রতিটি পৃথক মিথস্ক্রিয়াকে প্রমাণীকরণ করে। কিছু REST উত্সাহী (বেশিরভাগ স্ট্রোম্যান) জোর দিয়ে বলেন যে কোনও প্রকারের রাজ্য বজায় রাখা মিথ্যাবাদী এবং যদি আপনি অন্য কোনও প্রমাণীকরণের পদ্ধতিটি মনে করেন তবে তা মুখের সামনে পড়ে যাবে। এই ধরণের মান-সম্মতিতে তাত্ত্বিক সুবিধাগুলি রয়েছে - এটি আপাচি বক্সের বাইরে সমর্থিত - আপনি যদি আপনার হৃদয় পছন্দ করেন তবে আপনি htaccess ফাইল দ্বারা সুরক্ষিত ফোল্ডারে ফাইলগুলিতে আপনার বস্তু সংরক্ষণ করতে পারেন!

সমস্যা ? আপনি ক্লায়েন্ট-সাইডে একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ডে ক্যাচ করছেন। এটি এপ্লাই.আর কে আরও ভাল ক্র্যাক দেয় - এমনকি এক্সএসএস দুর্বলতার সবচেয়ে মৌলিকতার ফলে ক্লায়েন্ট তার ব্যবহারকারীর নাম এবং পাসওয়ার্ডকে একটি খারাপ সার্ভারে বিমিং করতে পারে। পাসওয়ার্ডটি হ্যাশ করে এবং সল্ট দিয়ে আপনি এই ঝুঁকি হ্রাস করার চেষ্টা করতে পারেন, তবে মনে রাখবেন: জাভাস্ক্রিপ্ট ক্রিপ্টো হতাশ । আপনি ব্রাউজারের বুনিয়াদি এথ সমর্থনকে রেখে এই ঝুঁকি হ্রাস করতে পারেন, তবে .. পাপ হিসাবে কুরুচিপূর্ণ, যেমনটি পূর্বে উল্লিখিত হয়েছে।

এইচটিটিপি ডাইজেস্ট আথ

JQuery দিয়ে ডাইজেস্ট প্রমাণীকরণ কি সম্ভব?

আরও একটি "সুরক্ষিত" লেখক, এটি একটি অনুরোধ / প্রতিক্রিয়া হ্যাশ চ্যালেঞ্জ। জাভাস্ক্রিপ্ট ব্যতীত ক্রিপ্টো হতাশহীন , সুতরাং এটি কেবল এসএসএল-এ কাজ করে এবং আপনাকে এখনও ক্লায়েন্ট পক্ষের ব্যবহারকারীর নাম এবং পাসওয়ার্ড ক্যাশে করতে হবে, এটি HTTP বেসিক এথের চেয়ে জটিল করে তোলে তবে আর নিরাপদ হয় না

অতিরিক্ত স্বাক্ষর পরামিতিগুলির সাথে প্রমাণীকরণের অনুসন্ধান করুন।

আরেকটি আরও "সুরক্ষিত" প্রমাণীকরণ, যেখানে আপনি আপনার পরামিতিগুলি ননস এবং টাইমিং ডেটা (পুনরাবৃত্তি এবং সময় আক্রমণ থেকে রক্ষা করতে) দিয়ে এনক্রিপ্ট করেন এবং পাঠান। এর সর্বোত্তম উদাহরণগুলির মধ্যে একটি হ'ল ওআউথ ০.০ প্রোটোকল, যা আমি যতদুর জানি, একটি আরএসটি সার্ভারে প্রমাণীকরণ প্রয়োগের একটি দুর্দান্ত স্টোনকিং উপায়।

http://tools.ietf.org/html/rfc5849

ওহ, তবে জাভাস্ক্রিপ্টের জন্য কোনও OAuth 1.0 ক্লায়েন্ট নেই। কেন?

জাভাস্ক্রিপ্ট ক্রিপ্টো হতাশ , মনে আছে। জাভাস্ক্রিপ্টটি এসএসএল ছাড়াই ওআউথ ১.০ এ অংশ নিতে পারে না এবং আপনাকে এখনও ক্লায়েন্টটির ব্যবহারকারীর নাম এবং পাসওয়ার্ড স্থানীয়ভাবে সংরক্ষণ করতে হবে - যা এটিকে ডাইজেস্ট আথের মতো একই বিভাগে রাখে - এটি এইচটিটিপি বেসিক লেখার চেয়ে জটিল তবে এটি আর নিরাপদ নয়

টোকেন

ব্যবহারকারী একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করে এবং বিনিময়ে একটি টোকেন পায় যা অনুরোধগুলি প্রমাণীকরণ করতে ব্যবহার করা যেতে পারে।

এটি HTTP বেসিক এথের তুলনায় প্রান্তিকভাবে সুরক্ষিত, কারণ ব্যবহারকারীর নাম / পাসওয়ার্ডের লেনদেন শেষ হওয়ার সাথে সাথে আপনি সংবেদনশীল ডেটা বাতিল করতে পারেন। টোকেনগুলি "রাজ্য" গঠন করে এবং সার্ভার বাস্তবায়নকে আরও জটিল করে তোলে বলে এটি কম কম রেস্টওফুলও।

এসএসএল এখনও

যদিও ঘষা, আপনি এখনও একটি টোকেন পেতে যে প্রাথমিক ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করতে হবে। সংবেদনশীল তথ্য এখনও আপনার আপোসযুক্ত জাভাস্ক্রিপ্টকে স্পর্শ করে।

আপনার ব্যবহারকারীর শংসাপত্রগুলি সুরক্ষিত করার জন্য, আপনাকে এখনও আক্রমণকারীদের আপনার জাভাস্ক্রিপ্টের বাইরে রাখতে হবে, এবং তারপরে আপনাকে এখনও একটি ব্যবহারকারী নাম এবং পাসওয়ার্ড প্রেরণ করতে হবে। এসএসএল প্রয়োজনীয়।

টোকেনের সমাপ্তি

"হেই, যখন এই টোকেনটি প্রায় দীর্ঘ হয়ে গেছে, এটিকে বাতিল করুন এবং ব্যবহারকারীকে আবার প্রমাণীকরণ করুন" এর মতো টোকন নীতি প্রয়োগ করা সাধারণ। বা "আমি নিশ্চিত যে এই টোকেনটি ব্যবহারের জন্য অনুমোদিত একমাত্র আইপি ঠিকানাটি XXX.XXX.XXX.XXX"। এর মধ্যে অনেকগুলি নীতিই বেশ ভাল ধারণা।

Firesheeping

তবে এসএসএল ব্যতীত একটি টোকেন ব্যবহার করা এখনও 'সাইডজ্যাকিং' নামক আক্রমণটির পক্ষে ঝুঁকিপূর্ণ: http://codebutler.github.io/firesheep/

আক্রমণকারী আপনার ব্যবহারকারীর শংসাপত্রগুলি পাবে না তবে তারা এখনও আপনার ব্যবহারকারী হওয়ার ভান করতে পারে, এটি বেশ খারাপ হতে পারে।

tl; dr: তারের উপরে এনক্রিপ্ট করা টোকেনগুলি প্রেরণের অর্থ হানাদাররা সহজেই সেই টোকেনগুলিকে ধরতে পারে এবং আপনার ব্যবহারকারী হিসাবে ভান করতে পারে। ফায়ারশিপ এমন একটি প্রোগ্রাম যা এটি খুব সহজ করে তোলে।

একটি পৃথক, আরও সুরক্ষিত অঞ্চল

আপনি যে অ্যাপ্লিকেশনটি চালাচ্ছেন তত বেশি শক্ত, এটি একেবারে নিশ্চিত করা যে তারা এমন কিছু কোড ইনজেক্ট করতে সক্ষম হবে না যা আপনার সংবেদনশীল ডেটার প্রক্রিয়াটি পরিবর্তন করে। আপনি কি আপনার সিডিএনকে পুরোপুরি বিশ্বাস করেন? আপনার বিজ্ঞাপনদাতারা? আপনার নিজস্ব কোড বেস?

ক্রেডিট কার্ডের বিশদগুলির জন্য সাধারণ এবং ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য কম সাধারণ - কিছু প্রয়োগকারীরা তাদের প্রয়োগের বাকী অংশ থেকে পৃথক পৃষ্ঠায় 'সংবেদনশীল ডেটা এন্ট্রি' রাখেন, এমন একটি পৃষ্ঠা যা দৃ controlled়ভাবে নিয়ন্ত্রণ করা যায় এবং যথাসম্ভব সর্বোত্তমভাবে লক করা যায়, সম্ভবত এটির একটি ব্যবহারকারীদের সাথে ফিশ করা কঠিন।

কুকি (কেবল অর্থ টোকেন)

কোনও কুকিতে প্রমাণীকরণ টোকেন রাখা সম্ভব (এবং সাধারণ)। এটি টোকেন সহ লেখকের কোনও বৈশিষ্ট্য পরিবর্তন করে না, এটি সুবিধামত জিনিস। পূর্ববর্তী সমস্ত যুক্তি এখনও প্রয়োগ হয়।

সেশন (এখনও ঠিক টোকেন অর্থ)

সেশন অথ হ'ল টোকেন প্রমাণীকরণ, তবে কয়েকটি পার্থক্যের সাথে এটি কিছুটা আলাদা জিনিস বলে মনে হচ্ছে:

  • ব্যবহারকারীরা অননুমোদিত টোকেন দিয়ে শুরু করে।
  • ব্যাকএন্ড একটি 'স্টেট' অবজেক্টটি বজায় রাখে যা ব্যবহারকারীর টোকেনের সাথে আবদ্ধ।
  • টোকেন একটি কুকিতে সরবরাহ করা হয়।
  • অ্যাপ্লিকেশন পরিবেশটি আপনার থেকে বিশদ বিবরণ বিমূর্ত করে।

এটি বাদ দিয়ে, যদিও এটি টোকেন আথের থেকে আলাদা নয়, সত্যই।

এটি একটি বিশিষ্ট বাস্তবায়ন থেকে আরও ঘুরে বেড়ায় - রাষ্ট্রীয় বস্তুগুলির সাথে আপনি আরও সরু রাজ্যের সার্ভারে আরপিকের সরল পথে আরও এগিয়ে যাচ্ছেন।

OAuth 2.0

ওআউথ ২.০ "" সফটওয়্যার এ কীভাবে সফটওয়্যার বি ব্যবহারকারীর এক্স এর লগইন শংসাপত্রগুলিতে অ্যাক্সেস না থাকা সফটওয়্যার বি ছাড়াই ব্যবহারকারী এক্স এর ডেটাতে সফটওয়্যার বি অ্যাক্সেস দেয় "এর সমস্যাটি দেখায়।

ব্যবহারকারীর টোকেন পাওয়ার জন্য বাস্তবায়নটি কেবলমাত্র একটি স্ট্যান্ডার্ড উপায় এবং তারপরে "হ্যাঁ, এই ব্যবহারকারী এবং এই টোকেনের মিল রয়েছে এবং আপনি এখনই আমাদের কাছ থেকে তাদের কিছু ডেটা পেতে পারেন" ep

মূলত, যদিও, OAuth 2.0 শুধুমাত্র একটি টোকেন প্রোটোকল। এটি অন্যান্য টোকেন প্রোটোকলের মতো একই বৈশিষ্ট্য প্রদর্শন করে - সেই টোকেনগুলি সুরক্ষিত করার জন্য আপনার এখনও এসএসএল দরকার - এই টোকেনগুলি কীভাবে উত্পন্ন হয় তা ঠিক পরিবর্তিত হয়।

দুটি উপায় রয়েছে যা OAuth 2.0 আপনাকে সহায়তা করতে পারে:

  • অন্যকে প্রমাণীকরণ / তথ্য সরবরাহ করা
  • অন্যের কাছ থেকে প্রমাণীকরণ / তথ্য প্রাপ্তি

তবে এটি যখন নেমে আসে, আপনি কেবল ... টোকেন ব্যবহার করছেন।

আপনার প্রশ্ন ফিরে

সুতরাং, আপনি যে প্রশ্নটি জিজ্ঞাসা করছেন তা হ'ল "আমি কি আমার টোকেনটি একটি কুকিতে সংরক্ষণ করি এবং আমার পরিবেশের স্বয়ংক্রিয় সেশন ম্যানেজমেন্টের বিশদটি যত্ন নিতে পারি, না আমার জাভাস্ক্রিপ্টে আমার টোকেন সংরক্ষণ করা উচিত এবং সেই বিবরণগুলি নিজেই পরিচালনা করা উচিত?"

এবং উত্তরটি হ'ল: আপনাকে যা খুশি করে তাই করুন

স্বয়ংক্রিয় অধিবেশন পরিচালনার বিষয়টি হ'ল আপনার পর্দার আড়ালে প্রচুর যাদু ঘটছে। এই বিবরণগুলি নিজেরাই নিয়ন্ত্রণ করা প্রায়শই ভাল।

আমি 21 বছরের তাই এসএসএল হ্যাঁ

অন্য উত্তরটি হ'ল: https ব্যবহার করুন বা ব্রিগেডগুলি আপনার ব্যবহারকারীর পাসওয়ার্ড এবং টোকেন চুরি করবে।


3
দুর্দান্ত উত্তর। আমি টোকেন লেখক সিস্টেম এবং বেসিক কুকি অথের মধ্যে সমতা (যা প্রায়শই ওয়েব ফ্রেমওয়ার্কে অন্তর্নির্মিত হয়) প্রশংসা করি। এটি আমি যা খুঁজছিলাম তা সাজানোর। আমি আপনাকে বিবেচনার জন্য অনেক সম্ভাব্য বিষয় কভার প্রশংসা করি। চিয়ার্স!
ক্রিস নিকোলা

11
আমি জানি এটি কিছুক্ষণ হয়ে গেছে তবে আমি ভাবছি যে জেডাব্লুটি অন্তর্ভুক্ত করার জন্য এটি কি বাড়ানো উচিত? auth0.com/blog/2014/01/07/…
ক্রিস নিকোলা

14
টোকেন It's also less RESTful, as tokens constitute "state and make the server implementation more complicated." (1) REST এর জন্য সার্ভারকে স্টেটলেস থাকতে হবে। একটি টোকেন সঞ্চিত ক্লায়েন্ট-সাইড সার্ভারের জন্য কোনও অর্থবহ উপায়ে রাষ্ট্রের প্রতিনিধিত্ব করে না। (২) প্রান্তিকভাবে আরও জটিল সার্ভার-সাইড কোডটির RESTfulness এর সাথে কোনও সম্পর্ক নেই।
স্যুপডগ

10
lol_nope_send_it_to_me_insteadআমি এই ফাংশনটির নামটি পছন্দ করেছি: ডি
লিও

6
আপনি যে বিষয়টিকে অগ্রাহ্য করেছেন বলে মনে হচ্ছে: কুকিগুলি এক্সএসএস নিরাপদ যখন কেবলমাত্র কেবলমাত্র চিহ্নিত করা হয়, এবং সুরক্ষিত এবং একই সাইটের সাথে আরও লকড করা যায়। এবং কুকি হ্যান্ডলিং প্রায় দীর্ঘ দীর্ঘ হয়েছে === আরও যুদ্ধ কঠোর। টোকেন সুরক্ষা পরিচালনা করতে জেএস এবং স্থানীয় স্টোরেজে নির্ভর করা বোকামি খেলা।
মার্টিজন পিটারস

57

আপনি জেডব্লিউটি (জেএসএন ওয়েব টোকেন) এবং এসএসএল / এইচটিটিপিএস ব্যবহার করে প্রমাণীকরণ প্রক্রিয়াতে সুরক্ষা বাড়িয়ে তুলতে পারেন ।

বেসিক এথ / সেশন আইডি এর মাধ্যমে চুরি করা যেতে পারে:

  • এমআইটিএম আক্রমণ (ম্যান-ইন-দি-মিডল) - এসএসএল / এইচটিটিপিএস ছাড়াই
  • একজন অনুপ্রবেশকারী একটি ব্যবহারকারীর কম্পিউটারে অ্যাক্সেস অর্জন করছে
  • পদ্ধতি এটা XSS

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

নতুন (আরও সুরক্ষিত) প্রবাহটি হ'ল:

প্রবেশ করুন

  • ব্যবহারকারী লগ ইন করে এবং এপিআই-তে লগ ইন শংসাপত্রগুলি প্রেরণ করে (SSL / HTTPS এর মাধ্যমে)
  • এপিআই লগইন শংসাপত্রগুলি গ্রহণ করে
  • বৈধ হলে:
    • ডাটাবেস রিড আপডেটে একটি নতুন সেশনের নিবন্ধন করুন
    • একটি ব্যক্তিগত কী সহ জেডাব্লুটিটিতে ইউজার আইডি, সেশন আইডি, আইপি ঠিকানা, টাইমস্ট্যাম্প ইত্যাদি এনক্রিপ্ট করুন।
  • এপিআই JWT টোকেনটি ক্লায়েন্টকে ফেরত পাঠায় (এসএসএল / এইচটিটিপিএস এর মাধ্যমে)
  • ক্লায়েন্ট জেডাব্লুটি টোকেন এবং লোকালস্টোরেজ / কুকিতে স্টোরগুলি গ্রহণ করে

প্রতিটি অনুরোধ API এ

  • ব্যবহারকারী এইচটিটিপি শিরোনামে সঞ্চিত জেডাব্লুটি টোকেন সহ এপিআইকে (এসএসএল / এইচটিটিপিএস এর মাধ্যমে) একটি HTTP অনুরোধ প্রেরণ করে
  • এপিআই এইচটিটিপি শিরোনাম পড়ে এবং তার ব্যক্তিগত কী দিয়ে জেডাব্লুটি টোকেনটি ডিক্রিপ্ট করে p
  • এপিআই জেডাব্লুটি টোকেনকে বৈধতা দেয়, এইচটিটিপি অনুরোধের সাথে আইপি ঠিকানাটি জেডাব্লুটি টোকেনের সাথে মিলিত করে এবং সেশনটির মেয়াদ শেষ হয়ে গেছে কিনা তা পরীক্ষা করে
  • বৈধ হলে:
    • অনুরোধ করা সামগ্রী সহ প্রতিক্রিয়া ফেরান
  • যদি অবৈধ:
    • ব্যতিক্রম ছোঁড়া (403/401)
    • সিস্টেমে ফ্ল্যাগ অনুপ্রবেশ
    • ব্যবহারকারীকে একটি সতর্কতা ইমেল প্রেরণ করুন।

30.07.15 আপডেট হয়েছে:

জেডব্লিউটি পে-লোড / দাবিগুলি প্রকৃতপক্ষে ব্যক্তিগত কী (গোপন) ব্যতীত পঠন করা যায় এবং এটি স্থানীয় স্টোরেজে সংরক্ষণ করা নিরাপদ নয়। আমি এই মিথ্যা বিবৃতি সম্পর্কে দুঃখিত। তবে তারা মনে হয় যে তারা JWE স্ট্যান্ডার্ড (JSON ওয়েব এনক্রিপশন) এ কাজ করছে

আমি জেডাব্লুটিটিতে দাবি (ইউজারআইডি, এক্সপ্রেস) সংরক্ষণ করে এটি প্রয়োগ করেছি, এটি একটি প্রাইভেট কী (গোপন) দিয়ে সাইন করেছেন, ক্লায়েন্টে এটি কেবল নিরাপদ এইচটিটিপিওনলি কুকি হিসাবে জানে এবং সংরক্ষণ করে। সেভাবে এটি এক্সএসএসের মাধ্যমে পড়া যায় না এবং ম্যানিপুলেট করা যায় না, অন্যথায় JWT স্বাক্ষর যাচাইকরণ ব্যর্থ করে f সুরক্ষিত এইচটিপিপি কেবলমাত্র কুকি ব্যবহার করে আপনি নিশ্চিত করে নিচ্ছেন যে কুকি কেবল এইচটিটিপি অনুরোধের মাধ্যমে প্রেরণ করা হয়েছে (স্ক্রিপ্টে অ্যাক্সেসযোগ্য নয়) এবং কেবল সুরক্ষিত সংযোগ (এইচটিটিপিএস) এর মাধ্যমে প্রেরণ করা হয়েছে।

17.07.16 আপডেট হয়েছে:

জেডব্লিউটিস প্রকৃতির দ্বারা রাষ্ট্রহীন। তার অর্থ তারা নিজেরাই অবৈধ / মেয়াদ শেষ করে। টোকেনের দাবীতে সেশনআইডি যুক্ত করে আপনি এটিকে রাষ্ট্রীয় করে তুলছেন, কারণ এর বৈধতা এখন কেবল স্বাক্ষর যাচাইকরণ এবং মেয়াদোত্তীকরণের তারিখের উপর নির্ভর করে না, এটি সার্ভারের সেশন স্টেটের উপরও নির্ভর করে। তবে উল্টোটি হল আপনি সহজেই টোকেন / সেশনগুলি অকার্যকর করতে পারেন, যা আপনি স্টেটলেস জেডাব্লুটিটি দিয়ে আগে করতে পারেন নি।


1
শেষ পর্যন্ত কোনও জেডাব্লুটিটি সুরক্ষা দৃষ্টিকোণ থেকে আমার মনে হয় এখনও 'কেবল একটি টোকেন'। সার্ভারটি এখনও ইউজার আইডি, আইপি ঠিকানা, টাইমস্ট্যাম্প ইত্যাদিকে একটি অস্বচ্ছ সেশন টোকেনের সাথে সংযুক্ত করতে পারে এবং এটি কোনও জেডাব্লুটি এর চেয়ে বেশি বা কম সুরক্ষিত হবে না। তবে জেডাব্লুটিটির রাষ্ট্রহীন প্রকৃতি বাস্তবায়নকে আরও সহজ করে তোলে।
জেমস

1
@ জেমস জেএমডাব্লুটির কাছে যাচাইযোগ্য এবং মূল বিবরণ বহন করতে সক্ষম হওয়ার সুবিধা রয়েছে। ক্রস-ডোমেন প্রবন্ধের প্রয়োজন মতো এমন বিভিন্ন এপিআই পরিস্থিতিতে এটি বেশ কার্যকর। কোনও সেশন এর পক্ষে ভাল হবে না। এটি একটি সংজ্ঞায়িত (বা কমপক্ষে অগ্রগতিতে) অনুশীলন, যা বাস্তবায়নের জন্য কার্যকর। এটি অন্য কোনও ভাল টোকেন বাস্তবায়নের চেয়ে আরও ভাল এটি বলার অপেক্ষা রাখে না, তবে এটি ভাল সংজ্ঞায়িত এবং সুবিধাজনক।
ক্রিস নিকোলা

1
@ ক্রিস হ্যাঁ আমি আপনার সমস্ত পয়েন্টের সাথে একমত তবে উপরের উত্তরে বর্ণিত প্রবাহটি জেডাব্লুটিটি ব্যবহারের কারণে দাবি করা স্বভাবতই আরও নিরাপদ প্রবাহ নয়। তদ্ব্যতীত, উপরে বর্ণিত স্কিমটিতে জেডাব্লুটিটি প্রত্যাহারযোগ্য নয় আপনি যদি সার্ভারে জেডব্লিউটি এবং স্টোর স্টেটের সাথে কোনও সনাক্তকারীকে যুক্ত করেন না। অন্যথায় আপনার হয় নিয়মিতভাবে ব্যবহারকারীর নাম / পাসওয়ার্ড (দুর্বল ব্যবহারকারীর অভিজ্ঞতা) এর অনুরোধ করে একটি নতুন জেডব্লিউটি পেতে বা খুব দীর্ঘ মেয়াদোত্তীর্ণ সময় (একটি টোকেন চুরি হয়ে গেলে খারাপ) দিয়ে জেডাব্লুটি ইস্যু করতে হবে।
জেমস

1
আমার উত্তরটি 100% সঠিক নয়, কারণ জেডব্লিউটিটি ব্যক্তিগত কী (গোপন) ব্যতীত ডিক্রিপ্ট করা / পড়তে পারে এবং এটি স্থানীয় স্টোরেজে সংরক্ষণ করা নিরাপদ নয়। আমি জেডাব্লুটিটিতে দাবি (ইউজারআইডি, এক্সপ্রেস) সংরক্ষণ করে এটি প্রয়োগ করেছি, এটি একটি প্রাইভেট কী (গোপন) দিয়ে সাইন করেছেন, ক্লায়েন্টে এটি এইচটিপিওনলি কুকি হিসাবে কেবল জানে এবং এটি সংরক্ষণ করে। এইভাবে এটি এক্সএসএস দ্বারা পড়া যায় না। তবে আপনাকে এইচটিটিপিএস ব্যবহার করতে হবে কারণ টোকেনটি এমআইটিএম আক্রমণে চুরি হতে পারে। আমি এর উপর প্রতিফলিত করতে আমার উত্তর আপডেট করব।
গৌই

1
@vsenko কুকি ক্লায়েন্টের প্রতিটি অনুরোধের সাথে প্রেরণ করা হয়। আপনি জেএস থেকে কুকি অ্যাক্সেস করেন না, এটি ক্লায়েন্টের থেকে API এ প্রতিটি HTTP অনুরোধের সাথে আবদ্ধ tied
গউই

7

আমি দ্বিতীয়, টোকেন সিস্টেমের জন্য যেতে হবে।

আপনি কি অ্যাম্বার-আথ বা এমবার-সিম্পল-এথ সম্পর্কে জানতেন ? তারা উভয়ই টোকেন ভিত্তিক সিস্টেমটি ব্যবহার করেন, যেমন অ্যাম্বার-সিম্পল-অথথ স্টেটস:

এমবার.জেএস অ্যাপ্লিকেশনগুলিতে টোকেন ভিত্তিক প্রমাণীকরণ প্রয়োগের জন্য একটি হালকা ও অবিচ্ছিন্ন গ্রন্থাগার। http://ember-simple-auth.simplabs.com

তাদের সেশন ম্যানেজমেন্ট রয়েছে এবং বিদ্যমান প্রকল্পগুলিতেও প্লাগ করা সহজ।

এমবার-সিম্পল-এথের একটি অ্যাম্বার অ্যাপ কিট উদাহরণ সংস্করণও রয়েছে: ওআউথ 2 প্রমাণীকরণের জন্য এমবার-সিম্পল- এথ ব্যবহার করে অ্যাম্বার-অ্যাপ-কিটের কার্যকারী উদাহরণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.