Назад | Перейти на главную страницу

Аутентификация вложенных групп в LDAP

Я мало что знаю о LDAP, поэтому заранее прошу прощения.

Я ищу ошибку в приложении, которое выполняет некоторую аутентификацию с использованием LDAP.

Структура каталогов LDAP, созданная клиентом, содержит вложенные группы и выглядит следующим образом:

UAT Group
    DEV Group
         portfolio_mangers

В DEV Group у нас есть несколько пользователей:

DEV Group
     jsmith
     cwilson
     plo

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

Итак, если мы начнем наш обход либо в группе UAT, либо в группе разработчиков, пользователи jsmith, cwilson и plo будут аутентифицированы.

Это возможно, правда? Из моего чтения я считаю, что мне нужно указать базовое имя и область действия. И поскольку я хочу искать все поддерево, я бы указал область действия SUBTREE. Имеет ли это смысл? Есть ли альтернативы?

Совет от опытных людей LDAP будет огромным. Спасибо.

Какое приложение вы пытаетесь настроить.

Подавляющее большинство приложений, которые имеют некоторый уровень поддержки LDAP в качестве клиента LDAP, просто не поддерживают вложенные группы.

Если не изменять программное обеспечение, вам может не повезти.

Если вашим сервером LDAP является Microsoft Active Directory, то вам может помочь нестандартный поисковый фильтр.

Видеть: - http://support.microsoft.com/kb/914828 - http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475(v=vs.85).aspx

LDAP_MATCHING_RULE_IN_CHAIN ​​- это OID правила сопоставления, предназначенный для предоставления метода для поиска происхождения объекта. Многие приложения, использующие AD и AD LDS, обычно работают с иерархическими данными, которые упорядочены отношениями родитель-потомок. Раньше приложения выполняли транзитивное расширение группы для определения членства в группе, которое использовало слишком большую пропускную способность сети; приложениям необходимо было совершить несколько обходов, чтобы выяснить, упал ли объект «в цепочку», если ссылка пройдена до конца.

Если вы знаете, какая конкретная группа авторизована, начните с этого.

Вы получите ссылку на отличительное имя LDAP этого объекта и перечислите member атрибут объекта. Это будет содержать более выдающиеся имена.

Проверьте каждый из этих объектов. Если это пользователь, то он является членом группы, добавьте его в список авторизованных пользователей. Если это группа, перечислите их member объект, как вы только что сделали с «базовой» группой, добавляя пользователей в разрешенный список и перечисляя группы.

Я бы посоветовал установить ограничение на рекурсию (или, лучше, список, отслеживающий, какие объекты были проверены, чтобы не проверять их дважды), поскольку в отношениях членства в группах возможны бесконечные циклы.

Вы создадите список всех авторизованных пользовательских объектов, затем сравните отличительное имя аутентифицирующего пользователя, чтобы увидеть, есть ли оно в списке авторизации.

База и область поиска предназначены для ограничения объема попыток поиска объектов; вы захотите использовать место, которое содержит все, на что вы смотрите.