当前位置: 首页 > 知识库问答 >
问题:

一个spring-ldap存储库项目可以访问两个不同的ldap目录吗?

郏志学
2023-03-14

我正在尝试创建一个spring-rest应用程序来返回可能来自两个不同LDAP目录服务器的值。是否可以使用springLDAP存储库?是否可以创建多个ldaptemplatecontextsource以便查询这两个目录?

共有1个答案

鲁洋
2023-03-14

您可以为每个 LDAP 目录配置单独的 ldap 模板上下文源源字节。

您可以参考以下基本配置(Java配置);

@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目录的数量增加,那么最好实现一个ldap模板工厂,它接受连接详细信息并返回ldaptemtem实例(示例)。

 类似资料:
  • 我想使用Spring LDAP 设置多个 LDAP 存储库。我的目标是同时在所有存储库中创建或更新对象。 我使用LdapRepository Spring接口,我认为目前这是不可能的。 我想知道我是否可以创建自己的LdapRepository来扩展Spring,但是我不知道如何开始。 这是我的配置: 完整地说,一个存储库: 知道怎么做吗? 提前感谢任何帮助。

  • 问题内容: 我想使用两个Git存储库构建一个项目。其中一个包含源代码,而另一个包含构建和部署脚本。 我的问题是我需要一个用于构建和部署项目不同部分(大型项目,多个存储库,相同的构建和部署脚本)的存储库,但是Jenkins似乎无法处理此问题(或者我不知道)不知道/找不到方法)。 问题答案: 更新 现在不建议使用多个SCM插件,因此用户应该迁移到Pipeline插件。 旧答案 是的,詹金斯可以处理。只

  • 问题内容: 我有一个Java项目正在使用两个导入的具有相同类()的jar 。导入类时,有没有一种方法可以明确说明要使用哪个jar?使用: 似乎按照构建路径顺序的顺序使用该类,但是由于某种原因,似乎并非如此 在运行时。我正在Eclipse中构建项目。 问题答案: 您不能仅在Java源代码中执行所要求的操作。Java不是为此而设计的。 这是一种糟糕的情况,只有使用自定义类加载器才能可靠地处理它们,每个

  • 我是个彻头彻尾的Jenkins noob,所以如果我错过了一些显而易见的事情,我会提前道歉! 我正在使用Visual Studio 2010构建一个intranet web应用程序,并使用AnkhSVN将更改提交到存储在运行Visual SVN server的服务器上的存储库中。 由于预算限制,该服务器还充当我们的web服务器,并运行Jenkins。它连接到我们的内部网络,但没有外部互联网接入,所

  • 我使用redis在我的Spring Boot应用程序中存储会话。我也在使用Spring会话库来实现这一点。我有两个不同的redis实例,即和。一旦有人进入我的应用程序(当然是在登录之后),我希望将他们的会话存储在和服务器中。请注意,这两个redis实例都是主实例,不在任何主从设置中。这是我到目前为止在我的Spring设置。 所以现在,一旦用户登录,他们的会话就存储在中(我在中添加了与美国redis

  • 我正在做一个NFC应用程序,想知道这种情况是否可能: 比如说,我在一个项目中有两个NFC标签和两个活动。NFC A是通过在NFC A中编写MIME类型来打开活动A的 在项目的清单文件中,活动A有以下意图过滤器: 所以,这很好用。我将添加另一个NFC标签和另一个活动。NFC B是为了开放活动B而编写的 现在,我应该如何将MIME类型写入NFC B并为活动B设置意图过滤器?考虑到活动A和活动B都在一个