Javascript 使用Iframe跨域,指向SSO服务器

Javascript 使用Iframe跨域,指向SSO服务器,javascript,iframe,cross-domain,single-sign-on,Javascript,Iframe,Cross Domain,Single Sign On,我有一个应用程序,使用jquery在javascript模式中显示一些内容。 它要求用户登录某些流;但是用户从不离开模态 这就是我们目前所做的 在用户流期间,如果用户需要登录,我们将隐藏当前div并显示登录div 保持一个隐藏的iframe,其源链接与我们的SSO服务器的源链接相同 用户提交表单后,我们将隐藏的iframe提交给SSO服务器 如果用户登录,我们将继续执行流程 问题是登录时出错。我们需要从页面的隐藏iframe中获取错误代码;但是因为我们不控制iframe中的内容,它是由SSO服务

我有一个应用程序,使用jquery在javascript模式中显示一些内容。 它要求用户登录某些流;但是用户从不离开模态

这就是我们目前所做的

  • 在用户流期间,如果用户需要登录,我们将隐藏当前div并显示登录div
  • 保持一个隐藏的iframe,其源链接与我们的SSO服务器的源链接相同
  • 用户提交表单后,我们将隐藏的iframe提交给SSO服务器
  • 如果用户登录,我们将继续执行流程
  • 问题是登录时出错。我们需要从页面的隐藏iframe中获取错误代码;但是因为我们不控制iframe中的内容,它是由SSO服务器返回的;我们不知道怎么读,因为它是跨域的


    有什么见解吗?

    只要SSO方没有执行客户端脚本,您就不需要iframe。使用iframe实现安全性的目的是防止AJAX方法忽略单源策略并绕过SSL加密。答案是移除iframe。从服务器端请求SSO数据,并在构建页面时从服务器发送到客户端。

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

    用户可以简单地在第页上看到错误响应吗?为什么你有隐藏的自动取款机

    您是否正在尝试使用iframe技术以静默方式将用户登录到另一个系统

    尽管这可能适用于大多数浏览器——一些浏览器不会在i-frame中传递cookie——这使得这种方法不是一个好的广泛受众解决方案


    请告诉我是否可以澄清。

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

    SSO服务器需要设置cookie或读取现有cookie,以确保用户尚未登录。我将无法在我的域上读取其他域的cookie,因此我只需要SSO服务器来直接验证用户的登录状态。我必须在iframe中安装SSO服务器,以便直接向其提交用户凭据,并设置cookie作为响应。在我们的案例中,CAS就是这样工作的。我目前正在使用一个非常类似的设置,使用一个远程SSO CAS服务器,该服务器具有不同的客户端应用程序提交POST请求以发布凭据。我不确定的是如何使用iframe读取客户端应用程序中设置的凭据,并在本地有效地对用户进行身份验证。已经有一段时间了,但是你能分享一下你的设置是如何运作的吗?