【问题标题】:Use Liferay to authenticate users from separate standalone application使用 Liferay 对来自独立应用程序的用户进行身份验证
【发布时间】:2014-07-26 05:36:57
【问题描述】:

我正在尝试让我的独立网络应用程序将 Liferay 6.2 用作“用户存储”。这意味着我希望用户登录 Liferay,然后能够通过一些凭据和用户特定信息转移到另一个应用程序。继续并传递信息已经在工作,我现在遇到的问题是确保传递的用户对象是当前实际登录的用户。

我使用 LFR_SESSION_STATE_ cookie 来确定登录用户。但是当我再次使用另一个用户登录时,我会得到第二个具有不同用户 ID 的 cookie。所以现在我需要确保我传递了正确的用户。 USER_UUID cookie 不包含 Liferay 提供的相同 uuid(目前我没有检查它是否是 uuid 的哈希)。

长话短说,我正在寻找一种方法来识别当前登录的用户并能够将凭据和其他信息传递给我的应用程序。

我将在随后处理安全问题,例如被操纵的 cookie 等。也许这会引发另一个问题,我到了这一点;-)

我真的很感激任何帮助或朝着正确的方向前进。 在此先感谢各位...塞巴斯蒂安

【问题讨论】:

    标签: authentication liferay


    【解决方案1】:

    一些可能性:

    • 使您的应用程序成为 Portlet 应用程序
    • 发布您的 Liferay 数据库 through LDAP(仅限 EE)并使用单独的 SSO 应用程序
    • 创建一个 Liferay-Hook,设置一个包含所需用户信息的 cookie(到“/”) - 加密和签名由您自己决定。您可以创建hooks,在每次成功登录时执行

    【讨论】:

    • 感谢您的帮助。开发 Hook 是一个显而易见但仍然是绝妙的想法。没想到,基本上解决了我的问题。如果可以的话,再问一个问题:你知道我是否可以从另一条路径中删除 cookie 吗?因为我的钩子在 liferay 中运行,所以我的路径是“/”。知道我想在注销时用另一个路径“/someapp”终止另一个应用程序的会话。你知道我是否以及如何做到这一点?我试图将 MaxAge = 0 设置为这个特定的 cookie,但它没有被删除。是我的错还是某种保护措施来避免随机删除属于其他应用程序的 cookie?坦克
    • maxAge=0 应该可以解决问题,在此处检查stackoverflow.com/questions/890935 - 您可能想要监控 http 流量(例如使用 firebug 网络监视器)以查看应用服务器是否阻止您在路径上操作 cookie那应该是在不同的 webapp 的控制之下。最糟糕的是,您可能需要一些愚蠢的 http 重定向到该应用程序并从那里删除它。不漂亮,但如果是解决问题的方式......(先尝试监控http头)
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2013-03-11
    • 2013-07-08
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多