**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(ldap_global_mutex);
    if (rc != LDAP_SUCCESS)
    {
        const char * raw_err_str = ldap_err2string(rc);
        if (raw_err_str && *raw_err_str != '\0')
        {
            if (!text.empty())
                text += ": ";
            text += raw_err_str;
        }
        if (handle)
        {
            char * raw_message = nullptr;
            SCOPE_EXIT({
                if (raw_message)
                {
                    ldap_memfree(raw_message);