Получить список всех членств в группах LDAP

Я использую FreeIPA в качестве LDAP-бэкэнда для своего флеш-приложения. До сих пор я использовал flask-simpleldap с OpenLDAP, чтобы получить членство пользователя в группе, что отлично работает со следующими параметрами:

LDAP_BASE_DN="dc=myrealm,dc=com"
LDAP_REALM_NAME="MyFunRealm"
LDAP_OBJECTS_DN="dn"
LDAP_USER_OBJECT_FILTER="(&(objectclass=inetorgperson)(uid=%s))"
LDAP_GROUP_MEMBERS_FIELD="member"
LDAP_GROUP_OBJECT_FILTER="(&(objectclass=groupofnames)(member=%s))"
LDAP_GROUP_MEMBER_FILTER="member=%s"
LDAP_GROUP_MEMBER_FILTER_FIELD="cn"

Я хочу изменить структуру LDAP моих пользователей, чтобы разместить группы внутри групп, но приведенные выше настройки дают пользователям только группу «первого уровня». (Извините, я не знаком с LDAP и его терминологией).

Как я могу изменить запрос / фильтр, чтобы получить список всех групп, членом которых является пользователь, через членство в группе в группе?


person Lars    schedule 12.09.2017    source источник
comment
Что вы подразумеваете под группой в группе? Фильтр (&(objectclass=groupofnames)(member=%s)) предоставит вам все группы, в которых %s находится memberOf, независимо от того, где группа находится в дереве.   -  person Esteban    schedule 12.09.2017
comment
Группа может содержать пользователей или другие группы. Если пользователь входит в группу, которая является членом другой группы, я хочу, чтобы обе эти группы отображались в поиске. Поиск в моем вопросе возвращает только прямое членство в группе.   -  person Lars    schedule 12.09.2017


Ответы (1)


Я не думаю, что это возможно, учитывая вашу настройку (например, flask + openldap)

OpenLDAP не имеет (насколько мне известно) встроенного механизма для фильтрации вложенных групп. Flask выполняет запрос за вас, поэтому вы не сможете легко реализовать рекурсивный поиск.

В другом каталоге (например, AD) вы можете указать расширяемое правило сопоставления для фильтрации вложенных групп, примерно в этой строке:

(&(objectclass=groupofnames)(member:1.2.840.113556.1.4.1941:=%s))

Но это конкретное расширяемое правило сопоставления не существует в OpenLDAP.

person Esteban    schedule 12.09.2017
comment
Спасибо, что ответили. Я пока оставлю вопрос открытым. - person Lars; 14.09.2017