मैं एक WCF स्वयं के द्वारा होस्ट सेवा, जिसके लिए मैं दो बुनियादी सुरक्षा आवश्यकताओं है के रूप में यह इंटरनेट पर पहुँचा दिया जाएगा विकसित किया है:क्या परिवहन WithMessage प्रमाण पत्र के बिना प्रमाण पत्र एक डब्ल्यूसीएफ सेवा के लिए पर्याप्त सुरक्षित है?
परिवहन परत छेड़छाड़ और सूँघने, विशेष रूप से प्रमाणीकरण की बहाली रोकने चाहिए साख। यह एसएसएल करता है, लेकिन मैंने जो कुछ देखा है, उससे एसएसएल को स्थापित करने के लिए प्रमाण पत्र की स्थापना की आवश्यकता है (शायद this hack के माध्यम से जो सादे प्रमाणपत्र फाइलों का उपयोग करता है), जिसे मैं करना नहीं चाहता हूं।
प्रमाणीकरण परत में उपयोगकर्ता नाम/पासवर्ड सत्यापनकर्ता होना चाहिए।
मैं उपयोग करने के लिए मेरी सेवा के लिए कॉन्फ़िगर:
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
<transport clientCredentialType="Basic" />
</security>
यहां तक कि अगर परिवहन परत http (https) है, इस WCF एक अन्य सुरक्षा परत है कि एसएसएल के बराबर है बनाने करता है? यदि नहीं, तो सुरक्षा शक्ति के मामले में क्या अंतर है?
साथ ही, एसएसएल प्रमाणपत्र का उपयोग किये बिना मेटा डेटा एंडपॉइंट को सुरक्षित करने का कोई तरीका है (आवश्यक नहीं है लेकिन इसकी सराहना की जाएगी)?
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<system.serviceModel>
<services>
<service name="MyService">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8000/Services" />
</baseAddresses>
</host>
<endpoint address ="MyService" binding="wsHttpBinding" contract="IMyService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="Binding1" maxReceivedMessageSize="2147483647">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
<transport clientCredentialType="Basic" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="CR.Common.Services.CustomValidator, Common" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
धन्यवाद:
यहाँ स्वयं के द्वारा होस्ट सेवा के लिए अपना पूरा विन्यास कोड है!
मैं संभवतः प्रमाण पत्र के बिना एक सरल स्थापना चाहूंगा यदि संभव हो तो। कुछ ऐसा जहां सर्वर को कस्टम उपयोगकर्ता नाम/पासवर्ड (कोई विंडोज प्रमाणीकरण) की आवश्यकता होगी और फिर संचार गोपनीयता और अखंडता की गारंटी होगी। –
जैसा कि मैंने आपको बताया था, आपको संदेश पर हस्ताक्षर करने और एन्क्रिप्ट करने के लिए "कुछ" चाहिए, यही कारण है कि आप UserNamePasswordValidator को प्रमाणपत्र की आवश्यकता है। आपको कुछ हैक मिल सकता है जो इसे प्रमाण पत्र के बिना काम करता है, लेकिन फिर आपका संदेश हस्ताक्षरित/एन्क्रिप्टेड नहीं होगा। प्रमाण पत्र स्थापित करना काफी आसान है, और आप प्रमाण पत्र स्वत: हस्ताक्षरित (सर्वर पर जेनरेट किए गए) का भी उपयोग कर सकते हैं, इसलिए इससे आपको कुछ पैसे नहीं मिलते हैं। – Fabske
मैं केवल एक सर्वर प्रमाण पत्र का उपयोग कर समाप्त हुआ, हालांकि मुझे अभी भी विश्वास है कि इसे मेरे जैसे दृश्यों के लिए आसान बनाया जा सकता है। –