diff --git a/authentication/source/java/ch/systemsx/cisd/authentication/ldap/LDAPAuthenticationService.java b/authentication/source/java/ch/systemsx/cisd/authentication/ldap/LDAPAuthenticationService.java index aee60a5a9332393485889c96d4ec54609880a7a0..7c0c63715655b6be0eef63e0626f932a84ecb42d 100644 --- a/authentication/source/java/ch/systemsx/cisd/authentication/ldap/LDAPAuthenticationService.java +++ b/authentication/source/java/ch/systemsx/cisd/authentication/ldap/LDAPAuthenticationService.java @@ -18,10 +18,14 @@ package ch.systemsx.cisd.authentication.ldap; import java.util.List; +import org.apache.log4j.Logger; + import ch.systemsx.cisd.authentication.IAuthenticationService; import ch.systemsx.cisd.authentication.Principal; import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; +import ch.systemsx.cisd.common.logging.LogCategory; +import ch.systemsx.cisd.common.logging.LogFactory; /** * A {@link IAuthenticationService} for LDAP servers. @@ -32,6 +36,9 @@ public class LDAPAuthenticationService implements IAuthenticationService { private static final String DUMMY_TOKEN_STR = "DUMMY-TOKEN"; + private static final Logger operationLog = + LogFactory.getLogger(LogCategory.OPERATION, LDAPAuthenticationService.class); + private final LDAPPrincipalQuery query; public LDAPAuthenticationService(LDAPDirectoryConfiguration config) @@ -54,7 +61,18 @@ public class LDAPAuthenticationService implements IAuthenticationService @Override public boolean authenticateUser(String user, String password) { - return query.authenticateUser(user, password); + final boolean authenticated = query.authenticateUser(user, password); + logAuthentication(user, authenticated); + return authenticated; + } + + private void logAuthentication(final String user, final boolean authenticated) + { + if (operationLog.isInfoEnabled()) + { + final String msg = "LDAP: authentication of user '" + user + "': "; + operationLog.info(msg + (authenticated ? "SUCCESS." : "FAILED.")); + } } @Override @@ -67,7 +85,9 @@ public class LDAPAuthenticationService implements IAuthenticationService @Override public Principal tryGetAndAuthenticateUser(String user, String passwordOrNull) { - return query.tryGetAndAuthenticatePrincipal(user, passwordOrNull); + final Principal principal = query.tryGetAndAuthenticatePrincipal(user, passwordOrNull); + logAuthentication(user, Principal.isAuthenticated(principal)); + return principal; } @Override @@ -94,7 +114,7 @@ public class LDAPAuthenticationService implements IAuthenticationService { return listPrincipalsByEmail(emailQuery); } - + @Override public List<Principal> listPrincipalsByEmail(String emailQuery) { @@ -107,12 +127,15 @@ public class LDAPAuthenticationService implements IAuthenticationService { return tryGetAndAuthenticateUserByEmail(email, passwordOrNull); } - + @Override public Principal tryGetAndAuthenticateUserByEmail(String email, String passwordOrNull) { - return query.tryGetAndAuthenticatePrincipalByEmail(email, passwordOrNull); + final Principal principal = query.tryGetAndAuthenticatePrincipalByEmail(email, passwordOrNull); + final String user = (principal != null) ? principal.getUserId() : "email:" + email; + logAuthentication(user, Principal.isAuthenticated(principal)); + return principal; } @Override @@ -120,7 +143,7 @@ public class LDAPAuthenticationService implements IAuthenticationService { return listPrincipalsByLastName(lastNameQuery); } - + @Override public List<Principal> listPrincipalsByLastName(String lastNameQuery) { @@ -132,7 +155,7 @@ public class LDAPAuthenticationService implements IAuthenticationService { return listPrincipalsByUserId(userIdQuery); } - + @Override public List<Principal> listPrincipalsByUserId(String userIdQuery) {