@Override
    public List<AuthenticationHandler> buildInternal(final TenantDefinition tenantDefinition,
                                                     final ConfigurationPropertiesBindingContext<CasConfigurationProperties> bindingContext) {

        if (bindingContext.containsBindingFor(LdapAuthenticationProperties.class)) {
            val casProperties = bindingContext.value();
            return casProperties
                .getAuthn()
                .getLdap()
                .stream()
                .filter(LdapUtils::isLdapAuthenticationConfigured)
                .map(prop -> {
                    val handler = LdapUtils.createLdapAuthenticationHandler(prop,
                        applicationContext, servicesManager, ldapPrincipalFactory);
                    handler.setState(prop.getState());
                    LOGGER.info("Created LDAP authentication handler [{}] with state [{}]",
                        handler.getName(), handler.getState());
                    return handler.markDisposable();
                })
                .toList();
        }
        return List.of();
    }
This is {@link TenantLdapAuthenticationHandlerBuilder}.

@author Misagh Moayyed
@since 7.3.0
support/cas-server-support-ldap-core/src/main/java/org/apereo/cas/authentication/TenantLdapAuthenticationHandlerBuilder.java