2013-02-13 22 views
7

के साथ HTTP अनुरोध को प्रतिबंधित किया गया था यह सीम एक आम समस्या है, और मैंने यहां सभी उत्तरों को देखा है लेकिन किसी ने भी मदद नहीं की है।क्लाइंट प्रमाणीकरण योजना 'बेनामी'

मैं आईएसआई पर होस्ट की गई बेसिचपैबिंडिंग और डब्ल्यूसीएफ सेवा के साथ काम करने के लिए एसएसएल प्राप्त करने की कोशिश कर रहा हूं। मुझे लगता है कि समस्या आईआईएस में या प्रमाण पत्र के साथ है। मैंने आईआईएस मैनेजर में एक स्व-हस्ताक्षरित प्रमाणपत्र बनाया है। मेरा प्रमाणपत्र "mycomputer" कहा जाता है और इसे विश्वसनीय रूट प्रमाणीकरण के तहत भी रखा गया है। ग्राहक को प्रमाणपत्र खोजने में कोई समस्या नहीं है।

आईआईएस में मेरी सेटिंग्स अज्ञात ऑथ सक्षम करने और बाकी सब कुछ अक्षम करने के लिए हैं। एसएसएल की आवश्यकता है और क्लाइंट प्रमाण पत्र स्वीकार करें। क्या वो सही है? अगर मैं अनदेखा करना चुनता हूं तो मुझे एक त्रुटि मिलती है।

मैं अपनी कॉन्फ़िगरेशन के साथ कुछ भी गलत नहीं देख सकता, क्या ये सही हैं?

सेवा config:

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="MyBehaviour" name="BasicHttpSecTest.Service1"> 
    <endpoint name="MyEndPoint" address="https://mycomputer/wp/" binding="basicHttpBinding" bindingConfiguration="ClientCertificateTransportSecurity" contract="BasicHttpSecTest.IService1" /> 
    <!--<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />--> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyBehaviour"> 
     <serviceMetadata httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <serviceCredentials> 
     <clientCertificate> 
      <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck"/> 
     </clientCertificate> 
     </serviceCredentials> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <basicHttpBinding> 
    <binding name="ClientCertificateTransportSecurity"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Certificate" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
</system.serviceModel> 

ग्राहक कॉन्फ़िग:

<system.serviceModel> 
<client> 
    <endpoint address="https://mycomputer/wp/Service1.svc" binding="basicHttpBinding" 
     bindingConfiguration="MyEndPoint" contract="ServiceSSLref.IService1" 
     name="MyEndPoint1" behaviorConfiguration="ClientCertificateCredential"/> 
</client> 

<bindings> 
    <basicHttpBinding> 
     <binding name="MyEndPoint"> 
      <security mode="Transport"> 
       <transport clientCredentialType="Certificate" /> 
      </security> 
     </binding> 
    </basicHttpBinding> 
</bindings> 

<behaviors> 
    <endpointBehaviors> 
    <behavior name="ClientCertificateCredential"> 
     <clientCredentials> 
     <clientCertificate findValue="mycomputer" storeLocation="LocalMachine" storeName="My" x509FindType="FindByIssuerName" /> 
     <serviceCertificate> 
      <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck"/> 
     </serviceCertificate> 
     </clientCredentials> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
</system.serviceModel> 

उत्तर

6

मुझे लगता है कि आपकी समस्या आपके क्लाइंट प्रमाणपत्र में हो सकता है। क्लाइंट क्रेडेंशियल टाइप = "सर्टिफिकेट" सेट करना जो आप डब्ल्यूसीएफ को बताते हैं, उस क्लाइंट को सर्वर द्वारा भरोसेमंद प्रमाणपत्र निर्दिष्ट करना होगा। जैसा कि मैंने समझा है, आपके पास केवल सर्वर-साइड जेनरेटेड प्रमाणपत्र है।

<transport clientCredentialType="None" /> 

यह आपको सर्वर द्वारा विश्वसनीय प्रमाण पत्र की आवश्यकता के बिना संदेश भेजने की अनुमति देगा। या आप ग्राहक पक्ष पर प्रमाण पत्र जेनरेट करने और इसे अपने सर्वर पर विश्वसनीय फ़ोल्डर में रखने का प्रयास कर सकते हैं। शायद यह स्थिति आपको http://msdn.microsoft.com/en-us/library/ms731074.aspx

+1

धन्यवाद, मुझे लगता है कि उस त्रुटि का समाधान हो सकता है। हालांकि, मुझे मिलता है "रिमोट सर्वर ने एक अप्रत्याशित प्रतिक्रिया वापस कर दी: (405) विधि अनुमत नहीं है।" एक ही चरण में, इसलिए मुझे यकीन नहीं है कि यह बेहतर या खराब – Zeezer

+0

देखें कि क्या आपके अनुबंध इंटरफ़ेस में सार्वजनिक कीवर्ड है या नहीं। और सी को भूलना न भूलें: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> ServiceModelReg.exe -i – Alex

+1

बहुत बहुत धन्यवाद! इस समस्या के साथ दिनों में बैठे थे। अब इसकी कामकाजी और आखिरी समस्या एक आसान फिक्स था। मेरा पता https: //mycomputer/wp/Service1.svc होना चाहिए, और https: // mycomputer/wp/नहीं होना चाहिए। – Zeezer

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