private void bindAuthenticationProvider(
            Class<? extends AuthenticationProvider> authenticationProvider,
            Set<String> tolerateFailures) {

        // Bind authentication provider
        logger.debug("[{}] Binding AuthenticationProvider \"{}\".",
                boundAuthenticationProviders.size(), authenticationProvider.getName());
        boundAuthenticationProviders.add(new AuthenticationProviderFacade(
                authenticationProvider, tolerateFailures));

    }
Binds the given AuthenticationProvider class such that any service
requiring access to the AuthenticationProvider can obtain it via
injection, along with any other bound AuthenticationProviders.

@param authenticationProvider
    The AuthenticationProvider class to bind.

@param tolerateFailures
    The set of identifiers of all authentication providers whose
    internal failures should be tolerated during the authentication
    process. If the identifier of an authentication provider is within
    this set, errors during authentication will result in the
    authentication provider being ignored for that authentication
    attempt, with the authentication process proceeding as if that
    authentication provider were not present. By default, errors during
    authentication halt the authentication process entirely.
guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java