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

StackOverflow https://stackoverflow.com/questions/233691

Вопрос

Сценарий:

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

Вопрос:

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

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

действие = "http://www.www.com/posthere" метод = "пост"

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

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

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

--

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

Процесс, который я описал выше, — это то, что требуют обе стороны (сайт А и сайт Б).

Это было полезно?

Решение

Отправьте обратно документ, содержащий форму со скрытым вводом, и включите обработчик загрузки, который немедленно отправляет форму на другой сайт.Использование document.ready() jquery решает проблему того, загружается ли 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>

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top