У меня есть служба веб-API ASP.NET, которая работает на веб-сервере с включенной проверкой подлинности Windows.
У меня есть клиентский сайт, построенный на MVC4, который работает на другом сайте на том же веб-сервере, который использует HttpClient для извлечения данных из службы. Этот клиентский сайт работает с включенным олицетворением личности, а также использует проверку подлинности Windows.
Веб-сервер - это Windows Server 2008 R2 с IIS 7.5.
Проблема, с которой я столкнулся, заключается в том, чтобы заставить HttpClient передать текущего пользователя Windows как часть процесса аутентификации. Я настроил HttpClient следующим образом:
var clientHandler = new HttpClientHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.PreAuthenticate = true;
clientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
var httpClient = new HttpClient(clientHandler);
Насколько я понимаю, запуск сайта с включенным олицетворением идентичности и последующее построение клиента таким образом должно привести к аутентификации клиента в службе с использованием олицетворенной идентичности текущего пользователя, вошедшего в систему.
Этого не происходит. На самом деле, похоже, что клиент вообще не аутентифицируется.
Служба настроена на использование проверки подлинности Windows, и, похоже, это работает отлично. Я могу перейти на страницу http://server/api/shippers в моем веб-браузере, и мне будет предложено выполнить аутентификацию Windows один раз введен я получаю запрошенные данные.
В журналах IIS я вижу, что запросы API принимаются без аутентификации и получают ответ на запрос 401.
Документация по этому поводу кажется скудной.
Мне нужно некоторое представление о том, что может быть не так или о другом способе использования проверки подлинности Windows с этим приложением.
Спасибо, Крейг