如何使用电子邮件/密码对外部Web应用程序使用Liferay身份验证

时间:2012-06-13 13:13:15

标签: liferay liferay-6

我有另一个使用liferay用户数据库的网络应用程序。但在用户访问该网站之前,他需要先进行身份验证。如何实现此功能,我尝试使用电子邮件/密码搜索WS api进行身份验证,但没有找到。

此外,用户仍应能够登录liferay门户网站。登录应该像另一个liferay Web服务。

任何提示?

嗯,既然我可以访问数据库,也许有一种方法是对客户端给出的密码进行哈希处理?并验证存储在数据库中的值。

发现PwdEncryptor类负责加密密码,不幸的是它与liferay有太多的依赖关系,我无法解决它: -

由于

2 个答案:

答案 0 :(得分:3)

这可能不是最好的方法,但这个解决方案可能正是您所寻找的。它只需要用户的公司ID,电子邮件和密码。在我的情况下,我有来自liferay的默认公司ID。

要验证电子邮件/密码,您可以在我的情况下调用其他liferay webservice:get-user-id-by-email-address。然后通过HTTP Basic对用户进行身份验证。使用jersey rest webservice调用liferay Web服务时,您可以编写如下代码:

String url += String.format("user/get-user-id-by-email-address?companyId=%s&emailAddress=%s",
                properties.getProperty("default.company.id"), email);

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(email, password));
WebResource service = client.resource(url);
ClientResponse response = service.accept("application/json").post(ClientResponse.class);

if (response.getClientResponseStatus() == com.sun.jersey.api.client.ClientResponse.Status.OK) {
 //valid user
} else {
  //invalid user
}

答案 1 :(得分:1)

您可以通过将Liferay配置为使用CAS或OpenSSO来在您的站点上实施单点登录解决方案。有各种来源:OpenSSO-LiferayCAS-Liferay