Как разделить сеансовые куки-файлы между Internet Explorer и компонентами ActiveX, размещенными на веб-странице? - PullRequest
5 голосов
/ 15 марта 2010

В настоящее время я работаю над приложением .Net, которое отправляет HTTP-запросы некоторым веб-приложениям, размещенным на сервере IIS. Приложение развертывается через ClickOnce и отлично работает на простых сетевых архитектурах.
У одного из наших клиентов очень сложная сеть, включающая пользовательский сервер аутентификации, на котором пользователь должен сначала войти в систему, чтобы пройти аутентификацию и получить доступ к другим приложениям в этой сети. После аутентификации на этом сервере файл cookie сеанса создается и отправляется пользователю. Каждый раз, когда пользователь отправляет запрос на защищенный сервер сети, этот файл cookie проверяется для предоставления доступа пользователю. Если этот файл cookie не отправлен вместе с запросом, пользователь перенаправляется на страницу входа. Единственный используемый браузер - Internet Explorer.
Этот файл cookie не может быть доступен из нашего приложения .net, поскольку он выполняется в другом процессе, отличном от процесса Internet Explorer, который использовался для входа пользователя в систему, и, следовательно, не отправляется с нашими запросами, которые не могут быть завершены, поскольку сервер перенаправляет каждый из наши запросы к странице входа.
Я посмотрел, как встроить свое приложение в Internet Explorer, сделав видимым основной элемент управления COM и создав его на HTML-странице с тегом. Он работает правильно, однако куки-файлы сеансов, установленные ранее в браузере, не отправляются, когда элемент управления ActiveX отправляет веб-запросы.
Я надеялся, что этот обмен информацией о сеансе будет автоматическим (хотя я действительно не верил в это). Итак, мои вопросы: возможно ли иметь доступ к этому cookie во встроенном ActiveX? Как? Имеет ли смысл использовать компонент COM-взаимодействия .Net вместо «истинного» элемента управления ActiveX? Кроме того, существуют ли специальные защитные слова для описания такого поведения (учитывая, что я вообще не являюсь экспертом в вопросах безопасности, отсутствие надлежащей терминологии значительно усложняет поиск необходимых ресурсов)?

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

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Я нашел способ добиться этого, чтобы компонент ActiveX встраивал компонент Internet Explorer (объект WebBrowser) и использовал его для выполнения моих http-запросов вместо стандартных объектов класса. Благодаря этому сеансовые куки-файлы (даже http-только), установленные в Internet Explorer, становятся доступны для встроенного Internet Explorer и автоматически отправляются с каждым запросом.

0 голосов
/ 15 марта 2010

Я не очень много знаю о .NET, IIS или ActiveX, но можно ли передать куки во встроенное приложение? В Javascript есть document.cookie, который должен содержать все файлы cookie для текущего домена (те, которые отправлены для запроса текущей страницы). Вероятно, можно как-то передать это значение вашему встроенному приложению.

Извините за смутный ответ. Я надеюсь, что это может, по крайней мере, направить вас в новом направлении.

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