2010-04-08 16 views
15

के विरुद्ध प्रमाणीकरण दृश्य स्टूडियो 2008 में सेवा संदर्भ कैसे जोड़ें, मैं एक वेब सेवा का संदर्भ देना चाहता हूं, और इसके लिए उपयोगकर्ता/पास प्रमाणीकरण की आवश्यकता है। वीएस 2008 में, यदि मैं "संदर्भ जोड़ने" या "सेवा संदर्भ जोड़ने" का प्रयास करता हूं, तो मैं टाइप कर सकता हूं यूआरएल है, मेरे प्रमाण पत्र इनपुट करने का कोई तरीका नहीं है।पासवर्ड-संरक्षित वेब सेवा

The request failed with HTTP status 403: Forbidden. Metadata contains a reference that cannot be resolved: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm="weblogic"'. The remote server returned an error: (401) Unauthorized.

तो मेरे सवाल है: जाहिर है, अगर मैं ws लोड करने का प्रयास, यह मेरे लिए एक अच्छा संदेश दिखाता है यह संभव (2008 का उपयोग) है कि सुरक्षित है एक वेब सेवा के लिए एक संदर्भ जोड़ने के लिए है? कैसे?

उत्तर

4

सेवा को प्रमाणित करने के तरीके के आधार पर, आप सोल हो सकते हैं।

यदि यह एएसपी.Net सदस्यता का उपयोग करता है, तो कोई खुशी नहीं मिलती है। यदि सेवा कोड आपका है, तो प्रॉक्सी उत्पन्न करने के लिए अस्थायी रूप से प्रमाणीकरण अक्षम करें।

अन्यथा, एक मानक तंत्र का उपयोग करके देखें:

http://username:[email protected]/service 

बेस्ट विकल्प: अपने विक्रेता से डबल्यूएसडीएल जाओ और wsdl.exe का उपयोग आपके प्रॉक्सी उत्पन्न करने के लिए। टिप्पणी करने के लिए

जवाब में अद्यतन:

हाँ, आदेश एक प्रॉक्सी उत्पन्न करने के लिए सेवा मजाक, एक पूरी तरह से उचित योजना है लक्ष्य सेवा एक ASP.net सेवा है या केवल स्वीकार करता है और सरल प्रकार देता है, तो।

वेब सेवा निर्माता के पास एक अधिभार है जो उरी स्वीकार करता है या आप जेनरेट किए गए स्रोत को संशोधित कर सकते हैं।

आप उत्पन्न स्रोत को संशोधित करने का निर्णय लेते हैं, तो आप शायद सिर्फ प्रॉक्सी वर्ग निकालने और वेब सेवा संदर्भ हटाना चाहते हैं जाएगा:

के बाद आप वी.एस. साथ प्रॉक्सी उत्पन्न, अगर आप और ड्रिल 'सभी फाइलों को दिखाने' वेब सेवा संदर्भ में नीचे, आपको Reference.cs नामक एक फ़ाइल मिलेगी। यह एकमात्र फाइल है जिसे आपको चाहिए। सामग्री को किसी अन्य फ़ाइल में कॉपी करें और फिर वेब सेवा संदर्भ हटाएं।

यदि आप ऐसा करते हैं, तो आप इस बिंदु पर प्रॉक्सी में संभावित रूप से अपना प्रमाणीकरण तर्क जोड़ सकते हैं।

लेकिन फिर से, विक्रेता से डब्लूएसडीएल प्राप्त करना आपकी सबसे अच्छी शर्त है।

शुभकामनाएं।

+0

