我正在尝试将eXist配置为LDAP以验证用户,我已经查看了eXist LDAP Security的文档。事实证明,默认配置仅支持三个设置: security.ldap.connection.url
(LDAP 服务器的连接 URL)、security.ldap.dn.user
(用户列表 DN)和security.ldap.dn.group
(组列表 DN)。
它不适用于我的情况,因为LDAP服务器不启用匿名查询,这意味着我必须提供用户名/密码才能建立连接。
除了在LDAP服务器上启用匿名查询之外,我如何实现这一目标的任何建议?
谢谢托马斯
似乎您可以实现自己的上下文工厂,并使用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