Как сделать аутентификацию HTTP-запроса анонимным NTLM с помощью HttpWebRequest - PullRequest
3 голосов
/ 24 января 2011

Моя команда недавно обнаружила ошибку в некоторых из наших служебных кодов, например, запрос HTTP, аутентифицированный с помощью анонимного SID NTLM ( не , такой же, как анонимная HTTP-аутентификация; это успешный обмен аутентификацией NTLM, Результаты анонимного SID) было разрешено продолжить, когда он должен был быть отклонен. Мы исправили проблему, изучив свойство WindowsIdentity.IsAnonymous, но я хочу написать автоматический тест для этого случая, чтобы у нас никогда не возникало этой проблемы снова.

Что приводит меня к моей проблеме. Мне нужно сделать HTTP-запрос GET на определенный URL-адрес, используя HttpWebRequest или Microsoft.HttpClient, который аутентифицируется через NTLM в качестве анонимного SID. Пока что единственный способ сделать это - запустить клиентский код как LocalSystem; по понятным причинам это не идеально для нашего режима автоматического тестирования.

Я пробовал это:

using (WindowsIdentity.GetAnonymous().Impersonate()) { 
    //Make HTTP request here, with UseDefaultCredentials = true
}

но Impersonate выдает исключение, указывающее, что анонимный токен не может быть подделан.

Есть еще идеи?

1 Ответ

0 голосов
/ 25 января 2011

Я думаю, вам просто нужно установить UseDefaultCredentials в false:

request.Credentials = null;
request.UseDefaultCredentials = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...