1

设想:

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

问题:

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

这应该表现得就像具有如下形式:

action="http://www.www.com/posthere" 方法="post"

...并有一个隐藏的文本字段,例如:

输入类型=“隐藏”值=“我的加密xml”

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

--

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

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

4

3 回答 3

3

发回一个包含带有隐藏输入的 from 的文档,并包含一个 onload 处理程序,该处理程序将表单立即发布到另一个站点。使用 jquery 的 document.ready() 解决了在 post 发生之前是否加载 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>
于 2008-10-24T18:55:48.483 回答
0

您正在考虑这个过于面向过程的问题,您将需要一个月的周日时间来尝试按照您的建议解决所有错误和移动部件。

您已经在向另一台服务器发帖,所以您真的不需要做任何事情。您拥有的表单已经很完美,当其他服务器拦截请求时,它决定允许用户进入并继续通过站点,或者将它们重定向回标头中的引用者(原文如此)。当重定向回Referer时,他们可能想要附加一条说明出了什么问题的消息,例如 ?error=no_auth

于 2008-10-24T14:40:05.613 回答
0

我不久前写了另一个问题。希望这可以帮助:

您如何在应用程序域之间传递经过身份验证的会话

于 2008-10-28T14:32:04.340 回答