Я пытаюсь создать приложение Spring Rest для возврата значений, которые могут поступать с двух разных серверов каталогов ldap. Возможно ли это с помощью весенних репозиториев ldap? Можно ли создать более одного ldaptemplate и contextsource, чтобы я мог запрашивать оба каталога?
Вопрос
Может ли проект репозитория spring ldap получить доступ к двум разным каталогам ldap?
Ответы
Ответ 1 · рейтинг 1 · Mert Z.
Вы можете настроить отдельные компоненты ldapTemplate и contextSource для каждого каталога LDAP.
Вы можете обратиться к следующей базовой конфигурации (JavaConfig);
@Configuration
@EnableLdapRepositories(basePackages = "com.foo.ldap1.repositories", ldapTemplateRef="ldapTemplate1")
public class Ldap1Configuration {
@Autowired
Environment env;
@Bean
public LdapContextSource contextSource1() {
LdapContextSource contextSource= new LdapContextSource();
contextSource.setUrl(env.getRequiredProperty("ldap1.url"));
contextSource.setBase(env.getRequiredProperty("ldap1.base"));
contextSource.setUserDn(env.getRequiredProperty("ldap1.user"));
contextSource.setPassword(env.getRequiredProperty("ldap1.password"));
return contextSource;
}
@Bean(name="ldapTemplate1")
public LdapTemplate ldapTemplate1() {
return new LdapTemplate(contextSource1());
}
}
@Configuration
@EnableLdapRepositories(basePackages = "com.foo.ldap2.repositories", ldapTemplateRef="ldapTemplate2")
public class Ldap2Configuration {
@Bean
public LdapContextSource contextSource2() {
LdapContextSource contextSource= new LdapContextSource();
contextSource.setUrl(env.getRequiredProperty("ldap2.url"));
contextSource.setBase(env.getRequiredProperty("ldap2.base"));
contextSource.setUserDn(env.getRequiredProperty("ldap2.user"));
contextSource.setPassword(env.getRequiredProperty("ldap2.password"));
return contextSource;
}
@Bean(name="ldapTemplate2")
public LdapTemplate ldapTemplate2() {
return new LdapTemplate(contextSource2());
}
}
Затем вы можете ссылаться на каждый экземпляр в своем приложении, как указано ниже:
@Autowired
@Qualifier("ldapTemplate1")
private LdapTemplate ldapTemplate1;
@Autowired
@Qualifier("ldapTemplate2")
private LdapTemplate ldapTemplate2;
Примечание; Если количество каталогов LDAP увеличивается, лучше реализовать фабрику ldaptemplate, которая принимает сведения о соединении и возвращает экземпляры ldaptemplate (пример).
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Страница входа в LDAP не работает
- Spring LDAP - Создание LdapTemplate в автономной программе Java - Использование Spring LDAP в качестве
- Улучшить код Java для LDAP
- ActiveDirectory DirectorySearcher: почему FindOne() медленнее, чем FindAll(), и почему свойства опущены?
- Spring LDAP ldapTemplate.modifyAttributes(context) Обновление группы пользователей Проблема
- Добавление пользователя с паролем в Active Directory LDAP