@Override
    public AuthenticationHandlerExecutionResult authenticate(final Credential credential, final Service service)
        throws Throwable {
        if (!preAuthenticate(credential)) {
            throw new FailedLoginException();
        }
        return postAuthenticate(credential, doAuthentication(credential, service));
    }
Abstract authentication handler that allows deployers to utilize the bundled
AuthenticationHandlers while providing a mechanism to perform tasks before
and after authentication.

@author Scott Battaglia
@author Marvin S. Addison
@since 3.1
core/cas-server-core-authentication-api/src/main/java/org/apereo/cas/authentication/handler/support/AbstractPreAndPostProcessingAuthenticationHandler.java