यहाँ के साथ एक HTTPS समाप्ति बिंदु को एक WCF सेवा रीडायरेक्ट करने के लिए कैसे स्थिति मैं से निपटने के लिए कोशिश कर रहा हूँ है:विंडोज क्रेडेंशियल
हम एक WCF ग्राहक कि एक http endpoint के साथ काम करता है और एक https endpoint नहीं बल्कि जब यह http से https तक रीडायरेक्ट किया गया है (302)। हमारे पास एक F5 लोड बैलेंसर है जो रीडायरेक्ट और SSL कार्यक्षमता कर रहा है लेकिन जहां तक मैं कह सकता हूं, यह अनुरोधों के लिए अप्रत्याशित कुछ भी नहीं कर रहा है। रीडायरेक्ट अपराधी प्रतीत होता है जहां डब्ल्यूसीएफ रीडायरेक्ट किए जाने के बाद विंडोज केर्बेरोस प्रमाणीकरण जानकारी प्रदान नहीं करना चाहता है।
एक सफल कॉल (यानी http कोई रीडायरेक्ट के साथ) के लिए अनुक्रम इस प्रकार है:
- क्लाइंट -
- सर्वर http योजना के साथ सेवा के लिए पोस्ट अनुरोध भेजता है - के साथ 401 अनधिकृत
- ग्राहक प्रतिक्रिया करता है - भेजता प्राधिकरण के साथ पोस्ट निगोशिएट
- सर्वर - 100 के साथ प्रतिक्रिया करता है जारी
- क्लाइंट - साबुन डेटा भेजता है और सफलतापूर्वक पूरा
जब कॉल पुनः निर्देशित है और यह इस प्रकार है विफल रहता है:
- क्लाइंट - http योजना के साथ सेवा के लिए पोस्ट अनुरोध भेजता
- सर्वर - एक ही पते के लिए https योजना को पुन: निर्देशन के साथ रिटर्न 302
- क्लाइंट - भेजता https पते के लिए प्राप्त (मैं समझ नहीं क्यों यह एक GET और नहीं एक पोस्ट है)
- सर्वर - 401 अनधिकृत साथ प्रतिक्रिया करता है 0
- क्लाइंट - अपवाद फेंकता है "HTTP अनुरोध क्लाइंट प्रमाणीकरण योजना 'वार्तालाप' के साथ अनधिकृत है। प्रमाणीकरण सर्वर से प्राप्त हैडर था 'निगोशिएट, NTLM'। तोड़ने WCF प्रोटोकॉल "
यह this problem के समान है लेकिन ठीक उसी नहीं है (और वहाँ वास्तव में एक जवाब नहीं है, हालांकि यह संदर्भ करता है" " जो मुझे ड्यूमेटेशन मिल सकता है)। अगर हम एफ 5 रीडायरेक्ट नियम http और https ट्रैफिक को ठीक से काम करते हैं। क्या डब्ल्यूसीएफ वास्तव में इस सरल रीडायरेक्ट को संभाल नहीं लेता है? क्या इस दोष पर कोई कामकाज या कोई दस्तावेज है?
क्लाइंट कॉन्फ़िगरेशन (ध्यान दें कि https के साथ इसका परीक्षण करते समय, मैं ट्रांसपोर्ट क्रेडिट को केवल परिवहन में बदलता हूं):
<client>
<endpoint address="http://fooserver/MyService.svc/" binding="basicHttpBinding" bindingConfiguration="clientBinding" contract="Contracts.IMyService" />
</client>
<bindings>
<basicHttpBinding>
<binding name="clientBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
सर्वर config इस तरह दिखता है:
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="MyServiceBehavior" name="MyService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="securedBinding" contract="Contracts.IMyService">
</endpoint>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="securedBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="http" port="80" />
<add scheme="https" port="443" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
संभावित डुप्लिकेट [302 प्रतिक्रिया का सामना करने पर डब्ल्यूसीएफ एसओएपी सेवा क्यों कॉल करने में विफल रहेगा?] (Http://stackoverflow.com/questions/17152385/why-would-wcf-fail-to-call-a -सोप-सेवा-कब-ए -302-प्रतिक्रिया-सामना किया जाता है) – Luizgrs