Проблема с сертификатом WCF - как отключить безопасность в целях тестирования? - PullRequest
0 голосов
/ 23 сентября 2010

При попытке подключиться к веб-службе WCF я получаю следующую ошибку:

WCF web query ... Unhandled Exception: System.ServiceModel.Security.SecurityNegotiationException: The caller was not authenticated by the service. ---> System.ServiceModel.FaultException: The request for security token could not be satisfied because authentication failed. at System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(Message message, EndpointAddress target) at System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingM essageBody(Message incomingMessage, SspiNegotiationTokenProviderState sspiState)

Я написал как клиент WCF, так и серверные приложения на C #.Клиент прекрасно общается с сервером, когда он работает локально, но падает с ошибкой запроса сертификата, когда я делаю тот же вызов на удаленный сервер, скопированный на удаленный облачный компьютер Amazon EC2.

Как временно отключитьзапросы сертификатов в WCF, просто чтобы я мог видеть, все ли работает правильно?

1 Ответ

0 голосов
/ 23 сентября 2010

Понял!Выключил охрану.Теперь я могу поговорить с удаленной службой WCF, все работает отлично.

Ключ заключается в том, чтобы запустить инструмент настройки WCF, чтобы изменить транспортный уровень на привязку basicHTTP и убедиться, что по умолчанию безопасность отключена.Вот шаги.

  1. Запустите «Изменить конфигурацию WCF», щелкнув правой кнопкой мыши на App.Config.
  2. Создайте новую привязку без защиты.Под «Привязки» выберите «Новая конфигурация привязки».Я выбрал «basicHTTPbinding», который по умолчанию не имеет безопасности.Я назвал этот профиль привязки «nosecurity».
  3. Настройте конечную точку для использования этой привязки «nosecurity».В разделе «Конечная точка службы» для транспортного уровня (не mex - это для обнаружения службы) выберите «basicHTTPbinding» в качестве «Binding», а в разделе «Binding Configuration» выберите профиль «nosecurity».
  4. Теперь все работает отлично, без ошибок сертификата.

Вот завершенный файл App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="nosecurity" />
            </basicHttpBinding>
        </bindings>
        <services>
            <service behaviorConfiguration="PhiFeedServiceBehavior" name="NeuralFutures.Datafeed.PhiFeed">
                <endpoint address="" binding="basicHttpBinding" bindingConfiguration="nosecurity"
                    contract="NF.Datafeed.IPhiFeed" />
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:31415/PhiFeed" />
                    </baseAddresses>
                </host>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="PhiFeedServiceBehavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="False"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...