Моя команда недавно обнаружила ошибку в некоторых из наших служебных кодов, например, запрос 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 выдает исключение, указывающее, что анонимный токен не может быть подделан.
Есть еще идеи?