我是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'
。
答案 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以了解有关这些工作的更多信息