如何使用PHP从Active Directory中检索一个组的primaryGroupToken?显然这是一个计算属性,因此检索它并不是直截了当的,如答案所示:AD: Group does not have a primaryGroupToken attribute
基本上我正在使用以下命令:
ldap_search(
$connection,
"DC=host,DC=only,DC=network",
"(&(objectClass=group)(objectCategory=group)(primaryGroupToken=513))",
array("dn", "primarygrouptoken")
)
导致错误:
Warning: ldap_search(): Search: Inappropriate matching
知道如何使用PHP从Active Directory中使用它的主要组令牌检索组吗?
答案 0 :(得分:1)
来自链接答案reference的最简单方法是通过最后的数字 - 在objectsid中作为过滤器参数来请求组。
"(&(objectClass=group)(objectCategory=group)(objectSid=*-513))"
属性参数也将变为array("dn", "objectSid")
。
不幸的是,这是不可能的,因为您在评论中说的objectSid是OctetString或Byte数组而不是SDDL字符串。您可以使用转义(带前缀的\和十六进制)字节字符串来搜索特定组,但这不是问题所在。
但二进制过滤器不支持通配符。 另一种方法是请求所有组,然后为每个组解包objectSid,然后在后处理后按RID分组,但是根据域中的组数量,这可能太慢。
PHP中八位位组字符串和SDDS之间的转换示例位于here,同时通过PrimaryGroupId查找用户。