2

我正在尝试将 eXist 配置为 LDAP 以对用户进行身份验证,并且我已经在eXist LDAP Security上查看了文档。结果默认配置只支持三个设置: security.ldap.connection.url(LDAP 服务器的连接 URL)、security.ldap.dn.user(用户列表 DN)和security.ldap.dn.group(组列表 DN)。

它不适用于我的情况,因为 LDAP 服务器不启用匿名查询,这意味着我必须提供用户名/密码才能建立连接。

除了在 LDAP 服务器上启用匿名查询之外,我有什么建议可以实现这一点吗?

谢谢,托马斯

4

1 回答 1

0

似乎您可以实现自己的上下文工厂并将其与security.ldap.contextFactory参数一起提供。

上下文工厂是用于初始化与目录的连接的 java 类。您可以实现一个上下文工厂,该工厂使用临时凭据初始化连接。

这个想法是实现一个这样的类:

public class MyCustomContextFactory implements InitialContextFactory {

  public Context getInitialContext(Hashtable env) {

    // Fetch the application DN and password somehow (config file...)
    String applicationDN = ...;
    String password = ...;

    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, applicationDN);
    env.put(Context.SECURITY_CREDENTIALS, password);

    return new InitialDirContext(env);

  }
}

您生成一个 jar 文件,将其添加到服务器的类路径中,并指定配置参数:

security.ldap.contextFactory = your.java.package.name.MyCustomContextFactory
于 2011-09-04T01:04:54.613 回答