@Override
            protected void configure() {

                bind(AuthenticationProvider.class).toInstance(SSOAuthenticationProvider.this);
                bind(SSOAuthenticationProviderService.class).to(authService);

                // Bind custom SSOResource implementation if different from
                // core implementation (explicitly binding SSOResource as
                // SSOResource results in a runtime error from Guice otherwise)
                LinkedBindingBuilder<SSOResource> resourceBinding = bind(SSOResource.class);
                if (ssoResource != SSOResource.class)
                    resourceBinding.to(ssoResource);

            }
Creates a new SSOAuthenticationProvider that authenticates users against
an arbitrary SSO system. Guice dependency injection is automatically
configured, with the resulting injector available to implementations via
{@link #getInjector()}. Core authentication functions are provided by
the given SSOAuthenticationProviderService implementation, and
additional may be provided by specifying additional Guice modules.

@param authService
    The SSOAuthenticationProviderService implementation that should be
    used for core authentication functions.

@param ssoResource
    The SSOResource that should be used to manually redirect the user to
    the IdP, as well as to provide any implementation-specific REST
    endpoints.

@param modules
    Any additional modules that should be used when creating the Guice
    injector.
extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/SSOAuthenticationProvider.java