我正在开发一个网站,它类似于汽车共享系统,基于用户。 在某些页面中,我在页面中间使用 iframe 链接到另一个不是 PHP 的网站(实际上是 Liferay),所以我发现这是包含它的最简单的方法。问题是,每次用户登录时,它也不会在 iFrame 内自动登录。然后需要进行第二次身份验证,这有点令人沮丧。
这是示例图片:
https://www.diigo.com/item/image/4sr25/9ct1?size=o
如您所见,我已登录(检查右上角),但 iframe 仍显示身份验证框,而不是应有的内容。
我考虑过使用 javascript 在 iFrame 内自动登录,但我不确定最安全的方法是什么,因为我们正在讨论关键数据。
有什么想法吗?
提前谢谢您!
最佳答案
Liferay 支持外部用户数据库(例如 LDAP)和单点登录(SSO)系统。因此,支持许多不同应用程序的单一登录的一个好方法是嵌入 SSO 系统。 Liferay 开箱即用,支持其中的许多功能,并且很容易实现对更多功能的支持。
解决此问题的一种方法是为您的 PHP 应用程序以及 Liferay 使用外部 SSO 系统:将来您将始终登录到该系统,并且 PHP 以及 Liferay 都需要与其交互。
如果您的 PHP 系统无法做到这一点,另一种方法是使用您的 PHP 应用程序模拟 SSO 系统 - 例如让您的应用程序像任何 SSO 系统一样将用户身份转发到 Liferay。通常,如果两台服务器共享一个域,则可以通过 cookie 来实现。此外,您可以对已知 URL 进行一些重定向(例如,在 URL 中加密用户身份),或者拥有一个服务器端系统来识别用户并为以下应用程序服务器设置一些 HTTP header (Liferay/PHP)
你到底是如何做到这一点的?有什么已经可用的吗?我担心这个问题的答案太复杂 - 特别是因为我不知道将现有的 SSO 嵌入到您的 PHP 应用程序中有多么容易。这是对于策略选择非常重要的一个方面。
关于javascript - iFrame 内自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25469839/