यह एक वैचारिक प्रश्न है।विश्वसनीय लॉगिन विफलता: वापसी 401 या कस्टम प्रतिक्रिया
मेरे पास एक क्लाइंट (मोबाइल) एप्लिकेशन है जिसे एक विश्वसनीय वेब सेवा के खिलाफ लॉगिन कार्रवाई का समर्थन करने की आवश्यकता है। चूंकि वेब सेवा रीस्टफुल है, यह उपयोगकर्ता से उपयोगकर्ता नाम/पासवर्ड स्वीकार करने वाले ग्राहक को सेवा प्रदान करता है, जो सेवा के साथ उपयोगकर्ता नाम/पासवर्ड सत्यापित करता है, और उसके बाद सभी उपयोगकर्ता अनुरोधों के साथ उस उपयोगकर्ता नाम/पासवर्ड को भेजना याद रखता है।
इस वेब सेवा में अन्य सभी प्रतिक्रियाएं JSON प्रारूप में उपलब्ध कराई गई हैं।
सवाल यह है कि, जब मैं वेब सेवा से पूछता हूं कि यह पता लगाने के लिए कि क्या दिया गया उपयोगकर्ता नाम/पासवर्ड मान्य है, तो वेब सेवा हमेशा जेएसओएन डेटा के साथ प्रतिक्रिया देनी चाहिए जो मुझे सफल या असफल बताती है, या इसे HTTP 200 पर वापस करना चाहिए खराब प्रमाण-पत्रों पर अच्छे प्रमाण-पत्र और HTTP 401।
कारण मैं पूछता हूं कि कुछ अन्य विश्वसनीय सेवाएं खराब प्रमाण-पत्रों के लिए 401 का उपयोग करती हैं, भले ही आप केवल पूछ रहे हों कि प्रमाण-पत्र मान्य हैं या नहीं। हालांकि, 401 प्रतिक्रियाओं की मेरी समझ यह है कि वे ऐसे संसाधन का प्रतिनिधित्व करते हैं जिनके पास आपको वैध प्रमाण-पत्रों तक पहुंच नहीं है। लेकिन लॉगिन संसाधन किसी के लिए सुलभ होना चाहिए क्योंकि लॉगिन संसाधन का पूरा उद्देश्य आपको यह बताने के लिए है कि क्या आपके प्रमाण पत्र वैध हैं।
दूसरे शब्दों में, मुझे लगता है कि जैसे एक अनुरोध:
myservice.com/this/is/a/user/action
401 लौटना चाहिए अगर बुरा क्रेडेंशियल्स प्रदान की जाती हैं। लेकिन एक अनुरोध:
myservice.com/are/these/credentials/valid
कभी भी 401 वापस नहीं करना चाहिए क्योंकि वह विशेष URL (अनुरोध) वैध प्रमाण-पत्रों के साथ या बिना अधिकृत है।
मैं कुछ उचित विचारों को एक या दूसरे तरीके से सुनना चाहता हूं। इसे संभालने का मानक तरीका क्या है, और यह तर्कसंगत रूप से उचित तरीके से संभालने का मानक तरीका है?
संसाधनों को वापस करने के बारे में आपका बिंदु मान्य लगता है और शायद यह सही कदम है। यह बताते हुए कि 401 उचित प्रतिक्रिया है, मैं वहां कुछ स्पष्टीकरण की सराहना करता हूं। मैंने HTTP spec पढ़ा है, जैसा कि आपने यहां शामिल किया है, लेकिन मेरे लिए यह आपके दावे की प्रत्यक्ष और स्पष्ट पुष्टि के रूप में नहीं पढ़ता है। अर्थात्, प्रमाणीकरण की वैधता के बारे में पूछने के लिए प्रमाणीकरण की आवश्यकता नहीं है - फिर भी जो आपने शामिल किया है, वह कहता है "प्रमाणीकरण की आवश्यकता होने पर विशेष रूप से उपयोग के लिए।" – Matt
इसे देखने का आपका तरीका सही है। आपको अपने खाता ऑब्जेक्ट के लिए पूछने में सक्षम होने के लिए प्रमाणित होने की आवश्यकता नहीं है। लेकिन संसाधन को प्राप्त करने में सक्षम होने के लिए आपको सफलतापूर्वक प्रमाणित करने की आवश्यकता है, और जहां 'प्रमाणीकरण की आवश्यकता है और विफल रहा है या अभी तक प्रदान नहीं किया गया है' लागू होता है, क्योंकि आप प्रमाण-पत्रों की वैधता नहीं मांगते हैं, लेकिन एक विशिष्ट संसाधन के लिए आपके द्वारा प्रदान किए जाने वाले प्रमाण-पत्रों के आधार पर। – Cleric
ठीक है, मुझे लगता है कि मैंने अपनी टिप्पणी अस्पष्टता से कहा था। यदि खाता संसाधन वापस कर दिया गया है, तो मैं आपके उसी पृष्ठ पर हूं - मैं आपके रुख से सहमत हूं। जब मैंने 401 के बारे में फिर से पूछा तो मेरा मतलब केवल उस मामले के संबंध में जहां मैं वैधता मांग रहा हूं। मैं समझता हूं कि यह एक आरईएसटी दृष्टिकोण से "गलत" है, लेकिन मैं इस प्रश्न के लिए एक निष्कर्ष तक पहुंचना चाहता हूं। तो अगर मैं गलत काम करता हूं और बुलियन रिटर्न के रूप में वैधता मांगता हूं, तो क्या यह 401 वापस करने के लिए अनुचित होगा कि प्रमाणीकरण वास्तव में उस अनुरोध/क्वेरी के लिए आवश्यक नहीं है? – Matt