2011-08-26 12 views
7

के साथ प्रमाणीकरण मैं एएसपीनेट एमवीसी में एक आरईएसटी एपीआई बना रहा हूं। मेरा सिस्टम फॉर्म प्रमाणीकरण का उपयोग करता है। उपयोगकर्ता नाम/पासवर्ड या openId/fbconnect, आदि। यदि मेरे पास [Authorize] एक्शन पर विशेषता है, तो एंड्रॉइड ऐप या डेस्कटॉप ऐप विधि तक कैसे पहुंच पाएगा?एक आरईएसटी एपीआई

या बेहतर सवाल है, मैं कैसे प्रमाणित करने के लिए डेस्कटॉप ऐप्लिकेशन को डिजाइन किया जाएगा है? क्या मुझे किसी एपीआई कुंजी या कुछ प्रकार के टोकन को पास करने की आवश्यकता होगी? या डेस्कटॉप ऐप ब्राउज़र की तरह व्यवहार करेगा और आंतरिक कुकीज़ का उपयोग करेगा? मुझे पूरा यकीन नहीं है कि एक विश्वसनीय एपीआई प्रमाणीकरण के साथ एक वेब ब्राउज़र के बाहर कैसे काम करेगा।

उत्तर

14

मैं एक REST API में कुकीज़ का उपयोग नहीं होता। फॉर्म प्रमाणीकरण एक कुकी-आधारित विधि है। इसके बजाए, कॉलर को हेडर में प्रत्येक अनुरोध के साथ प्रमाणीकरण प्रमाण-पत्र, या अनुरोध पैरामीटर के रूप में प्रदान करना चाहिए।

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

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

एपीआई एक पासवर्ड चुनौती प्रदान नहीं करना चाहिए: एक वेब ऐप्लिकेशन में, एक अनाधिकृत अनुरोध आम तौर पर एक प्रवेश पृष्ठ पर उपयोगकर्ता रीडायरेक्ट करेगा। एक एपीआई में, अनुरोध बस एक त्रुटि कोड वापस करेगा। यदि लागू हो तो एक संवाद के माध्यम से उपयोगकर्ता को चुनौती देने के लिए अब क्लाइंट एप्लिकेशन का काम है। एक मोबाइल ऐप में, आप एक संवाद दिखाना चाहेंगे। OAuth के साथ एक वेब एप्लिकेशन में, आप शायद प्रमाणीकरण सर्वर पर रीडायरेक्ट करना चाहते हैं।

यदि आप अपने आरईएसटी एपीआई का परीक्षण करना चाहते हैं, तो मेरा सुझाव है कि आप REST Console for Google Chrome और cURL का उपयोग करें। पूर्व शुरुआती लोगों के लिए आसान है और एक अच्छा जीयूआई के साथ आता है जबकि curl आपको और अधिक निष्ठा और प्रोटोकॉल के बहुत सारे देता है।

संपादित

एक कुछ हद तक पंडिताऊ सूचना: कुछ एपीआई, काफी बड़ी प्रदाताओं में से यहां तक ​​कि उन है, उदा ट्विटर, समय-समय पर 401 स्टेटस कोड लौटाएं, आमतौर पर 0 अनिवार्य (अनिवार्य) WWW-Authenticate शीर्षलेख को छोड़कर क्योंकि यह ग्राहक को चुनौती देने का उनका इरादा नहीं था।

+0

+1 Google क्रोम के लिए आरईएसटी कंसोल के लिए, उल्लेख करें :) अच्छा है! –

+1

'मैं एक आरईएसटी एपीआई में कुकीज़ का उपयोग नहीं करता' - सहमत है, हालांकि, आप इसे [इस उत्तर] में एक सुरक्षित टोकन जेनरेट करने के लिए उपयोग कर सकते हैं (http://stackoverflow.com/questions/840537/generating- क्रिप्टोग्राफिक- सुरक्षित प्रमाणीकरण-टोकन # 858,724)। – James

+0

@ जेम्स: यह एक बहुत अच्छा मुद्दा है। उपयोगकर्ता नाम और पासवर्ड को हर समय भेजने के बजाए टोकन का उपयोग करना निश्चित रूप से बेहतर होता है, क्योंकि बॉयलरप्लेट कोड को इस तरह से अलग करना आसान है। – mnemosyn

1

Amazons एडब्ल्यूएस प्रमाणीकरण योजना पर एक नजर डालें। यह वही करता है जो हर कोई चाहता है, और यह मानक HTTP प्राधिकरण शीर्षलेख का उपयोग करता है।

संबंधित मुद्दे