用于搜索学生的LDAP过滤器

时间:2009-03-12 08:44:16

标签: active-directory ldap

我是LDAP和AD的新手。我想创建一个LDAP过滤器来显示AD中的所有学生。但问题是学生们处于不同的基础DN:

OU=STUDENTS,OU=USERS,OU=SOE,OU=FOAE,OU=UNIVERSITY,DC=sepang
OU=STUDENTS,OU=USERS,OU=SOMLC,OU=FOAE,OU=UNIVERSITY,DC=sepang
OU=STUDENTS,OU=USERS,OU=SOCS,OU=FOS,OU=UNIVERSITY,DC=sepang

即每个学生就像

CN =khx72b,OU=STUDENTS,OU=USERS,OU=SOCS,OU=FOS,OU=UNIVERSITY,DC=sepang

你可以看到来自不同院系的学生在不同的地方。 给定用户名如何搜索并查找给定用户是否在目录中?

所有学生的objectClass'user'

3 个答案:

答案 0 :(得分:1)

因为您似乎正在搜索“用户”类型的对象,这些对象在OU中称为“学生”,但在其他方面没有共同的父级。

这不能一步完成(即使用单个LDAP查询)。

您必须检索名为“STUDENTS”的所有OU,并逐个使用它们作为基本DN,就像您已经指出的那样。

或者您找到所有学生共享的属性(例如,直接组成员身份,或某处特殊值)并将其用作过滤器。这是一种更危险的方法,因为没有什么可以保证每个学生都有你依赖的功能 - 有些可能没有正确地输入AD。

答案 1 :(得分:1)

通过将“searchRoot”设置为OU的LDAP路径来搜索OU中的对象。然后,所有搜索都将被限制在OU中。

答案 2 :(得分:0)

Tomalak,是的,Microsoft确实提供了许多可用于此目的的属性,例如“employeeType”,“comment”,“department”,“company”,“department”,“divison”等,但是这些问题是它们没有预先填充任何可以帮助您的信息。您可以开始使用其中一种用于将来的目的,但是您必须保持这种做法以使其保持一致。我最简单的解决方案是将每个用户放入一个名为OU名称的组中,如果他们当前位于同一个OU中,这应该是一个非常简单的任务。然后,一旦完成,您就可以轻松创建一个LDAP查询,然后查看该组的成员资格,如下所示:

((objectCategory=person)(objectClass=user)(memberOf=CN=STUDENTS GROUP,OU=USERS,OU=SOCS,OU=FOS,OU=UNIVERSITY,DC=sepang))

请注意,在LDAP过滤器中使用“memberOf”时,搜索值必须是组的完整字符串,因此您不能使用通配符,例如:memberOf = CN = STUDENTS GROUP *)。

您仍然需要维护您或某人或某事(例如自动计划脚本任务)的做法,以保证您的LDAP查询准确无误。

我确实看到this post表示你想要做的事情是可能的,而不必在"Matching Components of Distinguished Names"做任何额外的事情,但我以前从未见过这样的事情,我无法让它发挥作用。另请参阅有关ADO搜索的this tutorial以了解有关这些工作的更多信息