Как читать атрибуты для данного DN в ldap3 (как искать с ldap3, если нет фильтра)
Если у меня уже есть DN LDAP, как мне получить атрибуты для этого DN с ldap3.Connection.search()
? Других критериев поиска нет, у меня уже есть DN...
Я попытался найти атрибут dn, но он не нашел объектов. Я также пытался заставить search_filter
в ''
, '()'
или же None
и все они вернули некорректную строку фильтра.
Я также не мог найти способ сделать это с абстрактным Reader...
В ldapsearch
вам не нужно указывать фильтр поиска, если вы выполняете поиск по baseDN...
import ldap3
ldap_conn = ldap3.Connection('ldapserver', raise_exceptions=True,
auto_bind=True, user='me', password='mypassword')
my_dn = "attrib1=blahblah, ou=org1, dc=dc1, dc=dcroot"
ldap_conn.search(
search_base=my_dn,
search_filter= '(????)', # required
search_scope=ldap3.BASE,
attributes='*'
)
print ldap_conn.response
1 ответ
Я только что понял, что objectClass
всегда будет присутствовать, поэтому установка его на подстановочный знак должна привести к тому, что search_filter вернет 1 запись, связанную с базовым DN:
ldap_conn.search(
search_base=my_dn,
search_filter= '(objectClass=*)', # required
search_scope=ldap3.BASE,
attributes='*'
)
Однако это кажется глупым, что нет особого случая для операции LOOKUP против соединения, которому присвоено DN в ldap3.
РЕДАКТИРОВАТЬ: @cannatag упомянул, что это ограничение протокола, поэтому я решил проверить RFC: (RFC 4511). По-видимому, ldapsearch
и Active Directory эмулируют LIST или READ в стиле x.500, устанавливая objectClass
фильтр присутствия:
Обратите внимание, что X.500-подобная "списочная" операция может быть эмулирована клиентом, запрашивающим одноуровневую операцию поиска с фильтром, проверяющим наличие атрибута "objectClass", и что X.500-подобная "читаемая" операция может быть эмулированным с помощью операции поиска baseObject с тем же фильтром. Сервер, предоставляющий шлюз для X.500, не обязан использовать операции чтения или списка, хотя он может сделать это, и если он это делает, он должен предоставлять ту же семантику, что и операция поиска X.500.