Ошибка при попытке получить список пользователей из Active Directory (AD LDS)

Я пытаюсь получить список всех пользователей из моего активного каталога (AD LDS/ADAM). Однако я продолжаю получать следующую ошибку:

Ошибка поиска: javax.naming.NameNotFoundException: [LDAP: код ошибки 32 — 000020 8D: NameErr: DSID-031522C9, проблема 2001 (NO_OBJECT), данные 0, наилучшее соответствие: 'DC = PORTAL, DC = COMPANY, DC = BE '

Мой код:

public static void main(String[] args) {
        try {
            DirContext ctx = new InitialDirContext(Environment.getEnvironment());
            NamingEnumeration enumeration = ctx
                    .list("OU=ACCOUNTS,DC=PORTAL,DC=COMPANY,DC=BE");

            while (enumeration.hasMore()) {
                NameClassPair nc = (NameClassPair) enumeration.next();
                System.out.println(enumeration);
            }

            // Close the context when we're done
            ctx.close();

        } catch (AuthenticationException e) {
            System.out.println("Invalid credentials");
        } catch (NamingException e) {
            System.out.println("Lookup failed: " + e);
        }
    }

РЕДАКТИРОВАТЬ: добавлены детали подключения

public static Hashtable getEnvironment() {
        // Set up the environment for creating the initial context
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://localhost:389/");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");

        env.put(Context.SECURITY_PRINCIPAL,
                "CN=Admin,OU=System Accounts,DC=PORTAL,DC=COMPANY,DC=BE");
        env.put(Context.SECURITY_CREDENTIALS, "Pass123");
        env.put(Context.REFERRAL, "follow");

        return env;
    }

person Andreas    schedule 13.03.2012    source источник
comment
существует ли подчиненный ou=accounts? Ответ поиска указывает, что базовый объект соответствует dc=portal, ....   -  person Terry Gardner    schedule 13.03.2012
comment
да, это подкаталог "DC=PORTAL,DC=COMPANY,DC=BE"   -  person Andreas    schedule 13.03.2012
comment
LDAP не имеет «каталогов» или «подкаталогов», у него есть «подчиненные». В любом случае ответ на поиск указывает, что поиск был выполнен так же быстро, как dc=portal. Есть ли у клиента LDAP разрешение на поиск подчиненных dc=portal?   -  person Terry Gardner    schedule 13.03.2012
comment
Я немного новичок в этом: как проверить разрешение? - Обновлен исходный пост с подробностями подключения   -  person Andreas    schedule 13.03.2012


Ответы (1)


заставил его работать с этим кодом:

NamingEnumeration enumResult = context.search(
             "DC=PORTAl,DC=COMPANY,DC=BE", "(CN=*)",
             controls);
person Andreas    schedule 14.03.2012