Как получить группу из primaryGroupToken из Active Directory с помощью PHP?

Как я могу получить группу с помощью primaryGroupToken из Active Directory с помощью PHP? По-видимому, это вычисленный атрибут, поэтому его получение не является прямым, так как в этом ответе ускользает: AD: Группа не имеет атрибута primaryGroupToken

По сути, я использую следующую команду:

ldap_search( $connection, "DC=host,DC=only,DC=network", "(&(objectClass=group)(objectCategory=group)(primaryGroupToken=513))", array("dn", "primarygrouptoken") ) 

Это приводит к ошибке:

 Warning: ldap_search(): Search: Inappropriate matching 

Любая идея, как получить группу, используя основной токен из Active Directory с помощью PHP?

Самый простой способ из ссылки связанного ответа – запросить группу по цифрам после финала – в объекте-объекте в качестве параметра фильтра.

 "(&(objectClass=group)(objectCategory=group)(objectSid=*-513))" 

Параметр атрибутов также станет array("dn", "objectSid") .

К сожалению, это невозможно, поскольку objectSid, как вы говорите в своем комментарии, это строка OctetString или Byte Array, а не строка SDDL. Вы можете искать определенную группу, используя escape-строку (префикс с \ и шестнадцатеричным) байтовой строкой, но это не то, о чем спрашивает вопрос.

Однако двоичные фильтры не поддерживают подстановочный знак. Альтернативой является запрос всех групп, а затем распаковка objectSid для каждой группы, а затем группировка по RID после пост-обработки, однако в зависимости от количества групп в вашем домене это может быть слишком медленным.

Ниже приведен пример преобразования между строкой октета и SDDS в PHP, а также поиск пользователей PrimaryGroupId.

Другой альтернативой является использование ADO в соответствии с здесь или здесь, но для этого требуется ADODB .

Также см. Здесь вторую ссылку. Дополнительные ссылки здесь и здесь