2016-09-23 9 views
1

Я установил свой веб-сервис IIS WCF для использования проверки подлинности Windows (более https) и при доступе к WSDL, я получаю запрос от сервера для аутентификации , который затем работает. Так что все хорошо.WCF: Не удалось установить доверительные отношения для безопасного канала SSL/TLS с полномочиями

Однако я не могу понять, как передать учетные данные Windows текущего пользователя, я продолжаю получать ошибку, как подробно описано в теме.

Это сервер web.config:

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
    <system.serviceModel> 

     <bindings> 
     <wsHttpBinding> 
      <binding name="wsBindingTest"> 
      <security mode="Transport"> 
       <message negotiateServiceCredential="true" clientCredentialType="Windows"/> 
       <transport clientCredentialType="Windows"/> 
      </security> 
      </binding> 
     </wsHttpBinding> 
     </bindings> 

     <protocolMapping> 
     <remove scheme="http" /> 
     <add scheme="http" binding="wsHttpBinding" bindingConfiguration="wsBindingTest" /> 
     </protocolMapping> 

     <behaviors> 
     <serviceBehaviors> 
      <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
     </serviceBehaviors> 
     </behaviors> 

     <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    </configuration> 

Это клиент:

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <system.serviceModel> 
      <bindings> 
       <wsHttpBinding> 
        <binding name="BasicHttpBinding_ITRIMService"> 
        <security mode="Transport"> 
         <transport clientCredentialType="Windows" proxyCredentialType="None" /> 
         <message clientCredentialType="Windows" negotiateServiceCredential="true"/> 
        </security> 
        </binding> 
       </wsHttpBinding> 
      </bindings> 
      <client> 
       <endpoint address="https://servername.net/TRIMDev/TRIMService.svc" 
        binding="wsHttpBinding" bindingConfiguration="BasicHttpBinding_ITRIMService" 
        contract="Service.ITRIMService" name="BasicHttpBinding_ITRIMService"> 
        <identity> 
         <servicePrincipalName value="host/servername.net" /> 
        </identity> 
       </endpoint> 
      </client> 
     </system.serviceModel> 
    </configuration> 

Это код, который в конечном счете, создает канал:

ConfigurationChannelFactory<ITRIMService> channelFactory = new ConfigurationChannelFactory<ITRIMService>("BasicHttpBinding_ITRIMService", config, null); 
var channel = channelFactory.CreateChannel(); 

Я пытался добавив следующее в конфигурацию клиента, не повезло, надеясь, что это можно сделать без необходимости кодировать что-либо в t он клиент:

<system.web> 
     <identity impersonate="true"/> 
     <authentication mode="Windows" /> 
    </system.web> 

Любая помощь была бы очень признательна, поскольку я просто недостаточно знаю, чтобы узнать, почему она не работает.

ответ

0

Проверка подлинности Windows не работает над wsHttpBinding, поддерживается только для NetTcpBinding. Справочная информация here.

+0

Я так не думаю, wsHTTPbinding - это текущая версия, а wsBasic - это наследие. Однако у меня есть работа, но я не совсем понимаю, почему. Если у меня есть раздел , он работает, но если он удален, он проходит через анонимный –

 Смежные вопросы

  • Нет связанных вопросов^_^