Как я могу получить группу с помощью 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 .
Также см. Здесь вторую ссылку. Дополнительные ссылки здесь и здесь