java: ldap NamingException - PullRequest
       3

java: ldap NamingException

3 голосов
/ 12 августа 2011

Я пытаюсь использовать аутентификацию LDAP.

public boolean login(String username, String password){
    AndFilter filter = new AndFilter();
    filter.and(new EqualsFilter("objectclass", "person")).and(new EqualsFilter("uid", username));
    return ldapTemplate.authenticate(DistinguishedName.EMPTY_PATH, filter.toString(), password);
}

Поскольку я использовал сервер ActiveDirectory, у меня есть следующее исключение:

javax.naming.NamingException: [LDAP: код ошибки 1 - 000020D6: SvcErr: DSID-03100754,задача 5012 (DIR_ERROR), данные 0];remaning name = '/'

На мой взгляд, это исключение показало, потому что я использую DistinguishedName.EMPTY_PATH.

Как я могу решить эту проблему?

1 Ответ

11 голосов
/ 12 августа 2011

Фактическая ошибка у вас следующая:

//
// MessageId: ERROR_DS_MISSING_SUPREF
//
// MessageText:
//
//  No superior reference has been configured for the 
//  directory service. The directory service is therefore 
//  unable to issue referrals to objects outside this forest.
//
#define ERROR_DS_MISSING_SUPREF          8406L

Это может быть найдено путем преобразования имеющегося у вас кода ошибки ( 000020D6 ) в десятичную и проверки в winerror.h.

По моему мнению, вам нужно указать базовое DN для поиска, который вы выполняете. Тот, который вы указали (предположительно по умолчанию, если он не указан), равен / , что не является допустимым DN. Если вашим доменным именем является domain.example.com , допустимым базовым DN будет DC = домен, DC = пример, DC = com .

...