Как я могу решить Ldap сокет закрытая ошибка в весной LDAP? - PullRequest
0 голосов
/ 08 января 2020

Я попытался создать пример программы для своего проекта. Это LDAP с пружинной загрузкой.

Я тестировал его в своей среде разработки. Тогда это работает хорошо. Тем не менее, когда я тестирую его в среде развертывания, возникает ошибка закрытия сокета.

Разница заключается только в URL-адресе LDAP и пароле (я не могу создать пароль администратора со специальными символами, например, @, #).

Итак, я попытался получить доступ к LDAP с помощью ldapsearch в среде развертывания. Затем я получил несколько ошибок. Однако, когда я ищу эту ошибку, я не могу найти подходящее решение для меня.

Это моя пружинная конфигурация для доступа к LDAP.

@Bean
public ContextSource contextSource() {
    LdapContextSource contextSource = new LdapContextSource();

    contextSource.setUrl("ldap://192.168.113.12");
    contextSource.setBase("dc=test,dc=test");
    contextSource.setUserDn("cn=admin,dc=test,dc=test");
    contextSource.setPassword("test2019!@");
    contextSource.afterPropertiesSet();

    //for develop
//  contextSource.setUrl("ldap://192.168.0.192");
//  contextSource.setPassword("test2019");

    PoolingContextSource pcs = new PoolingContextSource();
    pcs.setDirContextValidator(new DefaultDirContextValidator());
    pcs.setContextSource(contextSource);

    TransactionAwareContextSourceProxy proxy = new TransactionAwareContextSourceProxy(pcs);

    return proxy;
}

@Bean
public LdapTemplate ldapTemplate() {
    return new LdapTemplate(contextSource());
}

Это изображения ошибок, когда доступ к LDAP с использованием пружины LDAP.

enter image description here enter image description here enter image description here enter image description here

Это ошибки изображения с использованием ldapsearch.

enter image description here enter image description here

Помогите мне.

пс. Я не знал, как реализован сервер LDAP, потому что он установлен другой командой ...

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Btw. на мой взгляд, более удачный подход - установить свойства следующим образом:

application.yml (или application.properties)

ldap:
 contextSource:
 url: ldap://192.168.113.12:389 #Local
 base: dc=test,dc=test
 userDn: cn=admin,dc=test,dc=test
 password: test2019!@

и в классе конфигурации:

@Configuration
public class LdapConfiguration {
  @Bean
  @ConfigurationProperties(prefix="ldap.context-source")
  public LdapContextSource contextSource() {
    return new LdapContextSource();
  }

 @Bean
 public ContextSource poolingLdapContextSource() {
   PoolingContextSource pcs = new PoolingContextSource();
   pcs.setDirContextValidator(new DefaultDirContextValidator());
   pcs.setContextSource(contextSource());

   TransactionAwareContextSourceProxy proxy = new TransactionAwareContextSourceProxy(pcs);

   return proxy;
  }
  // other configs like ldaptemplate
}
0 голосов
/ 08 января 2020

Я бы сказал, что порт отсутствует;)

contextSource.setUrl("ldap://192.168.113.12:389");
...