তৃতীয় পক্ষের OAuth সরবরাহকারীদের (ডটনেটওপেনআউথ ব্যবহার করে) মাধ্যমে প্রমাণীকরণের অনুমতি দেওয়ার সময় আমার REST এপিআইটিকে OAuth দিয়ে সুরক্ষিত করা হচ্ছে


138

আমার কাছে সোজা REST এপিআই সহ একটি পণ্য রয়েছে যাতে পণ্যের ব্যবহারকারীরা আমার ওয়েব ব্যবহারকারী ইন্টারফেসটি ব্যবহার না করেই পণ্যের বৈশিষ্ট্যগুলির সাথে সরাসরি সংহত করতে পারেন।

সম্প্রতি আমি তৃতীয় পক্ষের কাছ থেকে তাদের ডেস্কটপ ক্লায়েন্টগুলিকে API এর সাথে সংহত করার বিষয়ে আগ্রহী হয়ে উঠছি যাতে আমার পণ্য ব্যবহারকারীদের সেই তৃতীয় পক্ষের অ্যাপ্লিকেশনটি ব্যবহার করে তাদের ডেটা অ্যাক্সেস করতে দেয়।

আমি দেখেছি যে অ্যাপ্লিকেশনগুলি টুইটার দ্বারা হোস্ট করা লগইন পৃষ্ঠা ব্যবহার করে যা ব্যবহারকারীর ডেটা অ্যাক্সেসের জন্য একটি নির্দিষ্ট অ্যাপ্লিকেশন অনুমতি দেয় তা ব্যবহার করে প্রমাণীকরণ করতে চায় applications আপনি "অনুমতি দিন" বা "অস্বীকার করুন" বোতামটি ক্লিক করুন এবং প্রমাণীকরণ প্রক্রিয়াটি সম্পূর্ণ। ফেসবুক আমি যেভাবে বলতে পারি তার মতো একই পদ্ধতি ব্যবহার করে।

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

আমি সত্যিই যা করতে চাই তা হল আমার ওয়েব অ্যাপ্লিকেশনটির জন্য আমার সমস্ত প্রামাণিকতা এবং ব্যবসায়িক যুক্তি হ্যান্ডল হ'ল এবং হুডের অধীনে, আমার ওয়েব অ্যাপ্লিকেশনটি মূলত অন্য অ্যাপ্লিকেশন যা কেবলমাত্র OAuth এর মাধ্যমে API ব্যবহার করে। ব্যবহারকারীরা সরাসরি তাদের ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে বা তৃতীয় পক্ষের সরবরাহকারী যেমন মাইওপেনআইডি বা ফেসবুকের মাধ্যমে ওয়েবসাইটটিতে প্রমাণীকরণ করবে এবং তারপরে ওয়েবসাইটটি কোনওভাবেই আরএসটি এপিআইয়ের বিরুদ্ধে প্রমাণীকরণের জন্য প্রত্যাবর্তিত টোকেনটি ব্যবহার করবে।

আর্কিটেকচারাল ডায়াগ্রাম

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

আমার কী কী পদক্ষেপ গ্রহণ করা দরকার তা সম্পর্কে কেউ আমাকে কমপক্ষে একটি বিস্তৃত ওভারভিউ দিতে পারে, বা এটি ঘটানোর জন্য আমার কী দেখার উচিত? বা কিছু টিউটোরিয়াল আমাকে দেখায়? বা আমার প্রস্তাবটি ব্লাস্ট করুন এবং আমাকে বলুন যে আমি এগুলি (স্থপতি) সমস্ত ভুল করছি?


হাই নাথান, আপনি এখানে বর্ণনা করার সাথে সাথে আমিও একইরকম দৃশ্যের সাথে লড়াই করছি এবং ভাবছিলাম যে আমার এপিআই স্ট্যাকওভারফ্লো.com/ এর
জ্যামার

উত্তর:


123

