2012-06-02 13 views
6

एसओ पर कई उत्कृष्ट प्रश्न (और उत्तर) हैं। आरईएसटी और सुरक्षा के विषय के आसपास। बहुत से लोग कहते हैं, "शुद्धवादियों को यह पसंद नहीं होगा, लेकिन ब्ला ब्लाह" ... और फिर अन्य कहते हैं, "आपको ऐसा कभी नहीं करना चाहिए, क्योंकि ब्ला ब्लाह"।एक विश्वसनीय सेवा को अधिकृत करने के व्यावहारिक उदाहरण?

लेकिन मैंने समाधान नहीं देखा है कि "शुद्धवादी" निम्नलिखित परिदृश्य के लिए सुझाव दे रहे हैं। तो मेरा सवाल है - निम्नलिखित परिदृश्य में "शुद्ध पुनर्स्थापना समाधान" क्या हैं?

सरल परिदृश्य ...

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

तो, उपयोगकर्ता "ए" में आईडी के "1", "2" और "3" के साथ 3 पसंदीदा व्यंजन हैं।

उपयोगकर्ता "बी" में आईडी के "4" और "5" के साथ 2 पसंदीदा व्यंजन हैं।

हमें यह सुनिश्चित करने की आवश्यकता है कि यदि उपयोगकर्ता ए DELETE/Recipes/4 पर आदेश भेजता है तो उसे Forbidden (403) प्रतिक्रिया मिलेगी।

क्या मैं सामान्य रूप से करना होगा ...

क्या मैं सामान्य रूप से करते हैं उन्हें पहले एक प्रमाणीकरण विधि कॉल कर रहा है होता है, और उन्हें Auth-टोकन कि 30 मिनट या तो के लिए मान्य है किसी प्रकार का भेजें। आम तौर पर यह टोकन एक कुकी के माध्यम से पारित किया जाएगा।

शुद्ध समाधान क्या है?

उन्हें क्वेरी स्ट्रिंग में एक चर के रूप में इसे पारित करने के लिए शुद्ध बाकी समाधान है? Are cookies the devil? टोकन को यूआरएल के एक सेगमेंट के रूप में इस्तेमाल किया जाना चाहिए (एक क्वेरी स्ट्रिंग पैरामीटर के विपरीत)? क्या कोई और चीज है जो इस सवाल का स्पष्ट रूप से उत्तर देती है?

+1

यहां थोड़ा सा पैडेंटिक: मुझे लगता है कि आप अपने मामले में 403 देना चाहते हैं, 401 नहीं। प्रमाणीकरण एक सेवा के साथ है, लेकिन आपके मामले में उपयोगकर्ता ए नुस्खा पाने के लिए _forbidden_ ​​है 4. मुझे पता है कि यह नहीं करता सवाल का जवाब बिल्कुल ठीक नहीं है, लेकिन ध्यान देने योग्य है। http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html अंतर दिखाता है। (पुन: प्रमाणीकरण उपयोगकर्ता ए को रेसिपी 4 में मदद नहीं करेगा, इसलिए 403.) –

+0

दाएं - असल में कोई भी एक मुद्दा है ... पहले 401 - जैसा कि, आप अधिकृत हैं और फिर दूसरी बात 403 - जैसे, आपकी "अनुमतियां क्या हैं "- जो राज्य/सत्र/usercontext बहस में आता है ... किसी भी तरह से, सवाल बनी हुई है। स्पष्टीकरण के लिए धन्यवाद! –

+2

हां, दोनों महत्वपूर्ण हैं। सबसे सरल समाधान निश्चित रूप से https पर मूल लेख है। मुझे लगता है कि "शुद्ध" है। क्या आप विकल्पों की तलाश में हैं? –

उत्तर

4

प्रवेश करने DELETE'ing द्वारा प्राधिकरण के शीर्षक में टोकन दर्रा। यही वह है जिसे इसके लिए डिज़ाइन किया गया है। देखें http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p7-auth-12.html

+0

न हो, मुझे यह विचार पसंद है, लेकिन ऐसा लगता है कि मैं अनुचित रूप से प्रमाणीकरण शीर्षलेख का उपयोग कर अनुचित रूप से उपयोग कर रहा हूं ... मैं देखना चाहता हूं अगर यह "उचित" है :) –

+0

