2013-01-17 15 views
5

से अनधिकृत प्रमाणीकरण योजना का मुकाबला करना मेरे पास हमारी क्लाइंट कंपनी से एक .WSDL फ़ाइल है, जिसके लिए मुझे वेब सेवा कॉल करने के लिए उपयोग करने की आवश्यकता है। उनकी प्रणाली एसएपी (एसएपी पीआई) है। मेरा आवेदन वीएस 2008 में विकसित एक सी # .NET 3.5 क्लाइंट है। मैंने विजुअल स्टूडियो में उनके प्रदत्त .WSDL फ़ाइल का उपयोग करके एक सेवा संदर्भ जोड़ा। इसने मेरी सेवा को कॉल करने के लिए उपयोग करने के लिए एक संदर्भ वर्ग बनाया, और मेरे लिए app.config फ़ाइल में कई बाइंडिंग सेट अप की।वेब सेवा

मैंने app.config फ़ाइल में कुछ भी नहीं बदला, लेकिन अपनी वेब सेवा को कॉल करने के लिए कोड बनाया। हालांकि, जब मैं अपनी webservice कहता हूं, तो मुझे निम्न अपवाद मिलता है:

HTTP अनुरोध क्लाइंट प्रमाणीकरण योजना 'बेनामी' के साथ अनधिकृत है। सर्वर से प्राप्त प्रमाणीकरण हेडर 'मूल वास्तविक = "एसएपी नेटवेवर अनुप्रयोग सर्वर था ...' '।

app.config सही ढंग से डबल्यूएसडीएल से बनाया नहीं मिला (मैं थोड़ा 'बुनियादी दायरे' अनुभाग में प्रयोग किया जाता है ताकि यह बाहर नहीं देने के लिए। स्ट्रिंग संशोधित)? क्या मुझे किसी भी तरह app.config फ़ाइल को संशोधित करना है?

बातें मैं कोशिश की है:

  • बेसिक
    (और साथ ही अन्य सभी प्रमाणीकरण प्रकार)
  • app.config में बदली हुई दायरे स्ट्रिंग के मिलान करने के लिए बेनामी से app.config में authenticationScheme बदल अपवाद संदेश में दायरे
  • सेट उपयोगकर्ता नाम/पीडब्लू मेरी कोड में ClientCredentials.Username वस्तु में खेतों

किसी भी संकेतक या मदद की सराहना की जाएगी।

संपादित करें: कुछ और जांच के बाद, मैंने पाया दृश्य स्टूडियो विस्तार तत्व नीति और नीति के दावे के बारे में कई बार चेतावनी है कि:

  • कस्टम उपकरण चेतावनी: नाम स्थान से वैकल्पिक डबल्यूएसडीएल विस्तार तत्व 'नीति' ' http://schemas.xmlsoap.org/ws/2004/09/policy ' नहीं था।
  • कस्टम टूल चेतावनी: निम्नलिखित नीति सम्बन्ध आयात नहीं किए गए थे:
    XPath: // wsdl: परिभाषाएं [@ targetNamespace = 'urn: sap-com: दस्तावेज़: sap: rfc: functions']/wsdl: बाध्यकारी [@ ...

मैं पता लगाने के लिए अगर यह प्रमाणीकरण योजना के साथ संबंधित या मेरे वर्तमान मुद्दे से नहीं किया गया था एकदम चमक: = 'Binding_FieldValidation'] दावे का नाम दें। ऐसा लगता है कि यह संबंधित है, लेकिन मैं इन पॉलिसी चेतावनियों को हल करने के लिए कोई समाधान ढूंढने में सक्षम हूं। ऐसा लगता है कि डब्ल्यूसीएफ wsdl में कथन को बहुत अच्छी तरह से संभाल नहीं करता है।

उत्तर

0

अधिकांश एसएपी सेवाएं अज्ञात का समर्थन नहीं करती हैं। तो कॉल के साथ प्रमाणीकरण डेटा के कुछ रूप पास करें। उपयोगकर्ता और पासवर्ड/509 टिकट ...

आप कॉल के साथ प्रमाणन डेटा भेज रहे हैं की कोशिश इस

एसएपी पुरुष पूछो नहीं एसएपी दावे साथ डबल्यूएसडीएल पुनर्जीवित करने के लिए, तो कोई नीति, सोप 1.1। आप अतिरिक्त guff को हटाने के लिए WSDL को भी हाथ से संपादित और संपादित कर सकते हैं ...

0

प्रारंभिक बिंदु के रूप में, मैं सत्यापित करता हूं कि आप प्रदान किए गए उपयोगकर्ता नाम और पासवर्ड के साथ सफलतापूर्वक सेवा को कॉल कर सकते हैं। यह जांचने के लिए SoapUI जैसे कुछ भी उपयोग करें कि सब ठीक से काम करता है - बस एक नई परियोजना बनाएं, एसएपी पीआई द्वारा प्रदान की गई डब्लूएसडीएल आयात करें, उपयोगकर्ता नाम और पासवर्ड सेट करें और कॉल निष्पादित करें। आपको शायद खाली पेलोड के साथ अपवाद का कुछ रूप मिलेगा, लेकिन कम से कम यह सत्यापित करेगा कि उपयोगकर्ता नाम और पासवर्ड सही हैं।

एक बार जब आप यह सत्यापित कर लें कि यह काम कर रहा है, तो जांचें कि आपका एप्लिकेशन सेवा को सही तरीके से कॉल कर रहा है और http मूल प्रमाणीकरण शीर्षलेख भेजे जा रहे हैं। आप नेटवर्क निगरानी उपकरण का उपयोग करके और यह जांच कर सकते हैं कि http अनुरोध सही तरीके से उत्पन्न किया जा रहा है। विंडोज के लिए नेटकैट की तरह कुछ ऐसा कर सकता है - बस इसे अपनी स्थानीय मशीन पर एक पोर्ट को सुनें और फिर स्थानीय सोस्ट और पोर्ट को अपने एसओएपी एंडपॉइंट के रूप में निर्दिष्ट करें।

एक बार जब आप सत्यापित कर लें कि दोनों सही हैं, तो आपका कॉल सफल होना चाहिए।

0

प्रमाण पत्र के साथ मूल प्रमाणीकरण शीर्षलेख अनुपलब्ध या कुछ गलत होना चाहिए।

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

चेतावनियों के बारे में: एसएपी पीआई द्वारा उत्पन्न डब्ल्यूएसडीएल AFAIK हमेशा इन नीति टैगों में शामिल होगा, आप वास्तव में इसे छोड़ नहीं सकते हैं। आप क्या कर सकते हैं बस उन्हें बाहर फेंक दें क्योंकि वे वास्तव में

मान्य नहीं हैं