Log Liferay登录尝试

时间:2015-12-04 10:27:21

标签: liferay liferay-6

我想知道是否有办法在Liferay 6.2中记录所有登录尝试。我的目标是监控所有登录尝试(成功和失败),这样我就可以构建一个ELK仪表板,看看是否有突然出现的峰值。 faild login attemts - 也许是因为某种机器人正在渗透我的网站。

到目前为止,我没有找到任何默认设置或函数来使用其凭据记录所有登录。我想查看哪个用户名也尝试登录。

如果有登录前和登录后的事件,我可以在钩子中使用,对我来说也没关系。我会自己处理日志记录任务。可悲的是,到目前为止,我的尝我无法在我的日志字符串中包含凭据。

1 个答案:

答案 0 :(得分:3)

没有开箱即用的功能。

但是,正如Liferay中常见的那样,您有两种选择:

  • 检查市场是否有插件
  • 或者自己创建这样的插件

市场上有一个可以满足您需求的插件:Audit EE

我从来没有用过它,所以我无法告诉你任何事情。

如果您对它提供的选项不满意,这里是自己编写插件解决方案

如果您只想记录失败的尝试,则需要实现AuthFailure类:

public LogLoginFailures implements AuthFailure {

   public void onFailureByEmailAddress(long companyId, String emailAddress, 
       Map<String, String[]> headerMap, 
       Map<String, String[]> parameterMap) throws AuthException {
     MyLoginLogUtil.logFailure(emailAddress);
   }

   // Implement the two other onFailure... methods the same way

}

您需要自己编写MyLoginLogUtil。您可以使用您将使用 Liferay Service Builder 创建的Liferay服务。

要宣布您的AuthFailure个实例,您只需将其添加到portal-ext.properties

auth.failure=com.liferay.portal.security.auth.LoginFailure,...LogLoginFailures

该属性存储处理程序列表。您应该保持默认LoginFailure具有存储每个用户上次失败登录尝试的默认行为。

如果您确实要记录所有登录尝试,可以在portal-ext.properties中的Authenticator属性中添加auth.pipeline.post

public LogLoginFailures implements AuthFailure {

  public int authenticateByEmailAddress(long companyId, String emailAddress, 
      String password, Map<String, String[]> headerMap, 
      Map<String, String[]> parameterMap) throws AuthException {
     MyLoginLogUtil.logSuccesss(emailAddress);
     return SUCCESS;
   }

   // Implement the two other authenticate... methods the same way

}

这将记录成功的登录尝试。

你也可以在auth.pipeline.pre属性中添加一个Authenticator作为第一个处理程序,但是它无法区分失败和成功的登录。