如何无需逐个联系域控,通过ldapsearch查询AD森林用户组成员身份?
跨AD森林全域验证用户组成员身份的方法
全局编录+LDAP链式匹配规则(纯LDAP场景推荐)
全局编录确实不存储组的完整成员列表,但AD提供了LDAP_MATCHING_RULE_IN_CHAIN(OID: 1.2.840.113556.1.4.1941)这个专用匹配规则,能直接查询用户是否属于目标组(包括跨域嵌套组),无需逐个访问域控制器。
用ldapsearch的示例命令:ldapsearch -h <全局编录服务器地址>:3268 -D "<域管理员账号>" -w "<密码>" -b "DC=你的根域,DC=com" "(&(objectCategory=user)(sAMAccountName=<目标用户名>)(memberOf:1.2.840.113556.1.4.1941:=<目标组完整DN>))"结果判断:如果返回该用户的条目,说明用户属于目标组;无返回则不属于。
PowerShell ActiveDirectory模块(Windows环境更便捷)
要是在已加入域的Windows机器上操作,用AD模块能自动遍历整个森林,无需手动逐个指定子域:# 基础验证(不含嵌套组) $user = Get-ADUser -Identity "<目标用户名>" -Server "<全局编录服务器>:3268" -Properties memberOf $targetGroup = Get-ADGroup -Identity "<目标组名>" -Server "<全局编录服务器>:3268" $user.memberOf -contains $targetGroup.DistinguishedName # 含嵌套组的验证 Get-ADPrincipalGroupMembership -Identity "<目标用户名>" -Server "<全局编录服务器>:3268" | Where-Object { $_.DistinguishedName -eq $targetGroup.DistinguishedName }说明:指定全局编录端口3268后,模块会自动调用森林的全局编录资源,完成跨域查询。
关键补充
之前用全局编录没成功,是因为你尝试直接获取组的成员列表,但全局编录不存储这个属性。而链式匹配规则是从用户出发反向匹配组关系,刚好规避了这个限制,是AD跨域成员验证的标准方案。
内容的提问来源于stack exchange,提问作者André Bolinhas
相关产品推荐
相关产品推荐

