Java怎么查询AD(ldap)目录下的信息

程序员小贝 2013-06-18 09:06:54

精确到uid cn 能查询,也就是说能根据用户名字什么的查询一个人的信息

现在需要精确到ou目录,假如我的dn是dc=demo,dc=com
然后下面有一个ou=测试的

ou下面有很多用户,

我怎么查询 ou=测试的,dc=demo,dc=com 下面的所有人员信息

求高手指点。



...全文
654 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ITshu 2015-09-15
  • 打赏
  • 举报
回复
引用 3 楼 vikaan 的回复:
去年的贴子,估计你也解决了,给别人看吧。正解是:
searchFilter ="objectClass=*";
这样就行了吗,ou的参数不传吗
vikaan 2014-11-03
  • 打赏
  • 举报
回复
去年的贴子,估计你也解决了,给别人看吧。正解是:
searchFilter ="objectClass=*";
jake512 2013-11-08
  • 打赏
  • 举报
回复
你问题解决了吗。我也用到类似的问题。求分享。
程序员小贝 2013-06-18
  • 打赏
  • 举报
回复
把查询的代码贴出来
public void Ldapbyuserinfo(String userName) {

// Create the search controls

SearchControls searchCtls = new SearchControls();

// Specify the search scope

searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

// specify the LDAP search filter

String searchFilter = "sAMAccountName=" + userName;

// Specify the Base for the search 搜索域节点

String searchBase = "DC=example,DC=COM";

int totalResults = 0;

String returnedAtts[] = { "url", "whenChanged", "employeeID", "name",

"userPrincipalName", "physicalDeliveryOfficeName",

"departmentNumber", "telephoneNumber", "homePhone", "mobile",

"department", "sAMAccountName", "whenChanged", "mail" }; // 定制返回属性



searchCtls.setReturningAttributes(returnedAtts); // 设置返回属性集



// searchCtls.setReturningAttributes(null); // 不定制属性,将返回所有的属性集



try {

NamingEnumeration answer = dc.search(searchBase, searchFilter,

searchCtls);

if (answer == null || answer.equals(null)) {

System.out.println("answer is null");

} else {

System.out.println("answer not null");

}

while (answer.hasMoreElements()) {

SearchResult sr = (SearchResult) answer.next();

System.out

.println("************************************************");

System.out.println("getname=" + sr.getName());

Attributes Attrs = sr.getAttributes();

if (Attrs != null) {

try {



for (NamingEnumeration ne = Attrs.getAll(); ne

.hasMore();) {

Attribute Attr = (Attribute) ne.next();

System.out.println("AttributeID="

+ Attr.getID().toString());

// 读取属性值

for (NamingEnumeration e = Attr.getAll(); e

.hasMore(); totalResults++) {

String user = e.next().toString(); // 接受循环遍历读取的userPrincipalName用户属性

System.out.println(user);

}

// System.out.println(" ---------------");

// // 读取属性值

// Enumeration values = Attr.getAll();

// if (values != null) { // 迭代

// while (values.hasMoreElements()) {

// System.out.println(" 2AttributeValues="

// + values.nextElement());

// }

// }

// System.out.println(" ---------------");

}

} catch (NamingException e) {

System.err.println("Throw Exception : " + e);

}

}

}

System.out.println("Number: " + totalResults);

} catch (Exception e) {

e.printStackTrace();

System.err.println("Throw Exception : " + e);

}

}

更多的可以去看 http://bbs.it-home.org/thread-1819-1-1.html 现在想知道的是怎么精确到一个ou目录 查询下面的所有人员,求救

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