2013-02-17 16 views
7

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

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

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

प्रश्न 1: क्या मुझे सर्विसस्टैक के पंजीकरण API में शामिल होना चाहिए या बस कुछ कस्टम वेब सेवा कॉल जोड़ना चाहिए? जैसे सर्विसस्टैक के पंजीकरण के बिना मैं:

  • ईमेल पता और डिवाइस आईडी के साथ पंजीकरण वेब सेवा पर पोस्ट करता है। मेरी वेब सेवा एक कुंजी के साथ पंजीकरण ईमेल भेज देगा और उपयोगकर्ता डीबी तालिका में एक रिकॉर्ड जोड़ देगा।
  • जब उपयोगकर्ता कुंजी में प्रवेश करता है तो यह फिर भी पंजीकरण वेब सेवा पर पोस्ट करेगा, इस बार भी कुंजी के साथ। मेरी वेब सेवा कुंजी को मान्य करेगी और यूजर टोकन & को कॉलर
  • पर लौटने के लिए उपयोगकर्ता अनुरोध को चिह्नित करने के लिए उपयोगकर्ता तालिका को अद्यतन करेगा, बाद में अनुरोध उपयोगकर्ता आईडी के साथ http मूल ऑथ का उपयोग करके भेजा जाएगा और उपयोगकर्ता आईडी के रूप में पासवर्ड के रूप में ऑथ टोकन। सेवा बहुत चतुर नहीं है इसलिए प्रत्येक अनुरोध के साथ क्रेडिट भेजे जाएंगे।
  • मैं एक प्रमाण पत्र AuthProvider लागू करूंगा जो httpRequest.GetBasicAuthUserAndPassword() के साथ क्रेडिट प्राप्त करेगा और उन्हें डीबी डेटा के विरुद्ध सत्यापित करेगा।

लेकिन ऐसा लगता है कि मुझे सर्विसस्टैक में बनाए गए पंजीकरण का उपयोग करना चाहिए।

प्रश्न 2: प्रत्येक अनुरोध के साथ प्रमाणीकरण विवरण पास करने में क्या गड़बड़ है? इससे मेरे ऐप अनुरोधों को लिखना आसान हो जाएगा लेकिन यह सर्विसस्टैक उदाहरणों के आधार पर 'पूर्ण' प्रतीत नहीं होता है। संभवतः ऐसा इसलिए है क्योंकि यह अक्षम है यदि आपके पास प्रत्येक कॉल को फिर से प्रमाणित करने के लिए बहुत से अनुरोध हैं - किसी अन्य कारण से? मेरा ऐप केवल कुछ ही मिनटों में एक ही वेब अनुरोध करेगा, इसलिए सत्र होने से बचने के लिए यह आसान लगता है और प्रत्येक अनुरोध को फिर से लिखना आसान लगता है।

प्रश्न 3: क्या मैं सही ट्रैक subcassing CredentialsAuthProvider पर है?

प्रश्न 4: क्या हर बार ऑथ टोकन भेजने के बजाय हैश उत्पन्न करने के लिए ऑथ टोकन का उपयोग करने का कोई बिंदु है? सभी संचार https से अधिक हो जाएगा।

उत्तर

2

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

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

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

उत्तर 3: हाँ आप सही रास्ते पर हैं। अभी भी अधिक जानकारी के लिए ब्लॉग प्रविष्टियों की जांच करें। मुझे कोड स्निपेट याद नहीं है और यह अंतिम अपडेट के साथ कैसे काम करता है, इसलिए मैं यहां कोड नहीं डाल रहा हूं।

उत्तर 4: यह उत्तर थोड़ा जटिल है। Https पर डेटा पास करना और पहचान धोखाधड़ी से उपयोगकर्ता को सहेजना थोड़ा अलग बात है। अब, यदि आप ऑथ टोकन (हैश आधारित मान) नहीं बना रहे हैं तो आप उपयोगकर्ता को http या https पर भी पास कर सकते हैं। अब, इसका उपयोग किसी अन्य उपयोगकर्ता द्वारा पहले उपयोगकर्ता को नकल करने और डेटा भेजने के लिए किया जा सकता है। यहां तक ​​कि डेटा https के माध्यम से भी पारित किया जा रहा है लेकिन अभी भी डेटा मजाक कर रहा है। इस स्थिति से बचने के लिए हैश आधारित मूल्य का उपयोग किया जाता है। और यहां तक ​​कि कुछ अन्य व्यावसायिक उपयोग मामलों को ऑथ टोकन का उपयोग करके कवर किया जा सकता है।

कृपया मुझे बताएं कि क्या मैंने आपको सही तरीके से प्रश्न समझ लिया है और उन्हें उत्तर दिया है ?? या यदि कोई और विवरण आवश्यक है ??

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