如何:ASP.NET Webforms中的跨站点发布和重定向

时间:2008-10-24 14:13:17

标签: asp.net asp.net-2.0 cross-server

情境:

我手头的任务是在不同的组织/网站之间启用单点登录解决方案。我从一个组织的网站上作为经过身份验证的用户开始,将特定信息转换为Xml文档,使用triple des加密文档,然后将其作为post变量发送到第二个组织登录页面。

问题:

打包完xml数据后,如何以编程方式对第二个网站发布帖子,并将用户的浏览器重定向到第二个网站。

这应该像使用以下形式一样:

action =“http://www.www.com/posthere”method =“post”

...并且隐藏文字字段如:

input type =“hidden”value =“my encrypted xml”

这是用asp.net 2.0 webforms编写的。

-

编辑:Nic问为什么我上面描述的html表单不起作用。答:我无法控制任何一个网站;我正在建立使这一切成为现实的“中间人”。站点1将用户转发到我正在制作的页面,我必须构建XML,然后将其转发到站点2.站点1不希望用户知道我的站点,重定向应该是透明的。

我上面描述的过程是双方(站点A和站点B)所要求的。

3 个答案:

答案 0 :(得分:3)

发回一个包含from with hidden输入的文档,并包含一个onload处理程序,可以立即将表单发布到另一个站点。使用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>

答案 1 :(得分:0)

你正在考虑这个过程导向,你需要花一个月的时间来尝试找出你所建议的所有错误和移动部分。

您已经在另一台服务器上发帖了,所以您根本不需要做任何事情。您拥有的表单已经完美,当其他服务器截获请求时,它决定允许用户进入并继续通过站点,或者将它们重定向回标题中的Referer(sic)。当重定向回Referer时,他们可能希望查找说明错误的消息,例如?error = no_auth

答案 2 :(得分:0)

我曾经写过另一个问题。希望这会有所帮助:

How do you pass an authenticaticated session between app domains