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

Я пишу программное обеспечение на C # и .NET для управления моим магазином, на котором есть сайт, на котором вы можете пойти и принять участие в посещении продавца.На этом сайте есть скрытый менеджер, но я хочу, чтобы программное обеспечение делало это вместо этого, эффективно удаляя диспетчер браузера, и первым шагом к этой цели является предоставление программному доступу скрипта PHP, который генерирует требуемый файл XML.

Проблема в том, что механизм входа в систему, написанный на C # и использующий web.config, не позволяет программному обеспечению обращаться к указанному сценарию, который находится внутри защищенной папки для менеджера браузера.Я уже пытался использовать объект HttpWebRequest, объект WebClient с множеством комбинаций записей, учетных данных, потоков и даже специального агента пользователя, чтобы попытаться войти в систему, но безуспешно, я могу только загрузить страницу входа.

Воткод, который я использую для загрузки данных в данный момент (это моя последняя попытка с использованием специального заголовка):

string agent = "AGENT"; //Not real name, it's just confidential
WebClient client = new WebClient();
client.Headers["HTTP_USER_AGENT"] = agent;
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompletedEvtHdl);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChangedEvtHdl);
if (!Directory.Exists(toSavePath))
{
   Directory.CreateDirectory(toSavePath);
}
 if (File.Exists(toSavePath + filename))
{
   File.Delete(toSavePath + filename);
}
client.DownloadFileAsync(new Uri(url), toSavePath + filename);

Страница входа довольно проста, она только передает событие нажатия на кнопку входа, чтобыпроверьте, совпадают ли имя пользователя и пароль в файле web.config.Если это правда, нужно перенаправить страницу, в противном случае ошибка.

Итак, каков наилучший метод для этого?Есть ли способ настроить IIS7 для пропуска аутентификации на этом специальном пользовательском агенте или каком-либо другом настраиваемом заголовке?Или я иду неправильным путем?

Заранее спасибо!

1 Ответ

0 голосов
/ 30 августа 2010

Что вы хотите сделать, это написать HttpModule (или использовать global.asax) для подключения к событию AuthorizeRequest.

На этом этапе вы можете проверить все, что позволяет вашему пользователю обходить вход в систему, и затем вы можете установить

context.SkipAuthorization = true

http://csharpdotnetfreak.blogspot.com/2009/04/aspnet-bypass-forms-authentication.html

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