liferay portlet:如何使用autologin(也欢迎其他选择)

liferay portlet:如何使用autologin(也欢迎其他选择),liferay,autologin,Liferay,Autologin,我正在使用外部令牌服务验证我的用户,然后他们被重定向到门户(门户url+一些get参数)。 现在我想将这些用户登录到门户中。 由于外部身份验证服务不在我的控制范围内,我不能将其与门户登录绑定在一起。由于我无法解密门户用户帐户密码,所以我不能创建一个ext插件,然后通过该插件登录 所以我搜索了一下,偶然发现liferay有一个autologin。 现在我想知道: 我可以在一个普通的portlet中使用它吗,或者它也需要在ext中使用(仍然不知道如何确切地做到这一点) 我需要制作哪些会话变量/coo

我正在使用外部令牌服务验证我的用户,然后他们被重定向到门户(门户url+一些get参数)。
现在我想将这些用户登录到门户中。 由于外部身份验证服务不在我的控制范围内,我不能将其与门户登录绑定在一起。由于我无法解密门户用户帐户密码,所以我不能创建一个
ext插件
,然后通过该插件登录

所以我搜索了一下,偶然发现liferay有一个autologin。
现在我想知道:

  • 我可以在一个普通的portlet中使用它吗,或者它也需要在ext中使用(仍然不知道如何确切地做到这一点)
  • 我需要制作哪些会话变量/cookie
  • 由于我还没有找到完整的代码片段/教程,有人有代码片段/教程吗
  • 在考虑未来版本的liferay时,这有多可行
  • 这个“外部令牌服务”是什么?Liferay碰巧使用的是一个SSO(单点登录)系统吗

    看看liferay的web.xml,里面有很多SSO过滤器,您可以在liferay的源代码中找到实现。这些过滤器用于处理SSO系统,并执行所有必要的操作,以便在门户本身不进行用户名/密码验证的情况下登录用户。您可以在此处找到最适合您需要的变体。

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

    公共类YourAutoLogin实现AutoLogin{…}
    
    并用代码实现登录方式:

    public String[]登录(HttpServletRequest-req、HttpServletResponse-resp)
    引发自动工程异常{
    ...
    req.getSession().setAttribute(WebKeys.USER_ID,
    Long.valueOf(authenticatedUserId));
    ...
    }
    
    其中authenticatedUserId等于Liferay目录中经过身份验证的用户的ID

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

    auto.login.hooks=com.company.filter.YourAutoLogin