2010-01-19 89 views
4

我有一个应用程序,我在javasctip模式中使用jquery显示一些东西。它需要 。用户登录某些流量;但我们永远不会为用户留下模式。跨域与iframe,指向SSO服务器

所以这里是我们目前的工作。

  1. 在用户流量,如果用户需要先登录,我们隐藏当前的div并显示登录DIV
  2. 保持一个隐藏的iframe与作为我们的SSO服务器的源代码的链接。
  3. 一旦用户提交表单,我们将隐藏的iframe提交给SSO服务器
  4. 如果用户登录,我们继续处理流程。

问题出在用户登录时出错。我们需要从页面隐藏的iframe中获取错误代码;但是因为我们不控制iframe内的内容,并且它由SSO服务器返回;我们不知道如何阅读它,因为它是跨域的。

任何见解?

回答

0

只要没有客户端脚本从SSO方执行,您不需要iframe。为了安全起见,使用iframe的目的是防止AJAX方法忽略单一来源策略并规避SSL加密。答案是删除iframe。在构建页面时,从服务器端请求SSO数据并将其从服务器发送到客户端。

+2

SSO服务器需要设置cookie或读取现有的cookie以确保用户尚未登录。我无法在我的域上读取其他域的cookie,因此我只需要SSO服务器即可直接验证用户的登录状态。 我必须在iframe中拥有SSO服务器,以便将用户凭证直接提交给它,并使其设置cookie作为响应。 这就是CAS在我们的案例中的工作方式。 – Priyank 2010-01-20 03:15:43

+0

我目前正在与远程SSO CAS服务器进行非常类似的设置,这些服务器具有不同的客户端应用程序提交POST请求以发布凭证。我不确定的是如何使用iFrames读取客户端应用程序中设置的凭证并在本地有效验证用户。这已经有一段时间了,但是你能分享一些关于你的设置如何工作的细节吗? – 2016-03-07 19:09:07

0

除非您使用jsonp协议,否则无法绕过x域限制。

用户能否简单地在页面上看到错误响应?为什么你的iframe隐藏atm?

您是否试图使用iframe技术悄悄地将用户登录到另一个系统?

即使这可能适用于大多数浏览器 - 某些浏览器不会在i帧中传递Cookie - 使得这种方法不是广泛的受众群体解决方案。

让我知道,如果我可以澄清。

0

使用JSONP回调您在网站中阻止的功能,然后在iframe中,您只需调用javascript函数:“parent.callback()”。