1

目前,我使用用户名和密码作为 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 进行身份验证。

我该怎么做?你能举个例子吗?

4

2 回答 2

2

https://sourceforge.net/projects/javaldapntlmbind/

该解决方案使用 UnboundID Java LDAP SDK,对于 NTLM 处理,它使用 samba.org 的 JCIF Java 库。由于使用 JCIF,它是平台独立的,不需要在 Windows 上运行。

于 2013-12-20T18:32:02.780 回答
0

没有机会,JGSS 不支持 NTLM 作为 SASL 机制。将 Kerberos (GSS-API) 与 SASL 一起使用。

于 2012-08-13T10:05:19.147 回答