如何匿名访问Windows Active Directory?

时间:2014-11-22 15:38:22

标签: java ldap jndi

在我的Java Web(Jboss)应用程序中,我需要从Active Directory获取数据。基本上,我知道员工的userID(windows登录ID),我需要知道他/她的办公室电话号码。所以我认为唯一包含员工电话的地方是在Windows Active Directory中。所以我尝试了一些示例java代码并尝试访问活动目录。这是一个示例代码:http://myjeeva.com/querying-active-directory-using-java.html public ActiveDirectory(String username,String password,String domainController){     properties = new Properties();

properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
properties.put(Context.PROVIDER_URL, "LDAP://" + domainController);
properties.put(Context.SECURITY_PRINCIPAL, username + "@" + domainController);
properties.put(Context.SECURITY_CREDENTIALS, password);

// initializing active directory LDAP connection
try {
    dirContext = new InitialDirContext(properties);
} catch (NamingException e) {
    LOG.severe(e.getMessage());
}

// default domain base for search
domainBase = getDomainBase(domainController);

// initializing search controls
searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchCtls.setReturningAttributes(returnAttributes);

}

因此我们可以看到我需要拥有用户名和密码才能查询活动目录中的用户数据,但我无法获取所有用户的密码。我还试图将“密码”设置为“无”,试图使用匿名访问,但它不起作用。 有人知道可以匿名访问Active目录吗?我在asp.net中被告知,可以在不提供用户ID和密码的情况下访问活动目录。我想知道它应该在Java中工作。我感谢任何帮助或例子。非常感谢。

1 个答案:

答案 0 :(得分:1)

  1. AFAIK如今允许匿名登录ldap服务器非常罕见
  2. 询问Active Directory服务器的管理员,是否(部分)允许
  3. 您不需要拥有每个用户的密码来访问任何人的电话号码;尝试使用专门为您的网络应用程序设置的单个帐户模拟您的JBoss应用程序,拥有足够的权限来阅读您的需求
  4. 在进行任何LDAP编程之前,请使用一个好的LDAP编辑器来查看您是否可以访问所需的内容。尝试例如http://directory.apache.org/studio