java 获取ad域信息_JAVA 通过LDAP获取AD域用户及组织信息
时间: 2023-09-04 20:07:12 浏览: 157
要通过Java使用LDAP获取AD域用户和组织信息,需要使用Java的JNDI API。
以下是一个简单的Java程序,演示如何使用JNDI API连接到AD域并获取用户和组织信息:
```
import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;
public class ADInfo {
public static void main(String[] args) {
String ldapURL = "ldap://AD域服务器地址:389";
String ldapUser = "CN=LDAP查询用户,OU=xxx,DC=xxx,DC=xxx";
String ldapPassword = "LDAP查询用户密码";
String searchBase = "OU=xxx,DC=xxx,DC=xxx";
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapURL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ldapUser);
env.put(Context.SECURITY_CREDENTIALS, ldapPassword);
try {
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(objectCategory=user)";
NamingEnumeration<SearchResult> results = ctx.search(searchBase, filter, searchControls);
while (results.hasMore()) {
SearchResult searchResult = results.next();
Attributes attributes = searchResult.getAttributes();
Attribute attribute = attributes.get("cn");
String cn = (String) attribute.get();
System.out.println(cn);
}
filter = "(objectCategory=organizationalUnit)";
results = ctx.search(searchBase, filter, searchControls);
while (results.hasMore()) {
SearchResult searchResult = results.next();
Attributes attributes = searchResult.getAttributes();
Attribute attribute = attributes.get("ou");
String ou = (String) attribute.get();
System.out.println(ou);
}
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,替换以下变量:
- ldapURL:AD域服务器地址和端口号
- ldapUser:用于查询AD域的LDAP用户的DN
- ldapPassword:用于查询AD域的LDAP用户的密码
- searchBase:要搜索的AD域的基本DN
该程序连接到AD域并搜索用户和组织。它使用过滤器来限制搜索结果,只搜索用户和组织单位对象。它还使用SearchControls对象来设置搜索范围。
对于每个搜索结果,程序从属性中提取cn或ou,并将其打印到控制台上。
请注意,此代码需要在Java应用程序中包含JNDI API类路径。如果您使用Maven或Gradle之类的构建工具,则可以将以下依赖项添加到项目中:
```
<dependency>
<groupId>com.sun.jndi</groupId>
<artifactId>ldap</artifactId>
<version>1.2.1</version>
</dependency>
```
阅读全文