diff --git a/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaAuthenticationProvider.java b/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaAuthenticationProvider.java index 9168c90..29c57fb 100644 --- a/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaAuthenticationProvider.java +++ b/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaAuthenticationProvider.java @@ -6,7 +6,6 @@ import nl._42.restsecure.autoconfigure.authentication.RegisteredUser; import nl._42.restsecure.autoconfigure.authentication.UserDetailsAdapter; -import org.springframework.security.authentication.InsufficientAuthenticationException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.core.AuthenticationException; @@ -65,7 +64,7 @@ protected void additionalAuthenticationChecks(UserDetails userDetails, UsernameP private void executeMfaVerificationSteps(MfaAuthenticationToken mfaAuthenticationToken, UserDetailsAdapter userDetailsAdapter) { // If no code supplied, indicate a code is needed. if (mfaAuthenticationToken.getVerificationCode() == null || mfaAuthenticationToken.getVerificationCode().isEmpty()) { - throw new InsufficientAuthenticationException(SERVER_MFA_CODE_REQUIRED_ERROR); + throw new MfaRequiredException(SERVER_MFA_CODE_REQUIRED_ERROR); } boolean verificationSucceeded = false; for (MfaVerificationCheck verificationCheck : verificationChecks) { diff --git a/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaRequiredException.java b/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaRequiredException.java new file mode 100644 index 0000000..5b198d1 --- /dev/null +++ b/src/main/java/nl/_42/restsecure/autoconfigure/authentication/mfa/MfaRequiredException.java @@ -0,0 +1,8 @@ +package nl._42.restsecure.autoconfigure.authentication.mfa; + +public class MfaRequiredException extends RuntimeException { + + public MfaRequiredException(String msg) { + super(msg); + } +} diff --git a/src/main/java/nl/_42/restsecure/autoconfigure/errorhandling/LogUtil.java b/src/main/java/nl/_42/restsecure/autoconfigure/errorhandling/LogUtil.java index 72c6dcb..f57e5d2 100644 --- a/src/main/java/nl/_42/restsecure/autoconfigure/errorhandling/LogUtil.java +++ b/src/main/java/nl/_42/restsecure/autoconfigure/errorhandling/LogUtil.java @@ -1,5 +1,6 @@ package nl._42.restsecure.autoconfigure.errorhandling; +import nl._42.restsecure.autoconfigure.authentication.mfa.MfaRequiredException; import nl._42.restsecure.autoconfigure.form.LoginForm; import org.slf4j.Logger; @@ -9,10 +10,11 @@ public class LogUtil { private LogUtil() {} public static void logAuthenticationFailure(Logger log, T form, RuntimeException exception) { - if (log.isDebugEnabled()) { + // Filter out logs that are part of the login flow + if (log.isDebugEnabled() || exception instanceof MfaRequiredException || form.username == null) { log.debug("Authentication failure for user '{}'! {}", form.username, exception.getMessage(), exception); - } else { - log.warn("Authentication failure for user '{}'! {}", form.username, exception.getMessage()); + return; } + log.warn("Authentication failure for user '{}'! {}", form.username, exception.getMessage()); } }