如何覆盖liferay身份验证

how to override liferay authentication

我正在拼命尝试为我的 liferay tomcat 包重现示例: http://liferay-blogging.blogspot.be/2011/08/how-to-change-liferay-login-module.html

我已经重新创建了作者的包并且 class :

package de.test.auth;

import java.util.Map;
import com.liferay.portal.security.auth.AuthException;
import com.liferay.portal.security.auth.Authenticator;

public class RefuseAuthenticator implements Authenticator {

public int authenticateByEmailAddress(long arg0, String arg1, String arg2, Map<String, String[]> arg3, Map<String, String[]> arg4) throws AuthException {

    System.out.println("failed by mail");
    return FAILURE;
}

public int authenticateByScreenName(long arg0, String arg1, String arg2, Map<String, String[]> arg3, Map<String, String[]> arg4) throws AuthException {

    System.out.println("failed by screen name");
    return FAILURE;
}

public int authenticateByUserId(long arg0, long arg1, String arg2, Map<String, String[]> arg3, Map<String, String[]> arg4) throws AuthException {

    System.out.println("failed by user id");
    return FAILURE;
}

}

我将包导出为 jar 文件并放在 LR-portal/TOMCAT/lib/ext 文件夹中

我添加了 2 行:

auth.pipeline.enable.liferay.check=false
auth.pipeline.pre=de.test.auth.RefuseAuthenticator

在位于 LR-portal/TOMCAT/webapps/ROOT/WEB-INF/lib/portlet_impl.jar 中的标准 portal.properties 文件中。 我知道它应该在 portal-ext.properties 文件中,但无论如何它都不起作用,所以我消除了所有可能的副作用。

不幸的是,Liferay 继续正常记录我的用户。 我阅读了有关在 Liferay 中执行自定义代码的钩子和 ext 方法的信息,因此我可能会遗漏一些东西。我在写这里之前看了很多论坛帖子。

我正在使用 liferay-ce-portal-7.0-ga3 tomcat 包。

谢谢。

如果您想覆盖 Liferay 身份验证,您必须创建一个钩子组件来覆盖自定义登录。

它必须实现一个过滤器来拦截请求header并更改门户用于登录的方法。

希望这对你有用。

感谢您的想法。 我终于用钩子解决了这个问题。 我基于 Liferay 的 Shibboleth 身份验证插件(参见 github)。它最初是在 maven 中构建的,但我设法将其转换为 ant 以便能够使用 Liferay Plugin SDK 环境。