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

{
            UNKNOWN,
            SIMPLE
        };
        ProtocolVersion protocol_version = ProtocolVersion::V3;
        String host;
        std::uint16_t port = 636;
        TLSEnable enable_tls = TLSEnable::YES;
        TLSProtocolVersion tls_minimum_protocol_version = TLSProtocolVersion::TLS1_2;
        TLSRequireCert tls_require_cert = TLSRequireCert::DEMAND;
        String tls_cert_file;
        String tls_key_file;
        String tls_ca_cert_file;
        String tls_ca_cert_dir;
        String tls_cipher_suite;
        SASLMechanism sasl_mechanism = SASLMechanism::SIMPLE;
        String bind_dn;
        String user;
        String password;
        std::chrono::seconds verification_cooldown{0};
        std::chrono::seconds operation_timeout{40};
        std::chrono::seconds network_timeout{30};
        std::chrono::seconds search_timeout{20};
        std::uint32_t search_limit = 100;
        void combineCoreHash(std::size_t & seed) const;
    };
    explicit LDAPClient(const Params & params_);
    ~LDAPClient();
    LDAPClient(const LDAPClient &) = delete;