ruby-on-rails - 在显示 iFrame 之前验证用户

标签 ruby-on-rails ruby iframe proxy embed

我正准备从事一个项目,我需要在其中显示来自在线应用程序的仪表板。不幸的是,目前无法使用 API。仪表板可以嵌入到 iFrame 中。但是,当它显示时,它会提示查看仪表板的用户登录帐户。

我有一个此服务的付费帐户。在处理 iFrame 之前,是否有任何 rails gem 可以登录服务?

或者我的 Rails 应用程序中的代理会是更好的选择吗?

感谢任何指点!

最佳答案

Rails gem 和 rails 中的代理都不能工作,它们也有同样的限制。

它们都在后端服务器端运行。

您需要的身份验证是客户端。

除非您的意思是代理整个事物、身份验证请求和所有后续请求以及与此仪表板的用户交互。那应该可以,但是(见下文)

身份验证的工作方式(几乎是通用的)是:一旦您登录到任何系统,它就会在您的浏览器上存储一个 cookie,然后浏览器会为每个后续请求发送该 cookie。

如果您在后端进行身份验证,该 cookie 将被发送到您的 Rails 代码并在那里消亡,用户浏览器永远不会知道。

此外 - 无法在服务器端进行身份验证并捕获 cookie,然后让用户直接使用浏览器浏览网站,原因有二:

  1. 有时 auth cookie 使用有关浏览器或 HTTP 客户端的信息来加密 cookie,因此从不同的客户端发送相同的 cookie 是行不通的
  2. 您不能告诉浏览器将 cookie 发送到不同于您自己的域。

所以你现在的选择是:

  1. 如果有一个登录页面接受来自其他域的表单提交,您可以尝试模拟表单直接提交到该网站的“登录后”页面。 (用户在填写登录表单后被定向到的页面)。任何作为 XSRF 保护(跨站点请求伪造保护)的现代网络框架,出于安全原因将不允许这种方法。
  2. 查看此站点使用的身份验证是否具有您可以执行的任何类型的 OAUTH、单点登录 (SSO) 或类似类型的身份验证集成。 (类似于 API,因此您可能已经探索过此选项)
  3. 通过您的服务器代理对该站点的所有请求。您将不得不重写整个 HTML,以便所有图像、CSS、样式表和所有其他 Assets 也通过代理路由,否则 URL 在 HTML 中被重写为非相对的。如果网站不是为这个用例设计的,您可能会碰壁。从诸如网站使用相对 URL 获取您未代理的 Assets 、引用非相对 URL 的网站导致跨域错误等。请注意,重写每一个最后的 Assets 引用真的很难,它不仅是您担心的 HTML,Javascript 也可以包含 URL,CSS 也可以。
  4. 您可以编写一个小书签或一个浏览器扩展程序来让用户登录网站。
  5. 让每个人都安装 Lastpass
  6. 让每个人都安装 TamperMonkey 浏览器扩展程序(以及其他类似的浏览器扩展程序),并编写一个小的用户脚本来自动运行自定义 javascript 以让用户登录该站点
  7. 从该网站上抓取您需要的信息并在您自己的网站上提供。

好吧,我没主意了。 :)

关于ruby-on-rails - 在显示 iFrame 之前验证用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909227/

相关文章:

ruby-on-rails - Ruby on Rails - 检查提交的表单数据是否与数据库数据匹配

ruby-on-rails - Rails 中的预约安排?

ruby-on-rails - ruby Mechanize

ruby - .irbrc 在安装 RBEnv 后不执行

jquery - magento、wordpress 和 ajax

html - 显示重复个人资料的 Facebook 点赞框

javascript - iFrame 自动调整大小

ruby-on-rails - 回形针。处理具有相同文件名的文件

ruby-on-rails - Rails 按算法排序

ruby-on-rails - 子类的循环依赖