目前,我使用用户名和密码作为 ldap 的连接凭据(以便在此 AD 上进行搜索)。
我的代码如下:
env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ...);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ...);
env.put(Context.SECURITY_CREDENTIALS, ...);
env.put("com.sun.jndi.ldap.connect.timeout", ...);
try {
ctx = new InitialLdapContext(env, null);
}
catch (NamingException e) {
System.out.println("error")
}
我想更改此代码,因此它不会使用用户+密码作为 LDAP 的凭据。我希望它使用 NTLM 进行身份验证。
我该怎么做?能举个例子吗?
最佳答案
https://sourceforge.net/projects/javaldapntlmbind/
该解决方案使用 UnboundID Java LDAP SDK,对于 NTLM 处理,它使用 samba.org 的 JCIF Java 库。 由于使用JCIF,它是平台无关的,不需要在Windows上运行。
关于java - 使用 NTLM 连接到 LDAP (Active Directory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11932031/