Невозможно выполнить аутентификацию в службе веб-API ASP.NET с помощью HttpClient.

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

Спасибо, Крейг

37
задан Craig Anderson 25 April 2012 в 03:26
поделиться