2016-10-14 4 views
1

Я новичок в активной директории и безопасности весны. Фактически, я хочу изменить конфигурацию моей пружины, чтобы использовать активную директорию в аутентификации, поэтому я использую ее в своем SecurityConfig:LDAP: код ошибки 34 - Неправильное заданное DN

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider()); 
    auth.eraseCredentials(false); 

} 

@Bean 
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() { 
    ActiveDirectoryLdapAuthenticationProvider authenticationProvider = new ActiveDirectoryLdapAuthenticationProvider(
      "dc=example,dc=com", "ldap://localhost:10389/dc=example,dc=com"); 

    authenticationProvider.setConvertSubErrorCodesToExceptions(true); 
    authenticationProvider.setUseAuthenticationRequestCredentials(true); 
    authenticationProvider.setUserDetailsContextMapper(mapper); 

    return authenticationProvider; 
} 

и активная студия каталогов У меня есть раздел: dc=example,dc=com который содержит запись ou=people.

Когда я пытаюсь поставить имя пользователя и пароль, у меня есть эта ошибка:

javax.naming.InvalidNameException: [LDAP: error code 34 - Incorrect DN given : [email protected]=example,dc=com (0x73 0x79 0x73 0x61 0x64 0x6D 0x69 0x6E 0x40 0x64 0x63 0x3D 0x70 0x75 0x70 0x70 0x75 0x74 0x2C 0x64 0x63 0x3D 0x63 0x6F 0x6D) is invalid] at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3076) at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2883) at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2797)..

Есть ли у вас какие-либо идеи, пожалуйста?

+0

Если вы на Mac, убедитесь, что у вас нет '"' в файле build.xml – Archmede

ответ

0

ActiveDirectoryLdapAuthenticationProvider предназначен для аутентификации с именами пользователей в форме AD [email protected], которые не являются стандартными форматами LDAP DN. Таким образом, первым аргументом в конструкторе должен быть домен (example.com), а не DN LDAP. Когда вы входите в систему как admin, код использует сконфигурированный домен для построения строки [email protected] и передает ее AD.

Поскольку вы используете dc=example,dc=com как доменное имя, вы в конечном итоге получаете [email protected]=example,dc=com, что недействительно.

+0

Спасибо за ваш ответ, но я попробовал это раньше, и у меня такая же ошибка [LDAP: код ошибки 34 - Неправильное заданное DN: [email protected] – FoufaFaFa

+0

У меня все еще такая же ошибка:/ – FoufaFaFa

+0

Формат имени 'user @ domain' будет работать только для домена, для которого AD настроен для аутентификации. Почти не имеет значения, что он использует LDAP под капотом. Если вы создали какой-то другой раздел, я сомневаюсь, что он сработает, и вам придется использовать простой подход LDAP. –

Смежные вопросы