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

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

Есть другие идеи?


person anelson    schedule 24.01.2011    source источник


Ответы (1)


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

request.Credentials = null;
request.UseDefaultCredentials = false;
person csharptest.net    schedule 24.01.2011
comment
Похоже, это не работает. Я написал тест, который делает это, и с помощью Fiddler я могу видеть генерируемый им HTTP-запрос. Вместо использования NTLM с анонимным токеном он заставляет HTTP-клиент не использовать аутентификацию, поэтому, когда сервер отправляет обратно запрос NTLM, клиент отказывается. - person anelson; 25.01.2011
comment
Я не уверен, что понимаю ваше различие между NTLM с анонимным токеном и HTTP-клиентом, не использующим аутентификацию. Один из нас явно не понимает, как работает анонимная учетная запись;) - person csharptest.net; 25.01.2011