**Use case**
In some organisations are using AD with hierarchical structure (nested organisation unit) and DN follow this structure. As result we can not  use permanent build_dn for users with different OU.

**Describe the solution you'd like**
Solution can be look like:
1) bind as service account
2) set dn for user_name by some filter string to user_dn
3) bind as user_dn with password
3) use user_dn with filter for group/roles fetching

This approach is implemented in Metabase.

{
    std::scoped_lock lock(mutex);
    ldap_client_params_blueprint.clear();
    ldap_caches.clear();
    kerberos_params.reset();
}
void ExternalAuthenticators::setConfiguration(const Poco::Util::AbstractConfiguration & config, Poco::Logger * log)
{
    std::scoped_lock lock(mutex);
    reset();
    Poco::Util::AbstractConfiguration::Keys all_keys;
    config.keys("", all_keys);
    std::size_t ldap_servers_key_count = 0;
    std::size_t kerberos_keys_count = 0;
    for (auto key : all_keys)
    {
        const auto bracket_pos = key.find('[');
        if (bracket_pos != std::string::npos)
            key.resize(bracket_pos);
        boost::algorithm::to_lower(key);
        ldap_servers_key_count += (key == "ldap_servers");