Как обрабатывать всплывающую аутентификацию? - PullRequest
1 голос
/ 03 декабря 2010

Я довольно новичок в этом, и мне больше некого спрашивать.Я пытаюсь получить доступ к веб-странице программно (C #) для некоторого программного обеспечения.Я выяснил, как использовать классы HttpWebResponse и HttpWebRequest для входа в систему через форму веб-страницы, но у меня есть веб-сайт с двухэтапной процедурой входа в систему.

Первый вход происходит через всплывающее окно.-до.Веб-страница не загружается в фоновом режиме, только всплывающее диалоговое окно с сообщением о необходимости аутентификации и запросом имени пользователя и пароля.

После получения первого входа в систему второй вход в систему - просто веб-форма, которую я долженуметь справляться с тем, что я уже выучил.

Мой вопрос: как программным способом предоставить информацию для входа во всплывающий запрос аутентификации?

EDIT

Просто чтобы предоставить больше информации.Fiddler выдает Host как CONNECT при попытке получить доступ к веб-сайту.

EDIT

Я попытался использовать ответ MrEye, приведенный ниже, и, хотя мне показалось, что он немного продвинулся, все еще возникают проблемы.У меня были проблемы с сертификатом, поэтому после некоторой работы Google я нашел обходной путь, добавив следующий код:

ServicePointManager.ServerCertificateValidationCallback +=
            delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };

Теперь я получаю System.Net.WebException со значением «Сервер удаления возвратилошибка: (401) Несанкционированный. "Исключением Status является ProtocolError, хотя я не смог получить дальше.Я точно знаю, что имя пользователя и пароль действительны.

1 Ответ

1 голос
/ 03 декабря 2010

Все, что вам нужно сделать - это присвоить объект NetworkCredential свойству Credentials созданного вами объекта HttpWebRequest. Например:

myWebRequest.Credentials = new NetworkCredential("username","password");

В зависимости от сервера, к которому вы подключаетесь, может потребоваться:

myWebRequest.PreAuthenticate = true; 
...