Я использую Python 3.7 и ldap3.Я могу установить соединение и получить список групп, в которых я заинтересован.У меня проблемы с получением членов группы.
server = Server('ldaps.ad.company.com', use_ssl=True, get_info=ALL)
with Connection(server, 'mydomain\\ldapUser', '******', auto_bind=True) as conn:
base = "OU=AccountGroups,OU=UsersAndGroups,OU=WidgetDepartment," \
+ "OU=LocalLocation,DC=ad,DC=company,DC=com"
criteria = """(
&(objectClass=group)
(
|(sAMAccountName=grp-*widgets*)
(sAMAccountName=grp-oldWidgets)
)
)"""
attributes = ['sAMAccountName', 'distinguishedName']
conn.search(base, criteria, attributes=attributes)
groups = conn.entries
На данный момент groups
содержит все группы, которые я хочу.Я хочу перебрать группы для сбора участников.
for group in groups:
# print(cn)
criteria = f"""
(&
(objectClass=person)
(memberof:1.2.840.113556.1.4.1941:={group.distinguishedName})
)
"""
# criteria = f"""
# (&
# (objectClass=person)
# (memberof={group.distinguishedName})
# )
# """
attributes = ['displayName', 'sAMAccountName', 'mail']
conn.search(base, criteria, attributes=attributes)
people = conn.entries
Я знаю, есть люди в группах, но people
- это всегда пустой список.Не имеет значения, выполняю ли я рекурсивный поиск или нет.
Что мне не хватает?
Редактировать
Существует более длинная предысторияэтот вопрос слишком длинныйУ меня есть теория по этому вопросу, хотя.У меня не хватило времени и я переключился на другую библиотеку Python LDAP - которая работает.Я думаю проблема с этим вопросом может заключаться в том, что я "форматировал" запрос в несколько строк.Новый ldap lib (python-ldap
) пожаловался, и я удалил символы новой строки, и это просто сработало.У меня не было времени вернуться и проверить эту теорию с ldap3
.