2

我正在使用外部令牌服务来验证我的用户,然后他们被重定向到门户(门户网址 + 一些获取参数)。
现在我想在门户中记录这些用户。由于外部身份验证服务不在我的控制范围内,我不能将其与门户登录绑定。而且由于我无法解密门户用户帐户密码,我不能只创建一个ext-plugin并通过它登录。

所以我搜索了一下,偶然发现了liferay有一个自动登录的事实。
现在我想知道:

  1. 我可以在普通的 portlet 中使用它,还是它也需要在 ext 中(仍然不知道该怎么做)
  2. 我需要制作哪些会话变量/cookie?
  3. 有没有人有代码片段/教程,因为我还没有找到完整的。
  4. 考虑到 Liferay 的未来版本,这有多可行?
4

2 回答 2

1

创建您自己的过滤器(实现com.liferay.portal.security.auth.AutoLogin):

public class YourAutoLogin implements AutoLogin {...}

并用代码实现登录方法:

public String[] login(HttpServletRequest req, HttpServletResponse resp)
  throws AutoLoginException {
    ...
    req.getSession().setAttribute(WebKeys.USER_ID,
    Long.valueOf(authenticatedUserId));
    ...
}

其中authenticatedUserId等于 Liferay 目录中经过身份验证的用户的 ID。

将您的过滤器添加为钩子(您的网络应用程序中的文件 /WEB-INF/classes/portal.properties):

auto.login.hooks=com.company.filter.YourAutoLogin
于 2010-12-29T11:43:46.057 回答
0

这是什么“外部令牌服务”?Liferay 是开箱即用的 SSO(单点登录)系统吗?

看看 liferay 的 web.xml - 里面有很多 SSO 过滤器 - 你会在 liferay 的源代码中找到实现。这些过滤器用于处理 SSO 系统,并在门户本身没有用户名/密码验证的情况下执行登录某人所需的一切。您或许可以在此处找到最适合您需求的变体。

于 2010-11-09T06:06:04.700 回答