目前,我正在使用用户和密码作为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进行身份验证。
我该怎么办?你能提供一个例子吗?
答案 0 :(得分:1)
https://sourceforge.net/projects/javaldapntlmbind/
该解决方案使用UnboundID Java LDAP SDK,对于NTLM处理,它使用samba.org的JCIF Java库。 由于使用JCIF,它与平台无关,不需要在Windows上运行。
答案 1 :(得分:0)
没有机会,JGSS不支持NTLM作为SASL机制。将Kerberos(GSS-API)与SASL一起使用。