api - ओएथ के साथ अपने आरईएसटी एपीआई को सुरक्षित करना जबकि अभी भी तीसरे पक्ष के ओथ प्रदाताओं के माध्यम से प्रमाणीकरण की अनुमति है(DotNetOpenAuth का उपयोग करके)




rest oauth (2)

सबसे पहले मैं प्रमाणीकरण और प्रमाणीकरण के बीच अंतर पर जोर देना चाहता हूं:

उपयोगकर्ता उपयोगकर्ता नाम + पासवर्ड जैसे कुछ क्रेडेंशियल की आपूर्ति करके आपकी वेबसाइट पर प्रमाणित करता है। ओपनआईडी उपयोगकर्ता को किसी अन्य सेवा के लिए प्रमाणित करके विस्थापित करने की अनुमति देता है, जो उपयोगकर्ता की ओर से उपयोगकर्ता की पहचान को आपकी वेबसाइट पर आश्वस्त करता है। आपकी साइट तीसरे पक्ष की सेवा (ओपनआईडी प्रदाता) पर भरोसा करती है और इसलिए उपयोगकर्ता को लॉग इन मानती है।

एक सेवा या एप्लिकेशन आपकी वेबसाइट पर प्रमाणित नहीं होता है - कम से कम आमतौर पर नहीं। उपयोगकर्ता उपयोगकर्ता के डेटा तक पहुंचने के लिए किसी सेवा या एप्लिकेशन को अधिकृत करता है। यह आम तौर पर सेवा प्रदाता के प्रमाणीकरण का अनुरोध करने वाले आवेदन द्वारा किया जाता है, फिर उपयोगकर्ता को सेवा प्रदाता को भेजता है, जहां उपयोगकर्ता पहले प्रमाणित करता है (इसलिए सेवा प्रदाता जानता है कि इसकी बात किसके साथ है) और फिर उपयोगकर्ता साइट पर कहता है "हाँ, [एप्लिकेशन] के लिए मेरे डेटा [कुछ प्रतिबंधित तरीके से] तक पहुंचने के लिए ठीक है "। तब से, एप्लिकेशन सेवा प्रदाता साइट पर उपयोगकर्ता डेटा तक पहुंचने के लिए एप्लिकेशन प्राधिकरण टोकन का उपयोग करता है। ध्यान दें कि एप्लिकेशन स्वयं को प्रमाणीकृत नहीं करता है जैसे कि यह उपयोगकर्ता था, लेकिन यह उस सेवा को आश्वस्त करने के लिए एक और कोड का उपयोग करता है जिसे किसी विशेष उपयोगकर्ता के डेटा तक पहुंचने के लिए अधिकृत किया गया है।

तो उस भेद के साथ स्पष्ट किया गया है, आप प्रमाणीकरण और प्रमाणीकरण के बारे में पूरी तरह स्वतंत्र रूप से अपनी साइट पर निर्णय ले सकते हैं। उदाहरण के लिए, यदि आप चाहते हैं कि आपके उपयोगकर्ता सभी के साथ लॉग इन करने में सक्षम हों: उपयोगकर्ता नाम + पासवर्ड, ओपनआईडी, और फेसबुक, आप ऐसा कर सकते हैं। एक पूरी तरह से ऑर्थोगोनल निर्णय यह है कि आप एप्लिकेशन को कैसे अधिकृत करते हैं (इसके लिए आप कई प्रोटोकॉल का उपयोग कर सकते हैं, ओएथ बिल्कुल लोकप्रिय है)।

ओपनआईडी उपयोगकर्ता प्रमाणीकरण पर केंद्रित है। ओएथ आवेदन प्राधिकरण पर केंद्रित है। हालांकि, फेसबुक और ट्विटर जैसी कुछ सेवाओं ने प्रमाणीकरण के लिए ओपनआईडी और प्रमाणीकरण के लिए ओएथ का उपयोग करने के बजाय प्रमाणीकरण और प्रमाणीकरण के लिए ओएथ का उपयोग करना चुना है।

