Практическое руководство. Межсайтовая публикация и перенаправление в веб-формах ASP.NET

Сценарий:

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

Вопрос:

Как только я упакую свои XML-данные, как мне программно выполнить публикацию на втором веб-сайте и перенаправить браузер пользователя на второй веб-сайт.

Это должно вести себя так же, как форма, например:

action="http://www.www.com/postthere" method="post"

... и наличие скрытого текстового поля, например:

input type="hidden" value="мой зашифрованный xml"

Это пишется в веб-формах asp.net 2.0.

--

Редактировать: Ник спрашивает, почему описанная выше HTML-форма не работает. Ответ: я не контролирую ни один из сайтов; Я создаю «среднего человека», благодаря которому все это происходит. Сайт 1 перенаправляет пользователя на страницу, которую я делаю, мне нужно создать XML, а затем перенаправить его на сайт 2. Сайт 1 не хочет, чтобы пользователь знал о моем сайте, перенаправление должно быть прозрачным.

Процесс, который я описал выше, является обязательным для обеих сторон (сайт A и сайт B).


person programmer    schedule 24.10.2008    source источник


Ответы (3)


Отправьте обратно документ, содержащий from со скрытым вводом, и включите обработчик загрузки, который немедленно отправляет форму на другой сайт. Использование jquery document.ready() решает проблему загрузки DOM до появления сообщения, хотя есть и другие способы сделать это без jquery. Возможно, вы захотите включить небольшое сообщение на экране о том, что пользователь будет перенаправлен в ближайшее время, и предоставить ссылку, которая также делает публикацию.

...headers left out...

<script type='text/javascript'>

$(document).ready( function() {
   $('form:first').submit();
 });
</script>

<body>
   <form action='othersiteurl' method='POST'>
       <input type='hidden' value='your-encrypted-xml" />
   </form>
</body>
person tvanfosson    schedule 24.10.2008

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

Вы уже делаете публикацию на другой сервер, поэтому вам действительно не нужно ничего делать. Форма, которая у вас есть, уже идеальна, и когда другой сервер перехватывает запрос, он принимает решение либо разрешить пользователю войти и продолжить работу на сайте, либо перенаправить его обратно к своему рефереру (так в оригинале) в заголовке. При перенаправлении обратно к рефереру они могут захотеть добавить сообщение о том, что было не так, например, ?error=no_auth

person Nick Berardi    schedule 24.10.2008
comment
Я не контролирую ни один из сайтов; Я создаю посредника, благодаря которому все это происходит. Сайт 1 перенаправляет пользователя на страницу, которую я делаю, мне нужно создать XML, а затем перенаправить его на сайт 2. Сайт 1 не хочет, чтобы пользователь знал о моем сайте, перенаправление должно быть прозрачным. - person programmer; 24.10.2008

Я написал об этом по другому вопросу некоторое время назад. Надеюсь это поможет:

Как вы передаете аутентифицированный сеанс между доменами приложений

person craigmoliver    schedule 28.10.2008