Java 获取登录到liferay portal的用户的用户凭据

Java 获取登录到liferay portal的用户的用户凭据,java,liferay,portal,Java,Liferay,Portal,我想获取登录liferay portlet的用户的用户名和密码 String userName = (userInfo != null) ? (String)userInfo.get("**user.name.given**") 现在我也需要获得密码。我该怎么做 我这样做是因为我需要使用相同的用户名和密码(登录门户时输入的密码)登录到两个iFrame(不同的网站)。问题解决了 我们可以按如下方式获取用户名和密码 String username = themeDisplay.getUser().

我想获取登录liferay portlet的用户的用户名和密码

String userName = (userInfo != null) ? (String)userInfo.get("**user.name.given**")
现在我也需要获得密码。我该怎么做

我这样做是因为我需要使用相同的用户名和密码(登录门户时输入的密码)登录到两个iFrame(不同的网站)。

问题解决了

我们可以按如下方式获取用户名和密码

String username = themeDisplay.getUser().getScreenName();
String password = (String)request.getSession().getAttribute(WebKeys.USER_PASSWORD);
在portal-ext.properties中,设置

session.store.password=true
session.shared.attributes.excludes=

设置session.store.password有些危险,因为密码将以明文形式存储在RAM中,并显示在内存转储等中

通常Liferay不存储明文密码(即确切的密码文本),但只保留密码的散列。当用户尝试登录时,会计算哈希值,然后只存储哈希值或对照存储的哈希值进行检查。(您可以将Liferay配置为存储明文密码,但不应该这样做,因为这不是很安全)

在liferay 6.1中,您可以钩住身份验证过程,并在散列之前获得明文密码-为auth.pipeline.post创建钩子。这在Liferay WIKI上有完整的描述:

简而言之,您添加了自己的验证器,该验证器不执行任何操作,始终只返回authenticator.SUCCESS,但在返回之前,可以使用提供的明文密码执行某些操作