अब अपनी खुद की परियोजना के लिए, मैं दृढ़ता से अनुशंसा करता हूं कि आप वीएस गैलरी से उपलब्ध एएसपी.नेट एमवीसी 2 ओपनआईडी वेब साइट (सी #) प्रोजेक्ट टेम्पलेट देखें। बॉक्स में से यह ओपनआईडी प्रमाणीकरण और ओथ सेवा प्रदाता समर्थन के साथ आता है। इसका अर्थ है कि आपके उपयोगकर्ता ओपनआईडी के साथ लॉग इन कर सकते हैं, और तृतीय पक्ष एप्लिकेशन और सेवाएं ओएथ का उपयोग आपकी वेबसाइट पर एपीआई कॉल करने और उपयोगकर्ता डेटा तक पहुंचने के लिए कर सकती हैं।

ऐसा लगता है कि जब आप जा रहे हैं तो आप इस प्रोजेक्ट टेम्पलेट में जोड़ना चाहते हैं, यह आपके उपयोगकर्ता के लिए उपयोगकर्ता नाम + पासवर्ड के साथ-साथ ओपनआईडी के साथ लॉग इन करने की क्षमता है। साथ ही, यदि आप चाहते हैं कि फेसबुक और ट्विटर आपके उपयोगकर्ताओं के लिए एक विकल्प हों तो आपको इसे भी लागू करना होगा क्योंकि वे ओपनआईडी मानक का उपयोग नहीं करते हैं। लेकिन DotNetOpenAuth डाउनलोड में ट्विटर और फेसबुक के साथ लॉग इन करने के लिए नमूने शामिल हैं ताकि आपके पास कुछ मार्गदर्शन हो।

मुझे संदेह है कि प्राधिकरण के मोर्चे पर कुछ भी करने के लिए आपके पास बहुत कुछ नहीं होगा। जैसा कि मैंने पहले कहा था, ओएथ के साथ आता है, और यह शायद आपके लिए पर्याप्त होगा।

मेरे पास एक सीधा आरईएसटी एपीआई वाला उत्पाद है ताकि उत्पाद के उपयोगकर्ता सीधे मेरे वेब यूजर इंटरफेस का उपयोग किए बिना उत्पाद की सुविधाओं के साथ एकीकृत हो सकें।

हाल ही में मुझे अपने तीसरे पक्ष के एपीआई के साथ अपने डेस्कटॉप क्लाइंट को एकीकृत करने के बारे में रुचि प्राप्त हो रही है ताकि मेरे उत्पाद के उपयोगकर्ताओं को उस तीसरे पक्ष के आवेदन का उपयोग करके अपने डेटा तक पहुंच सकें।

मैंने देखा है कि ट्विटर द्वारा होस्ट किए गए लॉगिन पेज का उपयोग करके ट्विटर का उपयोग करना चाहते हैं जो उपयोगकर्ता के डेटा तक पहुंचने के लिए एक विशिष्ट एप्लिकेशन अनुमति प्रदान करते हैं। आप "अनुमति दें" या "अस्वीकार करें" बटन पर क्लिक करें और प्रमाणीकरण प्रक्रिया पूरी हो गई है। फेसबुक उसी तंत्र का उपयोग करता है जैसा कि मैं बता सकता हूं।

आगे के शोध पर, यह कार्रवाई में ओएथ लगता है, और मेरी एपीआई के रूप में देख रहा है। नेट-आधारित, मुझे लगता है कि मुझे डॉटनेट ओपेनएथ का उपयोग करना चाहिए और एक समान तंत्र प्रदान करना चाहिए। दुर्भाग्यवश नमूनों को कम से कम दस्तावेज किया गया है (यदि बिलकुल नहीं) और ऑनलाइन खोजे जाने वाले एकमात्र ट्यूटोरियल आपको अपने उपयोगकर्ताओं के लिए लॉगिन तंत्र प्रदान करने में मदद करने पर केंद्रित हैं ताकि वे किसी तृतीय पक्ष प्रदाता का उपयोग करके आपकी वेबसाइट में लॉग इन कर सकें।

मैं वास्तव में क्या करना चाहता हूं, मेरे आरईएसटी एपीआई में मेरे वेब एप्लिकेशन के लिए सभी मूल प्रमाणीकरण और व्यावसायिक तर्क हैंडल हैं और हुड के तहत, मेरा वेब एप्लिकेशन अनिवार्य रूप से एक और एप्लीकेशन है जो ओएथ के माध्यम से एपीआई का उपयोग करता है। उपयोगकर्ता वेबसाइट पर या तो सीधे अपने उपयोगकर्ता नाम और पासवर्ड का उपयोग कर, या किसी तृतीय पक्ष प्रदाता जैसे MyOpenID या Facebook के माध्यम से प्रमाणित करेंगे और फिर वेबसाइट किसी भी तरह से आरईएसटी एपीआई के खिलाफ प्रमाणीकृत करने के लिए लौटे टोकन का उपयोग करेगी।

यह मूल रूप से ऐसा लगता है कि किसी भी तरह से ओएथ सेवा होस्ट करने के लिए मुझे अपने एपीआई की आवश्यकता है, लेकिन उपयोगकर्ता भी तीसरी पार्टी ओथ सेवा का उपयोग करते हैं। मैं मदद नहीं कर सकता लेकिन सोचता हूं कि मुझे ओएथ पर पर्याप्त समझ नहीं है कि मैं चीजों को खत्म कर रहा हूं या यदि मैं जो करने की कोशिश कर रहा हूं वह चीजों को करने का एक अच्छा या बुरा तरीका है।

क्या कोई मुझे कम से कम उन कदमों का व्यापक अवलोकन दे सकता है जिन्हें मुझे करने की ज़रूरत है, या ऐसा करने के लिए मुझे क्या देखना चाहिए? या मुझे कुछ ट्यूटोरियल पर इंगित करें? या मेरे प्रस्ताव को विस्फोट करें और मुझे बताओ कि मैं इस बारे में (वास्तुशिल्प) सभी गलत हूं?


सबसे पहले। प्रमाणीकरण के तरीकों से आपको मानसिक रूप से अलग करना होगा कि आपका एपीआई क्या है।

आपका एपीआई मूल रूप से संसाधन है, और उन संसाधनों में हेरफेर करने के तरीकों। और आपके पास एपीआई तक पहुंच प्रमाणीकृत करने के कई तरीके हो सकते हैं।

ओथ एक ऐसी प्रमाणीकरण तंत्र है। ओएथ प्रदाता होने के नाते बहुत अच्छा है, भले ही विनिर्देशन को समझने में थोड़ा मुश्किल हो, विशेष रूप से उन भागों को जिन्हें हस्ताक्षर के साथ करना है। एक बार जब आपके पास ओएथ हो, तो ग्राहक अनुप्रयोगों में आमतौर पर प्रमाणीकरण करने में आसान समय होता है, क्योंकि अधिकांश भाषाओं में उपलब्ध पुस्तकालयों के बहुत सारे "ओपन सोर्स, पहले से ही किए गए हैं, बस कार्यान्वित करें" हैं।

ओथ के पेशेवरों और विपक्ष को कुछ समय से बहस कर दी गई है। लेकिन अपनी राय बनाने के लिए, मैं ओएथ हैमर-लाहव द्वारा लिखित इस निश्चित मार्गदर्शिका को पढ़ने का सुझाव देता हूं , ओथ विनिर्देश के लिए जिम्मेदार लोगों में से एक।

जहां तक ​​मैं इसे देखता हूं, ओएथ के लिए एकमात्र असली विकल्प ओएथ 2.0 और बस सरल बुनियादी प्रमाणीकरण हैं।

इसके अलावा, आप ओपन-आईडी, या फेसबुक पहचान इत्यादि का उपयोग करके प्रमाणीकरण के बारे में बात कर रहे हैं। यह एक और सवाल है जिसे आपको खुद से पूछने की आवश्यकता है। लेकिन यह वास्तव में एपीआई और ओएथ के दायरे से बाहर आता है। मेरे लिए, यह आपकी सेवा में उपयोगकर्ता निर्माण के बारे में अधिक प्रश्न का अनुभव करता है। शायद मैं गलत हो सकता हूँ।





dotnetopenauth