LDAP通过JAVA而不提供密码

在C#中,我写了下面的代码来连接到LDAP服务器并查询相同的内容。

String ldapUrl = "LDAP://..."; DirectoryEntry entry = new DirectoryEntry(ldapUrl); DirectorySearcher dSearch = new DirectorySearcher(entry); String Name = "ravi"; dSearch.Filter = "(&(objectClass=user)(sAMAccountName=" + Name + "))"; foreach (SearchResult sResultSet in dSearch.FindAll()) { String data = "Login Name :" + (GetProperty(sResultSet, "cn")) + "\r\n" + "First Name :" + (GetProperty(sResultSet, "givenName")) + "\r\n" + "Middle Initials :" + (GetProperty(sResultSet, "initials")) + "\r\n" + "Last Name : " + (GetProperty(sResultSet, "sn")); } 

如果您注意到,我没有提供用户名和/或密码。 我认为它使用登录用户凭据的操作系统登录LDAP服务器。

但在JAVA

 String url = "ldap://localhost:10389"; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, url); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(***Context.SECURITY_PRINCIPAL, "uid=admin,ou=system"***); env.put(***Context.SECURITY_CREDENTIALS, "secret"***); try { DirContext ctx = new InitialDirContext(env); System.out.println("connected"); System.out.println(ctx.getEnvironment()); ctx.close(); } catch (Exception ex) { System.out.println("error when trying to create the context"); } 

java中是否有一种方法可以在不提供用户名和密码的情况下绑定到LDAP服务器? 我尝试通过将Context.SECURITY_AUTHENTICATION设置为NONE来绑定,但是它们会抛出匿名登录的例外,不允许。 我不知道如何使用匿名用户凭据,但操作系统登录用户凭据。

这可能吗?怎么样?

问候,

我使用JNI来调用C#dll …问题是JNI非常慢。 每次通话大约需要15-20秒