在显示 iFrame 之前验证用户
Authenticate user before displaying an iFrame
我正准备从事一个项目,我需要在其中显示来自在线应用程序的仪表板。不幸的是,目前无法使用 API。仪表板可以嵌入到 iFrame 中。但是,当它显示时,它会提示查看仪表板的用户登录帐户。
我有一个此服务的付费帐户。在处理 iFrame 之前,是否有任何 rails gem 可以登录服务?
或者我的 rails 应用程序中的代理是否是更好的选择?
不胜感激!
您的 rails 中的 Rails gems 和代理都不起作用,它们也有相同的限制。
它们都运行在后端,服务器端。
您需要的身份验证是客户端。
除非你的意思是代理整个事情,授权请求和所有后续请求以及用户与此仪表板的交互。那应该可以,但是(见下文)
身份验证的工作方式(几乎是通用的)是:一旦您登录到任何系统,它就会在您的浏览器上存储一个 cookie,然后浏览器会为每个后续请求发送该 cookie。
如果您在后端进行身份验证,该 cookie 将被发送到您的 rails 代码并在那里消亡,用户浏览器永远不会知道。
此外 - 无法在服务器端进行身份验证并捕获 cookie,然后让用户直接使用浏览器浏览网站,原因有二:
- 有时 auth cookie 使用有关浏览器或 HTTP 客户端的信息来加密 cookie,因此从不同的客户端发送相同的 cookie 是行不通的
- 您不能告诉浏览器将 cookie 发送到不同于您自己的域。
所以你现在的选择是:
- 如果有一个登录页面接受来自其他域的表单提交,您可以尝试模拟直接向该站点 "after login" 页面提交表单。 (用户在填写登录表单后被定向到的页面)。任何作为 XSRF 保护(跨站点请求伪造保护)的现代 Web 框架,出于安全原因将不允许这种方法。
- 查看此站点使用的身份验证是否具有您可以执行的任何类型的 OAUTH、单点登录 (SSO) 或类似类型的身份验证集成。 (类似于 API,因此您可能已经探索过此选项)
- 通过您的服务器代理对该站点的所有请求。您将不得不重写整个 HTML,以便所有图像、CSS、样式表和所有其他资产也通过代理路由,否则 URL 将在 HTML 不是相对的。如果网站不是为这个用例设计的,您可能会碰壁。从诸如网站使用相对 URL 用于您未代理的资产,网站引用非相对 URL 导致跨域错误等。请注意,它真的很难重新- 写下每一个最后的资产参考,它不仅是你担心的 HTML,Javascript 也可以有 URL,CSS 也可以.
- 您可以编写一个小书签或一个浏览器扩展程序来让用户登录网站。
- 让每个人都安装 Lastpass
- 让每个人都安装 TamperMonkey 浏览器扩展(其他人喜欢它用于其他浏览器),并编写一个小的用户脚本 运行 自定义 javascript 自动让用户登录该站点
- 从该网站上抓取您需要的信息并在您自己的网站上提供。
好吧我没主意了。 :)
我正准备从事一个项目,我需要在其中显示来自在线应用程序的仪表板。不幸的是,目前无法使用 API。仪表板可以嵌入到 iFrame 中。但是,当它显示时,它会提示查看仪表板的用户登录帐户。
我有一个此服务的付费帐户。在处理 iFrame 之前,是否有任何 rails gem 可以登录服务?
或者我的 rails 应用程序中的代理是否是更好的选择?
不胜感激!
您的 rails 中的 Rails gems 和代理都不起作用,它们也有相同的限制。
它们都运行在后端,服务器端。
您需要的身份验证是客户端。
除非你的意思是代理整个事情,授权请求和所有后续请求以及用户与此仪表板的交互。那应该可以,但是(见下文)
身份验证的工作方式(几乎是通用的)是:一旦您登录到任何系统,它就会在您的浏览器上存储一个 cookie,然后浏览器会为每个后续请求发送该 cookie。
如果您在后端进行身份验证,该 cookie 将被发送到您的 rails 代码并在那里消亡,用户浏览器永远不会知道。
此外 - 无法在服务器端进行身份验证并捕获 cookie,然后让用户直接使用浏览器浏览网站,原因有二:
- 有时 auth cookie 使用有关浏览器或 HTTP 客户端的信息来加密 cookie,因此从不同的客户端发送相同的 cookie 是行不通的
- 您不能告诉浏览器将 cookie 发送到不同于您自己的域。
所以你现在的选择是:
- 如果有一个登录页面接受来自其他域的表单提交,您可以尝试模拟直接向该站点 "after login" 页面提交表单。 (用户在填写登录表单后被定向到的页面)。任何作为 XSRF 保护(跨站点请求伪造保护)的现代 Web 框架,出于安全原因将不允许这种方法。
- 查看此站点使用的身份验证是否具有您可以执行的任何类型的 OAUTH、单点登录 (SSO) 或类似类型的身份验证集成。 (类似于 API,因此您可能已经探索过此选项)
- 通过您的服务器代理对该站点的所有请求。您将不得不重写整个 HTML,以便所有图像、CSS、样式表和所有其他资产也通过代理路由,否则 URL 将在 HTML 不是相对的。如果网站不是为这个用例设计的,您可能会碰壁。从诸如网站使用相对 URL 用于您未代理的资产,网站引用非相对 URL 导致跨域错误等。请注意,它真的很难重新- 写下每一个最后的资产参考,它不仅是你担心的 HTML,Javascript 也可以有 URL,CSS 也可以.
- 您可以编写一个小书签或一个浏览器扩展程序来让用户登录网站。
- 让每个人都安装 Lastpass
- 让每个人都安装 TamperMonkey 浏览器扩展(其他人喜欢它用于其他浏览器),并编写一个小的用户脚本 运行 自定义 javascript 自动让用户登录该站点
- 从该网站上抓取您需要的信息并在您自己的网站上提供。
好吧我没主意了。 :)