2010-08-16 18 views
12

से मूल http प्रमाणीकरण की आवश्यकता है मेरे पास वेब सेवा से wsdl है, मैंने wcf प्रॉक्सी उत्पन्न की है। कोई बात नहीं।एक वेब सेवा को कॉल करना जिसके लिए wcf क्लाइंट

लेकिन मैं उपयोगकर्ता नाम और पासवर्ड को पास करने के तरीके के बारे में अपना सिर नहीं प्राप्त कर सकता हूं। Webservice बुनियादी प्रमाणीकरण की आवश्यकता है - केवल उपयोगकर्ता नाम और पासवर्ड।

कोई मदद?

उत्तर

0

यह इसे कवर करना चाहिए: http://msdn.microsoft.com/en-us/library/ms733775.aspx (क्लाइंट अनुभाग देखें)

+0

सवाल विशेष रूप से पूछता है के बारे में (HTTP) बेसिक प्रमाणीकरण। आपका लिंक किया गया संदर्भ केवल WSHttp बाइंडिंग का प्रदर्शन करता है। WSHttp बाइंडिंग एसओएपी लिफाफा के हेडर के ऑथ ब्लॉक में उपयोगकर्ता नाम + पासवर्ड क्रेडेंशियल का उपयोग करता है, जो (HTTP) मूल प्रमाणीकरण के समान नहीं है। – AlwaysLearning

0

मैं कहूंगा कि यह कैसे वेब सेवा आप जानकारी पारित करने के लिए उम्मीद पर निर्भर होने की संभावना है। आखिरकार, आप केवल उपभोक्ता हैं।

यह कहकर, यह सामान्य है कि एसओएपी हैडर में उपयोगकर्ता आईडी और पासवर्ड पास किया गया है।

आप इस परिदृश्य

नमूना साबुन संदेश का एक नमूना कार्यान्वयन

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <AUTHHEADER xmlns="http://tempuri.org/"> 
     <USERNAME>string</USERNAME> 
     <PASSWORD>string</PASSWORD> 
    </AUTHHEADER> 
    </soap:Header> 
    <soap:Body> 
    <SENSITIVEDATA xmlns="http://tempuri.org/" /> 
    </soap:Body> 
</soap:Envelope> 
21

मूल प्रमाणीकरण विन्यास फाइल में कॉन्फ़िगर की गई है के लिए इस link का उल्लेख कर सकते हैं? क्या आपको केवल प्रमाण-पत्र पास करने की आवश्यकता है या आपको सुरक्षित परिवहन (HTTPS) की भी आवश्यकता है?

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicAuthSecured"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

ग्राहक endpoint परिभाषित विन्यास का उपयोग करने के होते हैं: बाध्यकारी HTTPS के लिए

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicAuth"> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

सेटअप:

सबसे पहले आप बाध्यकारी HTTP के लिए मूल प्रमाणीकरण का समर्थन करने के

सेटअप बाध्यकारी सेट करने की आवश्यकता जैसे:

<client> 
    <endpoint address="..." 
      name="..." 
      binding="basicHttpBinding" 
      bindingConfiguration="BasicAuth" 
      contract="..." /> 
</client> 

तो फिर तुम प्रॉक्सी के लिए साख पारित करने के लिए है:

proxy = new MyServiceClient(); 
proxy.ClientCredentials.UserName.UserName = "..."; 
proxy.ClientCredentials.UserName.Password = "..."; 
संबंधित मुद्दे