@ टिमोथीखौरी आप क्या देख रहे हैं जो आपको लगता है कि आप लेख शीर्षलेख का दुरुपयोग करेंगे? –

+0

वह हेडर बेसिक और डाइजेस्ट एक्सेस प्रमाणीकरण के लिए विशिष्ट प्रतीत होता है: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.8 –

0

एक साधारण राज्यविहीन और कुकी मुक्त समाधान आपके प्रत्येक उपयोगकर्ता को एक समान टोकन दे दिया जाएगा।

तरीके उन टोकन उत्पन्न करने के लिए इतना है कि वे सुरक्षा चिंताओं के लिए पर्याप्त विरल हैं कर रहे हैं।

उदा https://www.grc.com/passwords.htm

मान लीजिए आप है उपयोगकर्ता एक और उपयोगकर्ता बी आप उपयोगकर्ता एक के लिए एक टोकन एक्स और उपयोगकर्ता बी के लिए एक टोकन वाई

तो उपयोगकर्ता एक /X/Recipes/1

और उपयोगकर्ता बी की तरह कुछ का उपयोग करेगा उत्पन्न /Y/Recipes/4

क्योंकि उपयोगकर्ता एक केवल एक ही उसकी टोकन जानता है यह सुरक्षित है की तरह कुछ का उपयोग करेगा और जैसा कि मैंने पहले उल्लेख किया है, जिस तरह से आप टोकन यकीन है कि यह "असंभव" दूसरों कि टोकन अनुमान लगाने के लिए है कर सकते हैं उत्पन्न करते हैं।

तो यदि उपयोगकर्ता बी जैसे किसी अन्य उपयोगकर्ता यूआरएल में कुछ अन्य टोकन का उपयोग करता है, तो /Z/Recipes/1 कहें, तो आपको एक संबंधित त्रुटि संदेश को पहचानने और वापस करने में सक्षम होना चाहिए।

आप उपयोगकर्ता को यूआरएल में टोकन वितरित करने दे सकते हैं, जैसे मैंने ऊपर दिखाया है, या इसे HTTP अनुरोध में Autherticantion संदेश के रूप में एम्बेड कर सकते हैं।

+0

क्या आपका मतलब एक अद्वितीय टोकन सही है? यदि उनके सभी में समान टोकन हैं तो कोई भी कुछ भी हटा सकता है ... – evanmcdonnal

+1

मुझे काफी अनुवर्ती नहीं है ... मुझे लगता है कि सवाल अभी भी बनी हुई है - वे "पासवर्ड" कैसे वितरित कर रहे हैं - क्या यह क्वेरी स्ट्रिंग में प्रत्येक अनुरोध के साथ है, पोस्ट, कुकी, इत्यादि - इस समाधान में एक ही प्रश्न हैं। –

+0

@TimothyKhouri उपरोक्त मेरे अपडेट देखें, मुझे बताएं कि क्या यह आपके प्रश्न का उत्तर देता है .. – xvatar

1

संसाधन टोकन को संसाधन के रूप में देखें।

आप प्रमाण पत्र होने वाले पैरामीटर के साथ एक ऑथ टोकन प्राप्त करके प्रमाणित करते हैं (उदाहरण के लिए https पर मूल लेख)।

लॉगआउट प्रमाणीकरण टोकन संसाधन आप मिल गया है जब में।

+0

ठीक है, लेकिन वे टोकन को कैसे पास करते हैं वही प्रश्न है। क्या यह क्वेरी स्ट्रिंग, हेडर इत्यादि आदि के माध्यम से है। मुझे लगता है कि मैंने इस टिप्पणी को 4 बार दोहराया है - स्पष्ट रूप से यह एक प्रश्न है जिसे स्पष्ट रूप से उत्तर नहीं दिया गया है। साथ ही, क्या वह हेडर या कुकी के माध्यम से टोकन पास करने के लिए वैध/शुद्ध है? हेडर के माध्यम से –

+0

। यह सहायक होना चाहिए: http://stackoverflow.com/questions/549/the-definitive-guide-to-forms-based-website- प्रमाणीकरण। यह किसी भी दृष्टिकोण पर लागू होता है, विश्वसनीय या नहीं।एक शुद्ध रीस्टफुल दृष्टिकोण के साथ, ऑथ टोकन को संसाधन के रूप में माना जाता है ताकि यह एक अजीब आरपीसी – matb33

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