প্রথমে আমি প্রমাণীকরণ এবং অনুমোদনের মধ্যে পার্থক্যের উপর জোর দিতে চাই:

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

কোনও পরিষেবা বা অ্যাপ্লিকেশন আপনার ওয়েবসাইটে প্রমাণীকরণ করে না - কমপক্ষে সাধারণত না। একজন ব্যবহারকারী অনুমোদন অ্যাক্সেস করতে ব্যবহারকারীর ডেটা একটি পরিষেবা বা আবেদন। এটি সাধারণত পরিষেবা সরবরাহকারীর অনুমোদনের অনুরোধ করে অ্যাপ্লিকেশন দ্বারা করা হয়, তারপরে ব্যবহারকারীকে পরিষেবা সরবরাহকারীর কাছে প্রেরণ করে, যেখানে ব্যবহারকারী প্রথমে প্রমাণীকরণ করে (সুতরাং পরিষেবা প্রদানকারী জানেন যার সাথে এটি কথা বলছে) এবং তারপরে ব্যবহারকারী সাইটে "হ্যাঁ, [অ্যাপ্লিকেশন] এর জন্য আমার ডেটা অ্যাক্সেস করা ঠিক আছে [কিছুটা সীমাবদ্ধ উপায়ে] "। তারপরে, অ্যাপ্লিকেশনটি একটি অনুমোদনের টোকেন ব্যবহার করেপরিষেবা প্রদানকারী সাইটে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে to নোট করুন যে অ্যাপ্লিকেশনটি নিজেকে ব্যবহারকারীর মতো করে প্রমাণীকরণ করে না, তবে পরিষেবাটি নিশ্চিত করার জন্য এটি অন্য কোড ব্যবহার করে যে এটি কোনও নির্দিষ্ট ব্যবহারকারীর ডেটা অ্যাক্সেসের জন্য অনুমোদিত।

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

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

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

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

আমার সন্দেহ হয় অনুমোদনের সামনের অংশে আপনার কিছু করার দরকার নেই। আমি আগেই বলেছিলাম এটি ওউথের সাথে আসে এবং সম্ভবত এটি আপনার পক্ষে যথেষ্ট।


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

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

আমি কি OAuth ছাড়া REST এপিআই ব্যবহার করতে পারি? @ অ্যান্ড্রু আরনট
মণি

অবশ্যই. সমস্ত বিশ্রামের API গুলি মোটেই প্রমাণীকরণের প্রয়োজন হয় না। এবং ওউথ একমাত্র লেখক প্রক্রিয়া নয়।
অ্যান্ড্রু আর্নট

11

সবার আগে। প্রমাণীকরণের পদ্ধতিগুলি থেকে - আপনার এপিআই কী তা মানসিকভাবে আলাদা করতে হবে।

আপনার এপিআই হ'ল মূলত সংস্থানসমূহ এবং সেই সংস্থানগুলি হস্তান্তর করার পদ্ধতি। এবং আপনার এপিআইতে অ্যাক্সেস প্রমাণীকরণের বিভিন্ন পদ্ধতি থাকতে পারে।

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

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

আমি যতদূর দেখি ওআউথের একমাত্র আসল বিকল্প হ'ল ওআউথ ২.০ এবং কেবল সাধারণ বেসিক প্রমাণীকরণ।

এগুলি ছাড়াও, আপনি ওপেন-আইডি, বা ফেসবুক পরিচয় ইত্যাদি ব্যবহার করে প্রমাণীকরণের বিষয়ে কথা বলছেন yourself এটি আপনাকে নিজের জিজ্ঞাসা করার দরকার অন্য একটি প্রশ্ন। তবে এটি সত্যই API এবং OAuth এর বাইরে। আমার কাছে এটি আপনার পরিষেবাতে ব্যবহারকারী তৈরির প্রশ্নকে আরও বেশি মনে করে। আমার ভুল হতে পারে.


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