在我的 Java 网络 (JBoss) 应用程序中,我需要从 Active Directory 获取数据。基本上,我知道员工的用户 ID(Windows 登录 ID),我需要知道他/她的办公室电话号码。我认为唯一包含员工电话号码的地方是 Windows Active Directory。所以我尝试了一些示例 java 代码并尝试访问 Active Directory。这是示例代码 ( 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);
}
我们可以看到,我需要有用户名和密码才能查询 Activity 目录中的用户数据,但我不可能获得所有用户的密码。我还尝试将“密码”设置为“无”,试图使用匿名访问,但它不起作用。 有人知道是否可以匿名访问 Activity 目录吗?有人告诉我在 asp.net 中,可以在不提供用户 ID 和密码的情况下访问 Activity 目录。我想知道它也应该在 Java 中工作。我感谢任何帮助或例子。非常感谢。
最佳答案
- 据我所知,现在允许匿名登录到 ldap 服务器已经很不常见了
- 询问 Active Directory 服务器的管理员,是否(部分)允许 1)
- 您无需知道每个用户的密码即可访问任何人的电话号码;尝试使用专门为您的 Web 应用程序设置的单个帐户来模拟您的 JBoss 应用程序,具有足够的权限来阅读您需要的内容
- 在进行任何 LDAP 编程之前,使用一个好的 LDAP 编辑器来查看您是否可以访问您需要的东西。尝试例如http://directory.apache.org/studio .
关于java - 如何匿名访问 Windows Active Directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079144/