Как я могу создать клиентский прокси для службы WCF с конечной точкой HTTPS? - PullRequest
3 голосов
/ 02 апреля 2009

Возможно, проблема та же, что и в предыдущем вопросе: WCF Proxy , но не уверен ...

У меня есть служба HTTPS, настроенная на использование безопасности транспорта и, я надеюсь, учетные данные Windows. Доступ к сервису возможен только изнутри (то есть внутри внутренней сети). Конфигурация выглядит следующим образом:

<configuration>
  <system.serviceModel>
    <services>
      <service name="WCFTest.CalculatorService" behaviorConfiguration="WCFTest.CalculatorBehavior">
        <host>
          <baseAddresses>
            <add baseAddress = "https://localhost:8000/WCFTest/CalculatorService/" />
          </baseAddresses>
        </host>
        <endpoint address ="basicHttpEP" binding="basicHttpBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>    
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBindingConfig">
          <security mode="Transport">
            <transport clientCredentialType = "Windows"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WCFTest.CalculatorBehavior">          
          <serviceAuthorization impersonateCallerForAllOperations="false"  principalPermissionMode="UseWindowsGroups" />
          <serviceCredentials >
            <windowsAuthentication allowAnonymousLogons="false" includeWindowsGroups="true" />
          </serviceCredentials>
          <serviceMetadata httpsGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Когда я запускаю сервис, я не вижу сервис в IE. Я получаю сообщение об ошибке «эта страница не может быть отображена». Если я пытаюсь создать клиента в VS2008 с помощью мастера «Добавить ссылку на службу», я получаю эту ошибку:

Произошла ошибка при загрузке «https://localhost:8000/WCFTest/CalculatorService/'. При загрузке произошла ошибка «https://localhost:8000/WCFTest/CalculatorService/'. Основная связь была закрыта: Произошла непредвиденная ошибка на Отправить. Аутентификация не удалась, потому что удаленная сторона закрыла транспортный поток. Метаданные содержат ссылка, которая не может быть решена: «https://localhost:8000/WCFTest/CalculatorService/'. Произошла ошибка при создании HTTP-запрос к https://localhost:8000/WCFTest/CalculatorService/. Это может быть связано с тем, что сертификат сервера не настроен правильно с HTTP.SYS в HTTPS дело. Это также может быть вызвано несоответствие привязки безопасности между клиентом и сервером. базовое соединение было закрыто: неожиданная ошибка произошла при отправке. Аутентификация не удалась, потому что удаленная вечеринка закрыла транспорт поток. Если услуга определена в текущее решение, попробуйте построить решение и добавление услуги снова ссылка.

Я думаю, что мне здесь не хватает фундаментальных основ. Нужно ли настраивать некоторые сертификаты? Или все должно работать так же, как и при использовании NetTcpBinding?

Спасибо

Ответы [ 3 ]

0 голосов
/ 10 апреля 2009

Изменение

<endpoint address ="basicHttpEP" binding="basicHttpBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>

до

<endpoint address ="basicHttpEP" binding="basicHttpsBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>
0 голосов
/ 21 апреля 2010
...
<security defaultAlgorithmSuite="Default" authenticationMode="IssuedTokenOverTransport"
                    requireDerivedKeys="false" securityHeaderLayout="Strict" includeTimestamp="true"
                    keyEntropyMode="CombinedEntropy" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
                    <issuedTokenParameters keyType="SymmetricKey" tokenType="" />
...

вот мой обходной путь. Я получил выше файл конфигурации и изменил режим аутентификации с «IssuedTokenOverTransport» на «UserNameOverTransport». Это решило проблему в моей среде.

0 голосов
/ 02 апреля 2009

ng5000,

Похоже, у вас может быть другая проблема здесь (возможно, IIS). Есть ли у вас проблемы с отключенной безопасностью на транспортном уровне? Я также хотел бы убедиться, что вы можете получить доступ к веб-адресу в IE, прежде чем проверять материал WCF. Похоже, что настройки IIS не на вкладке безопасности.

Если проблема остается, попробуйте создать прокси-сервер с отключенной защитой на транспортном уровне, а затем вернитесь и измените обе конфигурации на безопасность окон транспортного уровня и посмотрите, что произойдет.

-Bryan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...