नहीं जोड़ सकेंगे ओवरराइड कर सकते हैं, हम इस सेवा पर नियंत्रण की जरूरत नहीं है (और वे जीत लिया ' प्रमाणीकरण योजना को हटाएं)। दोनों उपयोगकर्ता का उपयोग करना: यूआरएल में पास भी काम नहीं करता है ... किसी अन्य सेवा (जिसे प्रमाणीकरण की आवश्यकता नहीं है) के संदर्भ में जोड़ना संभव होगा, और उसके बाद, कुछ कॉन्फ़िगरेशन फ़ाइलों को संशोधित करें और URL को बदलें और मेरे प्रमाण पत्र इनपुट ??? – ditto1977

+0

@ user312305 - निश्चित रूप से, यह जाने का एक तरीका होगा। अद्यतन उत्तर देखें। वास्तविक प्रमाणीकरण के लिए, अच्छी तरह से यह एक और कहानी है। आपका प्रश्न पूछता है कि कैसे प्रॉक्सी उत्पन्न करना है, प्रोग्राम प्रमाणीकृत रूप से संरक्षित सेवा को प्रमाणित करने और कॉल करने के तरीके के बारे में नहीं। एक और सवाल पूछें और मैं इसका उत्तर दूंगा। प्लेटफ़ॉर्म और प्रमाणीकरण योजना का उपयोग करने के बारे में विवरण शामिल करना सुनिश्चित करें, उदाहरण के लिए आईआईएस, एएसपीनेट webservice, फॉर्म प्रमाणीकरण आदि ऐसा लगता है कि आपको www-auth शीर्षलेख जोड़ने की आवश्यकता हो सकती है। –

+0

खैर, बात यह है कि, हमारा प्रदाता वॉर्डेल का उपयोग करता है, जो एक wsdl का खुलासा नहीं करता है (यह इसके बजाय एक यूआरएल का खुलासा करता है, जो सभी परिचालनों को "अस्पष्ट" करता है), इसलिए मैं wsdl.exe का उपयोग कर प्रॉक्सी उत्पन्न करने के बारे में खो गया हूं (और यही एकमात्र चीज है जो मैं चाहता हूं- प्रॉक्सी उत्पन्न करें)। मुझे पता है कि सेवा काम करता है, और मैं पहले से जेनरेट की गई Wsdl प्रोजेक्ट के लिए एक नया एंडपॉइंट बनाकर, और उपयोगकर्ता/पास गुणों को भरकर, सोपूआई का उपयोग करके इसका परीक्षण कर सकता हूं। मैंने कोशिश की, वीएस -2008 में, एक यादृच्छिक डब्ल्यूएस संदर्भ उत्पन्न करता है, लेकिन चूंकि मुझे नहीं पता कि "वास्तविक" सेवा से कौन से गुण सामने आए हैं, मुझे लगता है कि मैं कोड को संशोधित नहीं कर सकता। (मदद के लिए धन्यवाद!) – ditto1977

6

ऐसा लगता है कि आप एक वेब संदर्भ का उपयोग करने की कोशिश कर रहे हैं, न कि सेवा संदर्भ (हालांकि मुझे लगता है कि एक वेब संदर्भ एक प्रकार का सेवा संदर्भ है)। वीएस 08 में, "सेवा जोड़ें संदर्भ" लॉन्च करने के बाद, वेब सेवा पर यूआरएल टाइप किया गया, "उन्नत" बटन पर क्लिक करें, फिर "वेब संदर्भ जोड़ें" पर क्लिक करें। यूआरएल फिर से टाइप करें, फिर "वेब संदर्भ जोड़ें" पर क्लिक करें। अब आप एक वेब संदर्भ बजाय होना चाहिए, तो प्रमाणीकरण नीचे के समान है:

WebService.Service myService = new WebService.Service(); 
myService.Credentials = new System.Net.NetworkCredential("username", "password"); 
WebService.ResultType results = myService.MyMethodReturnsResultType(); 
3

देर जबाब है, लेकिन आप भी अगर आप दृश्य स्टूडियो वेब ब्राउज़र में अपनी साइट को खोलने और लॉग इन करें यह काम कर रहा प्राप्त कर सकते हैं केवल काम करता है। यदि आपका ऑथ मॉडल कुकीज़ का समर्थन करता है।

+1

+1 - लॉगिन पृष्ठ के पीछे एक बिक्रीफोर्स डब्लूएसडीएल अपडेट करने का प्रयास करते समय यह मेरे लिए पूरी तरह से काम करता था। विजुअल स्टूडियो 2013 में आप शीर्ष मेनू पर क्लिक करके एक वेब ब्राउज़र खोल सकते हैं -> अन्य विंडोज़ -> वेब ब्राउज़र – drobison

0

आप WSDL के साथ कोड उत्पन्न यदि आप GetWebRequest() विधि है जो आप प्राधिकरण हैडर

protected override System.Net.WebRequest GetWebRequest(Uri uri) 
{ 
    var req = base.GetWebRequest(uri); 
    req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes("username:password"))); 
    return req; 
}