2011-08-17 16 views
8

हम एक डब्ल्यूसीएफ आरईएसटी वेब सेवा विकसित करने की प्रक्रिया में हैं जो किसी अज्ञात उपयोगकर्ता से मनमाने ढंग से पाठ का एक गुच्छा प्राप्त करता है और फिर बैक एंड पर कुछ प्रोसेसिंग करता है।डब्ल्यूसीएफ आरईएसटी सेवा - 401 अनधिकृत

उदाहरण के लिए, यहाँ हमारे वेब सेवा से एक विधि है:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class MyRESTService : IMyRESTService 
{ 
    [WebInvoke(Method = "PUT", UriTemplate = "/MyRESTMethod?paramA={paramA}&paramB={paramB}")] 
    public Stream MyRESTMethod(string paramA, string paramB, Stream rawData) 
    { 
     //do some stuff... 
    } 
} 

हम सिर्फ डिफ़ॉल्ट आईआईएस सेटिंग्स का उपयोग करते हैं हम एक (401) Unauthorized मिलता है। हालांकि, बहुत परीक्षण और त्रुटि के बाद हमने पाया कि हम अपनी सेवा के लिए वास्तविक .svc फ़ाइल पर 'हर किसी' को WRITE पहुंच देकर काम करने के लिए इसे प्राप्त कर सकते हैं।

मेरा प्रश्न है: क्यों दुनिया में आईआईएस को काम करने के लिए .svc फ़ाइल में WRITE तक पहुंच की आवश्यकता होगी? क्या कोई बेहतर तरीका है या क्या मैं इस हैकिश (और संभवतः असुरक्षित) कामकाज से फंस गया हूं?

डब्ल्यूटीएफ माइक्रोसॉफ्ट?

संभवतः संबंधित:

+0

अधिकारों का उपयोग में

<authentication mode="None" /><system.web> के अंदर डाल जरूरी "सभी" के लिए प्रदान किए जाने की जरूरत नहीं है द्वारा निर्धारित किया जा सकता है। इसके बजाय प्रमाणीकृत उपयोगकर्ता के पास ये अधिकार होना चाहिए। अज्ञात पहुंच के लिए यह आईयूएसआर है। – chiccodoro

उत्तर

7

एम $ से एक तकनीक प्रतिनिधि से बात कर के बाद मुझे बताया गया कि यह वास्तव में अपेक्षित व्यवहार है। किसी के लिए अनुरोध भेजने के लिए सेवा में लेखन पहुंच सक्षम होना चाहिए, और जब आप ऐसा करते हैं तो यह वास्तव में एसवीसी फ़ाइल पर भी स्वचालित रूप से लेखन पहुंच सेट करेगा।

+0

आपने मेरा दिन बचाया! बीटीडब्ल्यू: इसके बारे में दूसरी बार सोचने से यह समझ में आता है: जब आप किसी संसाधन पर PUT का अनुरोध करते हैं, तो उस संसाधन को लेखन पहुंच की अनुमति देनी चाहिए। अब, मुझे लगता है कि डब्लूसीएफ के साथ आरईएसटी शायद इस तरह कार्यान्वित किया गया है कि आईआईएस/Poto /foobar.svc/some/path को /foobar.svc पर पुट अनुरोध के रूप में व्याख्या करता है और आगे की व्याख्या के लिए "/ कुछ/पथ" भाग को डब्ल्यूसीएफ में आगे बढ़ाता है। इसलिए, आईआईएस के लिए यह /foobar.svc पर एक पुट अनुरोध है - HTTP बोलने में: आप foobar.svc – chiccodoro

9

मैं भी इस पाया है अपने web.config

+0

को संशोधित करना चाहते हैं, इससे मुझे भी मदद मिली, लेकिन क्या यह सुरक्षित है? –

+0

आपके पर्यावरण पर निर्भर करता है। मेरे मामले में, हम विश्वास कर रहे थे कि नेटवर्क सुरक्षित था, और शायद वह पर्याप्त है। यदि आपको सेवाओं के बीच प्रत्यक्ष प्रमाणीकरण की आवश्यकता है, तो जाहिर है यह एक समस्या होगी। – captncraig

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