2009-06-01 5 views
4

Я делаю сайт ASP.NET для клиента, который хочет сделать свою страницу отчетов доступной через IFRAME на других сайтах «реселлеров». Веб-сайты реселлеров предоставляют ту же услугу с различным брендингом. Мне нужно избегать, где я могу, требуя от них реализовать любой код на своем веб-сервере, чтобы включить это - следовательно, используя iframes.Как аутентифицировать пользователей через домены с помощью ASP.NET и iframe?

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

Мы можем использовать сертификаты сервера SSL, но не любой федеративный вход (например, OpenId) - бизнес-клиент.

Вопрос в том, как первичный сайт подтверждает, что страница отчета действительно запрашивается пользователем, который загрузил страницу у реселлера? Другими словами, как аутентифицировать пользователя через домены, не требуя от продавца возможности реализовать код.

Любые мысли были бы очень признательны!

ответ

2

Я не вижу никакого удовлетворительного способа сделать это без осуществления какого-либо кода на сайте реселлера.

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

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

Ответ этого запроса будет содержать строку фрагмента html, которую реселлер может вводить на любую страницу.

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

При таком подходе я бы сказал, что HTTPS не требуется в браузере, поскольку как реселлер, так и их пользователь аутентифицированы, и если этот процесс произошел через HTTPS, мы можем предположить, что нет подслушивания.

В случае, когда секретный ключ или пароль пользователя скомпрометированы, HTTPS из браузера не имеет никакого значения.

0

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

Например, создайте HTML-страницу на своем сервере с помощью iframe для gmail. Пока вы авторизованы против gmail в своем браузере, вы увидите свой почтовый ящик на этой странице ...

+0

Спасибо за ответ. В ответ; он еще не аутентифицирован во втором домене. Пользователь регистрируется в домене A, загружает страницу из нее, содержащую iframe, которая загружает контент из домена B. Как аутентифицировать пользователя в домене B без реализации (не HTML) кода на сервере в A? –

+0

Используйте тот же механизм, который пользователь использует при входе на ваш сайт. например если пользователь не войдет в систему, он увидит страницу входа в систему ... (опять же, как и в gmail) –

4

Ваша форма для входа в систему может использовать некоторый javascript для отправки формы входа в скрытый iframe (вы не можете использовать XMLHTTPRequest из-за проблем с перекрестной безопасностью) для каждого домена, для которого требуется вход в систему.

Обязательно перенаправляйте свой iframe обратно в исходный домен или вы не сможете получить статус входа в систему из iframe из-за междоменной безопасности.

Окончательный трюк для поддержки IE является перевернуть злую немного и добавить

P3P: CP="CAO PSA OUR" 

ваших заголовков ответа HTTP. Что говорит браузеру «Я не собираюсь делать ничего плохого, честного».

http://support.microsoft.com/kb/323752

http://www.w3.org/P3P/

+0

Интересно, спасибо, пока не уверены, если это еще ответ, но посмотрим на него. –

+0

Извинения, не уточнили: сайт реселлера регистрирует пользователя на своем сервере и хочет избежать второго входа в систему. Итак, если реселлер сообщает основному сайту «Боб здесь хочет видеть отчет», первичный пользователь может найти пользователя Боба, и пока он может проверить, действительно ли запрос пришел от авторизованного реселлера, откройте отчет. Полезный ответ, я даю вам точку :) –

Смежные вопросы