मैं एक मोबाइल ऐप और सर्विसस्टैक वेब सेवा बैक-एंड बना रहा हूं। सर्विसस्टैक में प्रमाणीकरण सामग्री बहुत अच्छी लगती है लेकिन इसकी लचीलापन में खो जाना आसान है - मार्गदर्शन बहुत सराहना करता है। मैं वेब सेवा के भीतर उपयोगकर्ताओं को संग्रहीत करने के लिए अपनी खुद की डीबी टेबल का उपयोग करूँगा।सर्विसस्टैक, अपने उपयोगकर्ता भंडार, और डिवाइस आईडी का उपयोग कर अनुरोधों को प्रमाणित कैसे करें?
- उपयोगकर्ता शुरू में सिर्फ एक ईमेल पता, मेरी वेब सेवा तो ईमेल उपयोगकर्ता
- उपयोगकर्ता के लिए एक पंजीकरण कुंजी प्रदान करता है कुंजी में प्रवेश करती है: मैं एक पंजीकरण प्रक्रिया और इस तरह बाद में प्रमाणीकरण कुछ है करना चाहते हैं । ऐप पंजीकरण के लिए वेब सेवा भेजता है: ईमेल, कुंजी & एक अद्वितीय डिवाइस पहचानकर्ता।
- वेब सेवा कुंजी की पुष्टि करती है और ईमेल & डिवाइस आईडी स्टोर करती है। यह एक लेख टोकन के साथ प्रतिक्रिया देता है कि ऐप बाद में प्रमाणीकरण के लिए उपयोग करेगा।
फिर बाद के वेब सेवा अनुरोध डिवाइस आईडी और ऑथ टोकन (या इसके साथ बनाए गए हैश) प्रदान करेंगे। ऐप बहुत चतुर नहीं है इसलिए मैं प्रत्येक वेब अनुरोध पर प्रमाणीकरण विवरण भेजने का लुत्फ उठा रहा हूं।
प्रश्न 1: क्या मुझे सर्विसस्टैक के पंजीकरण API में शामिल होना चाहिए या बस कुछ कस्टम वेब सेवा कॉल जोड़ना चाहिए? जैसे सर्विसस्टैक के पंजीकरण के बिना मैं:
- ईमेल पता और डिवाइस आईडी के साथ पंजीकरण वेब सेवा पर पोस्ट करता है। मेरी वेब सेवा एक कुंजी के साथ पंजीकरण ईमेल भेज देगा और उपयोगकर्ता डीबी तालिका में एक रिकॉर्ड जोड़ देगा।
- जब उपयोगकर्ता कुंजी में प्रवेश करता है तो यह फिर भी पंजीकरण वेब सेवा पर पोस्ट करेगा, इस बार भी कुंजी के साथ। मेरी वेब सेवा कुंजी को मान्य करेगी और यूजर टोकन & को कॉलर
- पर लौटने के लिए उपयोगकर्ता अनुरोध को चिह्नित करने के लिए उपयोगकर्ता तालिका को अद्यतन करेगा, बाद में अनुरोध उपयोगकर्ता आईडी के साथ http मूल ऑथ का उपयोग करके भेजा जाएगा और उपयोगकर्ता आईडी के रूप में पासवर्ड के रूप में ऑथ टोकन। सेवा बहुत चतुर नहीं है इसलिए प्रत्येक अनुरोध के साथ क्रेडिट भेजे जाएंगे।
- मैं एक प्रमाण पत्र AuthProvider लागू करूंगा जो httpRequest.GetBasicAuthUserAndPassword() के साथ क्रेडिट प्राप्त करेगा और उन्हें डीबी डेटा के विरुद्ध सत्यापित करेगा।
लेकिन ऐसा लगता है कि मुझे सर्विसस्टैक में बनाए गए पंजीकरण का उपयोग करना चाहिए।
प्रश्न 2: प्रत्येक अनुरोध के साथ प्रमाणीकरण विवरण पास करने में क्या गड़बड़ है? इससे मेरे ऐप अनुरोधों को लिखना आसान हो जाएगा लेकिन यह सर्विसस्टैक उदाहरणों के आधार पर 'पूर्ण' प्रतीत नहीं होता है। संभवतः ऐसा इसलिए है क्योंकि यह अक्षम है यदि आपके पास प्रत्येक कॉल को फिर से प्रमाणित करने के लिए बहुत से अनुरोध हैं - किसी अन्य कारण से? मेरा ऐप केवल कुछ ही मिनटों में एक ही वेब अनुरोध करेगा, इसलिए सत्र होने से बचने के लिए यह आसान लगता है और प्रत्येक अनुरोध को फिर से लिखना आसान लगता है।
प्रश्न 3: क्या मैं सही ट्रैक subcassing CredentialsAuthProvider पर है?
प्रश्न 4: क्या हर बार ऑथ टोकन भेजने के बजाय हैश उत्पन्न करने के लिए ऑथ टोकन का उपयोग करने का कोई बिंदु है? सभी संचार https से अधिक हो जाएगा।