2015-10-08 2 views
0

У меня есть службы WCF, не используя аутентификацию BasicHttpBinding и окна (не анонимной),Потреблять WCF с BasicHttpBinding и Аутентификация Windows

служба WCF размещается на сервере домена мне нужно потреблять услугу с сервера который находится вне домена, этот сервер не присоединяется к домену, то есть к рабочей группе. Это возможно? пожалуйста, помогите в фрагменте кода.

Конфигурация, как показано ниже

<bindings> 
    <basicHttpBinding> 
    <binding name="defaultBinding" receiveTimeout="01:00:00" sendTimeout="01:00:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
     <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" /> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Windows"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="defaultServiceBehavior"> 
     <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service behaviorConfiguration="defaultServiceBehavior" name="namespace.MyService"> 
    <endpoint binding="basicHttpBinding" bindingConfiguration="defaultBinding" contract="namespace.IMyService"> 
     <identity> 
     <dns value="abc.xyz.com"/> 
     </identity> 
    </endpoint> 
    </service> 
</services> 

Отредактировано: вот мой код клиента

_securityServiceClient = new SecurityServiceClient(); 
_securityServiceClient.ClientCredentials.UserName.UserName = "lto3"; 
_securityServiceClient.ClientCredentials.UserName.Password = "[email protected]"; 

Я получил эту ошибку

Исключение типа «System.ServiceModel.Security. MessageSecurityException "произошел в mscorlib.dll, но не был обработан в коде пользователя

Дополнительная информация: HTTP-запрос неавторизован с клиентом Схема аутентификации «Базовый». Заголовок аутентификации, полученный от , был «Negotiate, NTLM».

+0

Это один из самых основных сценариев, описанных во всех учебниках WCF. Что вы пробовали и в чем проблема? Где код клиента? –

+0

привет, спасибо за ваш взгляд, я получил это сообщение {«HTTP-запрос несанкционирован с помощью схемы аутентификации клиента« Basic ». Заголовок проверки, полученный с сервера, был« Negotiate, NTLM ».»} И вот мой код клиента _securityServiceClient = new SecurityServiceClient(); _securityServiceClient.ClientCredentials.UserName.UserName = "domain \\ account"; _securityServiceClient.ClientCredentials.UserName.Password = "password"; – khoailang

+0

привет, пожалуйста, сообщите – khoailang

ответ

0

Попробуйте использовать:

_securityServiceClient.ClientCredentials.Windows.ClientCredential = 
      new NetworkCredential("lto3", "[email protected]"); 

В соответствии с msdn documentation ClientCredentials.Windows как задать учетные данные для использования при использовании проверки подлинности Windows.

+0

спасибо, но это свойство прочитано только ClientCredentials.Windows.ClientCredential – khoailang

+0

oh, я получил исключение только для чтения всего 2 раза. Теперь он ушел :( – khoailang

+0

Вы получаете исключение только для чтения, вы уже использовали клиент уже один раз. Как только выполняется вызов, объект учетных данных делается только для чтения. – MattC

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