Context
Мы добавляем фильтрацию членства в группах при импорте участников с сервера LDAP в наше приложение.
(Ранее мы импортировали всех участников из заданного ldap "базового DN"; теперь администраторы могут ограничивать определенные группы, то есть члены "Sales" и "HR" в базовом DN).
Наше приложение поддерживает:
Кроме того, мы планируем поддерживать только статические группы, а не динамические группы.
Как бы мы это сделали
В прошлом мы использовали два поиска для репликации членов в нашу базу данных для этой новой функциональности.
- поиск всех членов в baseDN
- поиск всех групп (с участниками), где имя группы находится в списке (например, «Продажи» или «HR»). Программно отслеживать с помощью карты «какие пользователи принадлежат к каким группам», т. Е. Используя атрибут «член группы» («uniqueMember» в SunONE, «член» в ActiveDirectory)
- Пересечь результаты # 1 и # 2, чтобы получить «членов для импорта»
Может MemberOf / IsMemberOf уменьшить количество запросов и логику?
В коротких исследованиях в Интернете я обнаружил, что SunONE и ActiveDirectory имеют атрибут (isMemberOf / memberOf), который определяет «группы, к которым принадлежит этот пользователь»
Теоретически мы могли бы упростить приведенную выше логику до одного запроса LDAP:
- Поиск всех членов в baseDN, которые являются членами любой из групп
Может MemberOf / IsMemberOf уменьшить количество запросов и логику?
Знайте проблемы:
- memberOf / isMemberOf поддерживает только статические группы
- не поддерживает вложенные группы
Вопрос
- Будет ли работать этот подход с использованием memberOf / IsMemberOf?
- Есть какие-нибудь предостережения?
- А как насчет OpenLDAP или других серверов? все ли они поддерживают такой атрибут. (Я вижу, что OpenLDAP имеет memberOf «overlay», но администратор должен явно включить его)
Ссылка
SunOne:
http://docs.oracle.com/cd/E19575-01/820-2763/bcajq/index.html
Active Directory:
http://msdn.microsoft.com/en-us/library/ms677943.aspx
Смежные вопросы SO:
Как написать запрос LDAP для проверки, является ли пользователь членом группы?
memberOf vs. group Членство в LDAP (Liferay)