Веб-сервис с аутентификацией Windows с помощью Soap Client - PullRequest
5 голосов
/ 23 октября 2011

Мне нужно получить доступ к веб-сервису из приложения форм c #.

Веб-сервису требуется аутентификация Windows.

Я использую следующий код:

ServiceDeskSoapClient sd = new ServiceDeskSoapClient();
sd.ClientCredentials.UserName.UserName = @"mydomain\myusername";
sd.ClientCredentials.UserName.Password = "mypassword";
sd.MyMethod();

Но получите следующую ошибку:

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'.

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

Ответы [ 2 ]

7 голосов
/ 29 октября 2015

Добавьте следующее в раздел в клиентском app.config:

<security mode="TransportCredentialOnly">
  <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
  <message clientCredentialType="UserName" algorithmSuite="Default" />
</security>

(из http://morrisbahrami.blogspot.com.au/2011/02/http-request-is-unauthorized-with.html)

7 голосов
/ 30 марта 2012

На случай, если кому-то еще это понадобится, я с удовольствием выяснил это сегодня. Это действительно было довольно просто:

var server = new MySoapClient();
if (server.ClientCredentials != null)
{
    server.ClientCredentials.Windows.AllowNtlm = true;
    server.ClientCredentials.Windows.ClientCredential = new NetworkCredential("MyUsername", "MyPassword", "MyDomain");
}
...