【发布时间】:2014-11-22 15:38:22
【问题描述】:
在我的 Java Web (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);
}
我们可以看到我需要有用户名和密码才能在活动目录中查询用户的数据,但我无法获取所有用户的密码。我还尝试将“密码”设置为“无”,尝试使用匿名访问,但它不起作用。 有人知道是否可以匿名访问 Active Directory 吗?我在 asp.net 中被告知,可以在不提供用户 ID 和密码的情况下访问活动目录。我想知道它也应该在 Java 中工作。我感谢任何帮助或示例。非常感谢。
【问题讨论】: