我正在尝试将eXist配置为LDAP以对用户进行身份验证,我已在eXist LDAP Security检出了文档。原来默认配置只支持三种设置:
security.ldap.connection.url
(LDAP服务器的连接URL),security.ldap.dn.user
(用户列表DN)和security.ldap.dn.group
(组列表DN)。
它对我的情况不起作用,因为LDAP服务器不启用匿名查询,这意味着我必须提供用户名/密码才能建立连接。
除了在LDAP服务器上启用匿名查询之外,有关如何实现此目的的任何建议吗?
谢谢, 托马斯
答案 0 :(得分:0)
您似乎可以实现自己的上下文工厂,并使用 security.ldap.contextFactory 参数将其提供给存在。
context工厂是用于初始化目录连接的java类。您可以实现使用ad-hoc凭据初始化连接的上下文工厂。
想法是实现这样的类:
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