我有一个 LDAP 搜索查询,我使用以下过滤器
"(&(objectClass=user)(objectCategory=person))"
并针对 AD 运行以获取用户帐户。返回的属性之一(“memberOf”)包含一个“;”用户所属组的分隔字符串。
即
CN=MyGroup,OU=MyMainOU,DC=masterdom,DC=local; CN=管理员、CN=内置、DC=masterdom、DC=本地
我想过滤掉内置安全组,在处理列表时我可以依赖包含字符串“cn=builtin”的“内置”组吗?或者它可以随本地等而改变。如果是这样,正确的方法是什么?
最佳答案
如果您想使用 memberOf
属性,您可以使用完整的容器名称将其包含在过滤器中:
(&(objectClass=user)(objectCategory=person)(memberof=CN=Builtin,DC=masterdom,DC=local))
但要记住的是,memberOf
属性只会显示用户所源自的域组件 (DC) 的 native 组 - 我的意思是,如果用户 A
是 Developers
和 Management
组的一部分,但当前域中不存在 Developers
组如果您正在查询的组件,则 memberOf
属性在查询时将仅显示用户的 Management
组。
此外,memberOf
属性是计算反向链接属性或构造属性。它由 Active Directory 维护和计算,因此当您移动用户和组时,该值将自动为用户更改。
但是,根据您的帖子判断,如果您只是迭代用户列表并检查 memberOf
属性是否存在 CN=Builtin
(例如.Contains
检查),那么是的,您可以依赖该字符串,因为它是您正在查询的 DC 的一部分。
关于active-directory - 过滤掉内置 AD 安全组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18720465/