@Override
    public AuthenticatedUser authenticateUser(Credentials credentials)
            throws GuacamoleException {

        // Ignore auth attempts if no auth provider could be loaded
        if (authProvider == null) {
            logger.warn("Authentication attempt ignored because the relevant "
                    + "authentication provider could not be loaded. Please "
                    + "check for errors earlier in the logs.");
            return null;
        }

        // Delegate to underlying auth provider
        try {
            return authProvider.authenticateUser(credentials);
        }

        // Pass through client exceptions untouched, including credential
        // exceptions, as these are not internal failures
        catch (GuacamoleClientException e) {
            throw e;
        }

        // Pass through all other exceptions (aborting authentication entirely)
        // only if not configured to ignore such failures
        catch (GuacamoleException | RuntimeException | Error e) {

            // Skip using this authentication provider if configured to ignore
            // internal failures during auth
            if (isFailureTolerated()) {
                warnAuthProviderSkipped(e);
                return null;
            }

            warnAuthAborted();
            throw e;

        }

    }
Logs a warning that the authentication process will be entirely aborted
due to an internal error, advising the administrator to set the
"skip-if-unavailable" property if error encountered is expected and
should be tolerated.
guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java