**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.

#pragma once
#include <Access/LDAPClient.h>
#include <Access/Credentials.h>
#include <Access/GSSAcceptor.h>
#include <common/types.h>
#include <chrono>
#include <map>
#include <mutex>
#include <optional>
#include <unordered_map>
namespace Poco
{
    class Logger;
    namespace Util
    {
        class AbstractConfiguration;
    }
}
namespace DB
{
class ExternalAuthenticators