Я думаю, это может быть простой вопрос со сложным объяснением.
Я надеялся, что кто-нибудь поможет мне настроить мое дерево LDAP. Я хочу иметь группы и пользователей. Пользователь может принадлежать к одной или нескольким группам. Группы представляют различные службы / приложения, к которым пользователи должны иметь доступ, то есть доступ для входа в систему с помощью VPN.
Я использую OpenLDAP, и у меня есть следующая древовидная структура (с доменом example.com).
-dc=example,dc=com
--ou=groups
---cn=VPN (members=user1)
---cn=redmine (members=user1,user2)
---cn=vCenter (members=user2,user3)
--ou=users
---cn=user1
---cn=user2
---cn=user3
Все пользователи являются объектными классами inetOrgPerson, posixAccount и top (для их создания я использовал Generic: User Account в phpLdapAdmin). У меня есть наложение memberOf, поэтому запросы вроде (memberOf = cn = VPN, ou = groups, dc = example, dc = com) работают.
Теперь проблема. Некоторые приложения, которые я использую (например, redmine), имеют функциональность, в которой я могу определить используемый фильтр и, таким образом, использовать наложение memberOf. Другие приложения / службы не имеют этого, а только базовый DNS, в котором он выполняет поиск, т.е. vCenter выполняет следующий запрос:
base="dc=xyzz,dc=se" filter="(&(objectClass=inetOrgPerson)(objectClass=inetOrgPerson)(uid=user1))
Невозможно изменить что-либо, кроме базового dn, в котором он выполняет поиск. Как я могу затем использовать ldap, чтобы проверить, должны ли пользователи иметь доступ к vCenter, учитывая, что пользователь является членом группы vCenter в дереве LDAP.
Столкновение с этой проблемой заставляет меня думать, что я неправильно понял, как работает LDAP.