HttpWebRequest 401 с проверкой подлинности NTLM - PullRequest
3 голосов
/ 13 февраля 2012

У меня проблемы с аутентификацией HttpWebRequest на веб-сервере. Ответ, который я получаю, - просто 401. Я удостоверился, что правильно установил учетные данные на стороне C #, и IIS правильно настроен для разрешения проверки подлинности NTLM. Я не знаю, имеет ли это значение, но он не находится в том же домене, что и веб-сервер.

Я уверен, что пользователь / пароль правильный, но есть ли какие-либо другие параметры авторизации, необходимые для настройки на пользователя?

Если я включаю обычную аутентификацию и отключаю аутентификацию Windows, запрос работает отлично (с корректным изменением кода C #, конечно).

Чего мне не хватает?

    webRequest.UseDefaultCredentials = false;
    webRequest.PreAuthenticate = true;
    var c = new NetworkCredential("User", "password", "domain");

    CredentialCache credentialCache = new CredentialCache();
    credentialCache.Add(new Uri(Url), "NTLM", c);
    webRequest.Credentials = credentialCache;

Вот снимок моих настроек в IIS.

IIS Authentication Configuration

Трассировка невыполненного запроса:

Tracing Error Log

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

С помощью коллеги мы смогли определить, что что-то не так в том, как Windows работала с аутентификацией.Похоже, настройка в локальной безопасности была неправильной.Изменение Локальные политики> Параметры безопасности> Доступ к сети: модель общего доступа и безопасности для локальных учетных записей только для Гостя - локальные пользователи, прошедшие проверку подлинности как Гость для Классика, устранили проблему.

enter image description here

0 голосов
/ 13 февраля 2012

Каково значение строк кэша учетных данных,

CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(Url), "NTLM", c);

почему бы просто не установить

webRequest.Credentials = c;

401.2, вероятно, означает, что либо к тому веб-серверу, к которому вы подключаетесь, не разрешено использовать NTLM (что, как вам кажется, соответствует вашему скриншоту), либо к тому, что между вашим клиентом и веб-сервером есть прокси

...