Internet Explorer и сертификат клиента в IFRAME - PullRequest
3 голосов
/ 10 июня 2009

У меня проблема с сайтом, который использует сертификаты на стороне клиента для аутентификации. Сайт содержит iframe, который загружает страницу, размещенную на другом сервере. На этой странице также используется сертификат клиента.

Это работает отлично, за исключением того, что сбой в работе веб-сервера «внутренняя страница» иногда приводит к потере аутентифицированного состояния пользователя (рассматриваемый сайт - ASP.NET). Я пытаюсь найти способ изящного восстановления после этого, но я не могу заставить Internet Explorer повторно передавать клиентские сертификаты, устанавливая код ответа HTTP и / или заголовок аутентификации WWW. Самое большее, вместо этого появится запрос на ввод имени пользователя и пароля.

Когда я открываю новую вкладку в Internet Explorer 8 с тем же сайтом, на этой вкладке она будет работать нормально, но на исходной вкладке сертификат клиента будет виден только «внешнему» веб-сайту. Перезагрузка страницы не помогает. Мой единственный вариант - закрыть эту вкладку и начать использовать новую ..

Кто-нибудь видел такое поведение в IE раньше? Есть ли способ заставить его повторно передать сертификат клиента?

1 Ответ

0 голосов
/ 18 августа 2011

Вам потребуется добавить заголовок P3P в ответ HTTP, чтобы сообщить IE, что все в порядке с содержимым в iframe.

Cache-Control:private
Content-Encoding:gzip
Content-Length:13801
Content-Type:text/html; charset=utf-8
Date:Thu, 18 Aug 2011 16:59:18 GMT
P3P:CP="CAO PSA OUR"
Server:Microsoft-IIS/7.0
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET

Вы можете использовать Response.AddHeader() для этого.

Response.AddHeader("P3P", "CP=\"CAO PSA OUR\"")

Или вы можете установить его в своем файле web.config, если хотите, чтобы он был широким.

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