2011-10-06 18 views
12

था मेरे पास VB.NET में लिखा गया एएसपी.NET वेब एप्लिकेशन है। एप्लिकेशन का एक हिस्सा एक एएसएक्स कॉल को एक आंतरिक एएसएमएक्स फ़ाइल बनाता है जो बदले में एक दूरस्थ वेब सेवा पर कॉल करता है जो केवल एक ही एएसएमएक्स फ़ाइल है। आम तौर पर यह ठीक काम करता है और इसे दो बार तैनात किया गया है और ठीक काम करता है। एक ग्राहक तथापि, AJAX कॉल से संदेश मिल रहा है:HTTP अनुरोध क्लाइंट प्रमाणीकरण योजना 'बेनामी' के साथ अनधिकृत है। सर्वर से प्राप्त प्रमाणीकरण हेडर 'एनटीएलएम'

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

मैंने इसे ठीक करने की कोशिश कर रहे बड़ी संख्या में वेबसाइटों को खराब कर दिया है, लेकिन मुझे ऐसा कोई जवाब नहीं मिल रहा है जो मेरे लिए काम करता है।

मैं अपने परीक्षण सर्वर पर त्रुटि को दोहराने में असमर्थ रहा हूं, जो क्लाइंट, Win2003 IIS6 के समान है।

रिमोट वेब सेवा विंडोज 2008 आर 2 - आईआईएस 7.5 पर तैनात है। रिमोट सेवा केवल 'बेनामी' प्रमाणीकरण का उपयोग करके तैनात की जाती है। क्लाइंट परिनियोजन बेनामी और 'एकीकृत विंडोज प्रमाणीकरण' के साथ स्थापित किया गया है। मैंने दोनों कार्यान्वयन पर प्रमाणीकरण स्तर बदलने की कोशिश की है लेकिन इस मुद्दे को दोहराना नहीं कर सकता। निकटतम मैं आ गए हैं जब मैं

HTTP अनुरोध ग्राहक प्रमाणीकरण योजना 'ntlm' के साथ अनधिकृत है करने के लिए दूरस्थ सेवा आईआईएस प्रमाणीकरण सेट है। सर्वर से प्राप्त प्रमाणीकरण हेडर '' था।

web.config फ़ाइल में दूरस्थ सेवा के संदर्भ में है:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="SVCMappingSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
        <message clientCredentialType="UserName" algorithmSuite="Default"/> 
       </security> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://svc.website.com/services/myService.asmx" binding="basicHttpBinding" bindingConfiguration="SVCMappingSoap" contract="SVCMappingService.SVCMappingSoap" name="SVCMappingSoap"/> 
    </client> 
</system.serviceModel> 

मैं दोहराने के लिए असमर्थ <security> अनुभाग में सेटिंग के एक नंबर को बदलने की कोशिश की, लेकिन अभी भी है।

+0

मुझे पता चला कि क्लाइंट प्रॉक्सी सर्वर का उपयोग कर रहा है। रिमोट वेब सेवा को अक्षम करने के परिणामस्वरूप क्लाइंट पर एक ही त्रुटि संदेश आया, ऐसा लगता है कि सभी समस्याएं उनके नेटवर्क सेटअप पर हैं। मैंने बाध्यकारी को अपनी प्रॉक्सी का उपयोग करने के लिए कॉन्फ़िगर किया जिसके परिणामस्वरूप संदेश - 'रिमोट सर्वर ने एक अप्रत्याशित प्रतिक्रिया लौटा दी: (407) प्रॉक्सी प्रमाणीकरण आवश्यक (आईएसए सर्वर को अनुरोध को पूरा करने के लिए प्राधिकरण की आवश्यकता है। वेब प्रॉक्सी फ़िल्टर तक पहुंच अस्वीकार कर दी गई है।) । 'मैंने इस मुद्दे को क्लाइंट नेटवर्क सेटअप के लिए जिम्मेदार ठहराया है। – SausageFingers

+0

हाय @ फ्लीट्रैप, क्या आप कृपया वर्णन कर सकते हैं कि आपके और आपके एंडपॉइंट के बीच यह प्रॉक्सी प्राधिकरण को कैसे प्रभावित कर रहा था। मेरे पास अभी भी एक समान समस्या है, ऐसा लगता है कि तुम्हारा कोई मेरी मदद कर सकता है। –

+0

@Johnny_D, दुर्भाग्य से मुझे नहीं पता कि प्रॉक्सी कॉन्फ़िगर कैसे किया गया था। – SausageFingers

उत्तर

19

मुझे आपके कुल सर्वर सेटअप की जानकारी नहीं है।

<security mode="None"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
</security> 
बजाय एक ऊपर से नीचे विन्यास के साथ प्रयास करें की

<security mode="TransportCredentialOnly"> 
    <transport clientCredentialType="Ntlm"/> 
    <message clientCredentialType="UserName" algorithmSuite="Default"/> 
</security> 

लिंक नीचे के माध्यम से जाने के लिए कृपया, आप कर सकते हैं उन है और आप अपनी आवश्यकताओं के आधार पर config बदल सकते हैं के बारे में अधिक विचार:

+1

चाल यह सुनिश्चित करने के लिए है कि डब्ल्यूसीएफ और आईआईएस स्तर में कॉन्फ़िगरेशन समान होना चाहिए। तो दूसरे तरीके से हम आईआईएस स्तर को "अज्ञात" के रूप में बदल सकते हैं। – himanshu

+0

मैंने पहले से ही उस सुरक्षा कॉन्फ़िगरेशन की कोशिश की थी लेकिन संदेश वही था। ऊपर मेरी टिप्पणी देखें, मुझे लगता है कि मुद्दा यह है कि क्लाइंट वेब प्रॉक्सी सर्वर का उपयोग कर रहा है। – SausageFingers

+17

यदि यह उत्तर आपकी समस्या का समाधान नहीं करता है, तो यह क्यों स्वीकार किया जाता है? –

2

मैं डिफ़ॉल्ट उत्पन्न

 <security mode="Transport"/> 

बदलने के लिए इस समस्या के लिए

 <security mode="Transport" > 
     <transport clientCredentialType="Ntlm"/> 
     </security> 
+0

यह मेरी समस्या हल हो गया। धन्यवाद महोदय!!! – papfan

0

एक और टिप्पणी में था:,

आप HTTPS का उपयोग नहीं कर रहे हैं, तो

<security mode="Transport"/> 

समर्थित नहीं है। आप

<security mode="TransportCredentialOnly"> 

का उपयोग कर सकते हैं।

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