У меня есть служба веб-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 с этим приложением.
Спасибо, Craig