sAMAccountName对用户嵌套组的AD Ldap查询



我正在尝试进行一个查询,输出用户参与的所有组(和嵌套组(,由sAMAccountName值查询。

例如,下面的查询可以工作并给出预期的输出,但使用displayname。

(&(objectCategory=group)(member:1.2.840.113556.1.4.1941:=cn=Tester,ou=people,dc=Windomain,dc=local))

简单地改变";cn";至";sAMAccountName";不起作用(我确实验证了sAMAccountName值是否正确(

是否可以使用LDAP查询执行此操作?

有几个选项可以显示用户的完整组成员身份,包括所有嵌套组。

最简单的方法是查询用户对象的TokenGroups属性。这是一个构造的属性,它将返回组的所有SID,这些SID将在用户进行身份验证时添加到用户的访问令牌中。构造的属性的唯一条件,搜索范围必须是要返回的属性的基本范围。

LDAP_MATCHING_RULE_IN_CHAIN(1.2.840.113556.1.4.1941(匹配规则的功能有限,它只会返回用户DN已添加到组的成员属性中的组,因此一些嵌套组将不会包含在查询中。

另一种选择是使用第三方工具,通过横向组成员身份查看组成员身份来返回嵌套组。例如NetTools用户的成员资格选项https://nettools.net/users-membership以及NetTools AD属性对话框,其中包括TokenGroups选项卡,该选项卡将显示已解析SID的TokenGroup属性。

您可以通过sAMAccountName搜索用户,并询问msds-memberOfTransitive属性,该属性包含用户所属组的可分辨名称的递归列表。

还有msds-tokenGroupNames属性,它包含SID出现在tokenGroups属性中的所有组的可分辨名称。

不同之处在于tokenGroups只包括安全组,而memberOf也包括分发列表。只有安全组才能用于分配权限。

两者都是构造的属性,因此必须将其具体放在搜索中返回的属性列表中。

很抱歉无法添加评论

要小心msds memberoftransitive属性,它有一些时髦的逻辑,不遵循正常的值范围规则,可能会返回不完整的结果,请参阅https://blog.joeware.net/2021/04/19/6068/

最新更新