13

我使用 Spring Security 来管理用户和组证券。

所有数据都存储在 ldap 服务器中。我的配置如下:

  <authentication-manager alias="authenticationManager">
         <ldap-authentication-provider 
           user-search-filter="(mail={0})"
           user-search-base=""
           group-search-filter="(uniqueMember={0})"
           group-search-base="ou=groups"
           group-role-attribute="cn"
           role-prefix="ROLE_"
           user-context-mapper-ref="contextMapper">
         </ldap-authentication-provider>
         <lda
  </authentication-manager>

  <beans:bean id="contextMapper" class="com.mycompany.CustomContextMapper">
    <beans:property name="indexer" ref="entityIndexer" />
  </beans:bean>

  <ldap-user-service  server-ref="ldapServer" user-search-filter="(mail={0})" />

  <ldap-server manager-dn="cn=admin,dc=springframework,dc=org" manager-password="password" url="ldap://server/dc=springframework,dc=org" id="ldapServer" />

一切都像魅力一样运行。现在,如果第一个 ldap 服务器关闭(回退),我想添加第二个 ldap 服务器。我找不到一个简单的方法来做到这一点。

所以,我的问题很简单:如果第一个服务器关闭,如何在此配置中添加第二个 ldap 服务器以提供后备?

4

3 回答 3

22

对 url 属性使用空格分隔值:

url="ldap://server1/dc=springframework,dc=org ldap://server2/dc=springframework,dc=org"

参考:LDAP 和 LDAPS URL

于 2012-05-30T13:50:35.597 回答
4

前面的答案是正确的。

我想添加有关 LDAP 服务器冗余的信息。由于这是添加多个 LDAP url 的目标,希望它有用。

我测试了几个场景:

对于 LDAP 服务器 url(url1, url2)

如果 urls 指定的两个 LDAP 服务器都关闭,应用程序登录将失败。

如果一台 LDAP 服务器停机。将 server1 视为 url1 : ldap://url1 (无论 url1 位于第 1 位还是第 2 位),应用程序都可以正常工作。

如果任一 url 语法错误: url1 : ldap://MALFORMED_URL ,应用程序将无法启动。

于 2012-07-13T20:22:55.293 回答
4

这太简单了,我错过了。

只需配置多个以空格分隔的 url 即可:

<ldap-server ... url="ldap://server1/dc=springframework,dc=org ldap://server2/dc=springframework,dc=org" />
于 2012-05-30T13:50:07.607 回答