Получить пустые атрибуты LDAP DN - PullRequest
1 голос
/ 28 октября 2009

В настоящее время я программирую инструмент (в ANSI C) для моей компании, который читает из каталога LDAP и выводит все данные в определенном формате (то есть: формат имени нашей старой проприетарной директории db). Затем это обрабатывается другим инструментом, который читает вывод и так далее ... не спрашивайте.

В любом случае, для моей команды "ldaplist ..." мне нужно распечатать все атрибуты, принадлежащие этой записи, даже те, для которых значение не установлено.

К сожалению ldap_first_attribute / ldap_next_attribute не возвращает их, только те, для которых установлено значение, и я не могу найти параметр ldap_search_ext_s или переключатель ldap_set_option, которые бы мне здесь помогли. Надеюсь, один из вас знает, как это сделать.

Спасибо за ваше время и помощь заранее!

Ответы [ 2 ]

2 голосов
/ 06 ноября 2009

Согласен с skwllsp. Вам нужно будет возвращать схему для каждого объектного класса в каждой записи и отображать каждый атрибут. К сожалению, это, вероятно, будет намного больше, чем вы ожидали, так как в этом типе возврата может быть много «бесполезных» данных.

Вы бы хорошо показали заполненные атрибуты, а затем список желаемых атрибутов, которые не заполнены.

Вы можете получить некоторую помощь, посмотрев на: http://developer.novell.com/documentation/samplecode/cldap_sample/index.htm Удачи -Джим

1 голос
/ 28 октября 2009

Я не использовал ldap_search_ext_s, поэтому я не знаю его параметров и не могу сказать вам решение, основанное на использовании этой функции. Однако я хотел бы предложить одну идею.

  1. Вам необходимо получить схему с сервера LDAP. DN записи схемы находится в корневом узле. После этого вам нужно получить запись схемы и ее атрибут «objectClasses». Он содержит спецификации каждого класса и его разрешенных типов атрибутов (схемы).

  2. Когда вы запускаете поиск LDAP, вы обычно получаете ноль, одну или несколько записей. Каждая запись имеет атрибут objectClass. Прочитайте его значения, которые являются именами классов объектов. А затем найдите каждый объект класса в схеме и получите его типы атрибутов. Если в возвращенной записи нет одного или нескольких атрибутов, это означает, что либо у атрибута нет значений, либо вам не разрешено читать атрибут в этой записи.

...