2009-01-08 14 views
37

के लिए एसएसएल सक्षम करें मेरे पास एक डब्ल्यूसीएफ सेवा है जो विकास में बुनियादी हैप्पीबाइंडिंग का उपयोग करती है।मेरी डब्ल्यूसीएफ सेवा

अब उत्पाद में हम एसएसएल का उपयोग करना चाहते हैं, केवल एसएसएल कनेक्शन को मजबूर करने के लिए मुझे क्या परिवर्तन करना है?

+0

यह उत्तर दिया गया है: आशा है कि यह http: // stackoverflow में मदद करता है।कॉम/प्रश्न/2 9 04883/कैसे-कर-मैं-उपयोग-wcf-with-only-basichttpbinding-ssl-and-basic-प्रमाणीकरण-इन-ii – user3607430

उत्तर

43

एमएसडीएन पर यह पृष्ठ डब्ल्यूसीएफ बाध्यकारी सुरक्षा बताता है।

http://msdn.microsoft.com/en-us/library/ms729700.aspx

BasicHttpBinding वर्ग मुख्य रूप से मौजूदा वेब सेवाओं के साथ interoperate प्रयोग किया जाता है, और के कई उन सेवाओं इंटरनेट सूचना सेवा (आईआईएस) द्वारा की मेजबानी कर रहे हैं। नतीजतन, इस बाध्यकारी के लिए परिवहन सुरक्षा आईआईएस साइटों के साथ सहज बातचीत के लिए डिज़ाइन की गई है। यह सुरक्षा मोड को परिवहन के लिए सेट करके और फिर क्लाइंट प्रमाण-पत्र प्रकार सेट करके किया जाता है। क्रेडेंशियल प्रकार मान IIS निर्देशिका सुरक्षा तंत्र में से मेल खाते हैं। निम्न कोड मोड सेट किया गया है और क्रेडेंशियल प्रकार को विंडोज़ पर सेट करता है। आप इस कॉन्फ़िगरेशन का उपयोग कर सकते हैं जब दोनों क्लाइंट और सर्वर एक ही विंडोज डोमेन पर हैं।

सी #

BasicHttpBinding b = new BasicHttpBinding(); 
b.Security.Mode = BasicHttpSecurityMode.Transport ; 
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 

या, विन्यास में:

<bindings> 
    <basicHttpBinding> 
      <binding name="SecurityByTransport"> 
       <security mode="Transport"> 
       <transport clientCredentialType="Windows" /> 
       </security> 
      </binding> 
    </basicHttpBinding> 
</bindings> 

एक लॉगिन के बिना, SSL को सक्षम करने, clientCredentialType सेट "कोई नहीं" के लिए। सुरक्षा मोड के लिए

विकल्प ये हैं:

कोई नहीं, परिवहन, संदेश, TransportWithMessageCredential और TransportCredentialOnly

आपको कम से अधिक जानकारी प्राप्त कर सकते हैं: http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

+5

इसलिए "परिवहन" का सुरक्षा मोड SSL को दर्शाता है? – Blankman

+1

हां, इस बाध्यकारी के लिए। – xtrem

0

मुझे लगता है कि अपने "बाइंडिंग" के तहत अगर तुम कहाँ <Security mode="Transport"> है, यदि आप इसे <security mode="None"> पर बदल देंगे, तो आप ठीक होंगे।

यह एक कोडबेस की एक प्रति है जिसे मैं उस कोड पर कर रहा हूं जिस पर मैंने कोड किया था, और ऐसा लगता है कि यह काम कर रहा है। मैं कम से कम डबल्यूएसडीएल मिल जब मैं सेवा मारा है कि अगर सब :)

BasicHttpBinding basicBinding = new BasicHttpBinding(); 
if (RegistryConnectionStringFactory.UseSslForCommunications) 
{ 
    basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; 
    basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
} 
else 
{ 
    basicBinding.Security.Mode = BasicHttpSecurityMode.None; 
    basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
} 
1

में मदद करता है मैं तो बस एक ही समस्या का सामना करना पड़ा है और इस MSDN लेख मिला: लेख आपको मिलेगा के अंत में How to: Configure an IIS-hosted WCF service with SSL WebConfig फ़ाइल का xml कॉन्फ़िगरेशन।

समाधान मेरे लिए ठीक काम करता है। कहने के लिए एक और बात, ध्यान रखें कि आपको अपनी रिहाई के लिए एक वास्तविक प्रमाण पत्र की आवश्यकता है!

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