0

这是我的情况:我在域模式下运行具有多个节点的 JBoss 7。一个节点负责我的 Liferay 6.2,另一个节点运行其他几个 Web 应用程序。现在我想实现一些单点登录例程。因此,要使用我的 Web 应用程序,您必须先通过 liferay。再次验证 liferay,然后转到其中一个 Web 应用程序。

所以问题是是否有办法公开一些liferays方法来访问用户存储并检查访问Web应用程序的用户是否与登录liferay的用户相同。开发某种桥梁对我来说很好。我正在考虑一个 portlet,它与 liferay 进行所有交互并公开一些方法,例如readUser(). 也许我可以对这个 portlet 或嵌入在这个 portlet 中的组件进行 jndi 查找,以便readUser()从我的其他 Web 应用程序中调用。我认为这听起来有点像 EJB 的东西。

使用 Liferays API、Services 和 LocalServices 来读取用户信息等应该不难(已经玩过一点)。我只是不知道如何在 web 应用程序和 liferay 之间建立通信。

如果它不能以这种方式工作,我会选择其他方式,也许是 web 服务或其他有意义的方式,但我想先尝试 EJB/JNDI 方法(除非这完全没有意义)。也许有人可以指出我正确的方向。

将我的应用程序转换为 portlet 并不是一个真正的选择,因为这些应用程序非常大并且已经存在了相当长的一段时间。所以我想让它们大部分保持不变 - 除了身份验证的东西。

感谢和问候塞巴斯蒂安

4

2 回答 2

0

几个选项:

  • 只需从您的应用程序中访问 Liferay 的 API 方法。您可以在http://www.example.com/api/jsonws访问 JSON API 。
  • 还有一个 SOAP 接口(http://www.example.com/api/axis),通常只能从 localhost 获得(您可以在 portal-ext.properties 中进行其他配置)
  • 您可以通过创建自己的服务来封装对这些服务的调用。使用您选择的工具或 Liferay 的服务构建器。您可以创建空实体并仅引用 Liferay 自己的实体。如果您允许,Servicebuilder 将生成 JSON 或 SOAP WS。(Slimen Belhajali 提到的)

当您专门讨论用户身份检查时,您甚至可能想考虑一个完全不同的解决方案,只需查看单点登录 (SSO) 解决方案。这样,您只需登录一次(到 SSO 服务器)并自动(隐式)登录到您的 web 应用程序以及 Liferay。如果两者都访问相同的用户存储(例如在 LDAP 上),这种方法效果最好。

于 2014-02-03T16:39:43.683 回答
0

您可以使用服务构建器并将您的服务公开为远程。

于 2014-02-03T14:57:54.870 回答