Б3. Аутентификация при использовании LDAP/AD

Конфигурационный файл

Настройки приводятся в файле конфигурации auth-ldap-rfc4515.conf.

Также предоставляются конфигурационные файлы с типовыми настройками:

auth-ldap-rfc4515-check-group.conf — шаблон конфигурационного файла внешней авторизации администраторов через LDAP по упрощенной схеме с проверкой принадлежности к группе Active Directory.

auth-ldap-rfc4515-check-group-novar.conf — шаблон конфигурационного файла внешней авторизации администраторов через LDAP по упрощенной схеме с проверкой принадлежности к группе Active Directory с использованием переменных.

auth-ldap-rfc4515-simple-login.conf — шаблон конфигурационного файла внешней авторизации администраторов через LDAP по упрощенной схеме.

Основные теги конфигурационного файла auth-ldap-rfc4515.conf:

<server /> — определение LDAP сервера.

Атрибут

Описание

Значение по умолчанию

base-dn

DN объекта, относительно которого осуществляется поиск.

Значение атрибута rootDomainNamingContext объекта Root DSE

cacertfile

Файл корневых сертификатов (только UNIX).

host

Адрес LDAP-сервера.

Доменный контроллер для сервера под ОС Windows.

127.0.0.1 для сервера под ОС семейства UNIX.

Допускается указание нескольких тегов <server /> с адресами разных LDAP-серверов. Первым следует указывать адрес главного сервера, на который предполагается основная нагрузка.
Если сервер недоступен, то будет предпринята попытка аутентификации на следующем сервере и далее по порядку в указанной последовательности. Если сервер доступен, то поиск учетной записи будет осуществляться только на данном сервере. Вне зависимости от результата аутентификации в этом случае подключение к следующим серверам производится не будет.

scope

Область поиска. Допустимые значения:

sub-tree — вся область ниже базового DN,

one-level — прямые потомки базового DN,

base — базовое DN.

sub-tree

tls

Устанавливать TLS для подключения к LDAP.

no

ssl

Использовать протокол LDAPS при подключении к LDAP.

no

<set /> — задание переменных поиском в LDAP.

Атрибут

Описание

Значение по умолчанию

attribute

Имя атрибута, значение которого присваивается переменной. Отсутствие недопустимо.

filter

RFC4515 фильтр поиска в LDAP.

scope

Область поиска. Допустимые значения:

sub-tree — вся область ниже базового DN,

one-level — прямые потомки базового DN,

base — базовое DN.

sub-tree

search

DN объекта, относительно которого осуществляется поиск.

При отсутствии используется base-dn тега <server />

variable

Имя переменной. Должно начинаться с буквы и содержать только буквы и цифры. Отсутствие недопустимо.

Для корректной аутентификации все группы, для которых настроено членство пользователей в группах в Центре управления (Администрирование → Аутентификация → Настройки LDAP/AD аутентификации → Членство пользователей в группах), т.е. для которых в теге <set /> есть соответствующие записи, должны фактически присутствовать в домене Active Directory.

Переменные могут быть использованы в значениях атрибута add тегов <mask /> и <expr />, в значении атрибута value тега <filter /> в форме \varname, а так же в значении атрибута search тега <set />. Допустимый уровень рекурсии при раскрытии переменных — 16.

Если поиск возвращает несколько найденных объектов, то используется только первый.

<mask /> — шаблоны имени пользователя.

Атрибут

Описание

add

Строка, добавляемая к фильтру поиска по операции И с элементами подстановки.

user

Маска имени пользователя с использование DOS-образных метасимволов * и #. Отсутствие недопустимо.

Например:

<mask user="*@#"  add="sAMAccountName=\1" />

<mask user="*\*"  add="sAMAccountName=\2" />

\1 и \2 — ссылки на совпадающие маски в атрибуте user.

<expr /> — шаблоны имени пользователя с использованием регулярных выражений (атрибуты идентичны <mask />).

Например:

<expr user="^(.*)@([^.,=@\s\\]+)$"  add="sAMAccountName=\1" />

<expr user="^(.*)\\(.*)"            add="sAMAccountName=\2" />

Соответствие масок и регулярных выражений:

Маска

Регулярное выражение

*

.*

#

[^.,=@\s\\]+

<filter /> — фильтр поиска в LDAP.

Атрибут

Описание

value

Строка, добавляемая к фильтру поиска по операции И с элементами подстановки.

<user-dn/> определяет правила трансляции имен в DN с использованием DOS-подобных масок.

В теге <user-dn/> допускается использование символов подстановки:

* заменяет последовательность любых символов кроме . , = @ \ и пробелов;

# заменяет последовательность любых символов.

<user-dn-expr/> определяет правила трансляции имен в DN с использованием регулярных выражений.

Например, одно и то же правило в разных вариантах:

<user-dn user="*@example.com" dn="CN=\1,DC=example,DC=com"/>
<user-dn-expr user="(.*)@example.com" dn="CN=\1,DC=example,DC=com"/>

\1 .. \9 определяют место подстановки в шаблоне значений *, # или выражений в скобках.

Исходя из данного принципа: если указано имя пользователя в виде login@example.com, то после трансляции получится DN: "CN=login,DC=example,DC=com".

<user-dn-extension-enabled/> разрешает выполнение Lua-скрипта ldap_user_dn_translate.ds (пользовательская процедура Трансляция имен пользователей в LDAP DN) для выполнения трансляции имени пользователя в DN. Данный скрипт выполняется после попыток применения всех правил user-dn, user-dn-expr, если не найдено ни одно подходящее правило. У скрипта один параметр — введенное имя пользователя. Скрипт возвращает строку, содержащую либо DN, либо ничего. Если не подошло ни одно правило и скрипт не разрешен или не вернул ничего, то введенное имя пользователя используется как есть.

<bind dn/> определяет DN пользователя, который используется для подключения к серверу LDAP, и <bind password/> определяет пароль пользователя, который используется для подключения к серверу LDAP (возможны пустые DN и password для анонимного подключения).

Например:

<bind dn="CN=some dn,OU=some name,DC=example,DC=com" password="***" />

Если одновременно заданы отдельный аккаунт для поиска Bind DN (в т.ч. анонимный) и правила трансляции логина DN, то приоритет отдается первому, а второе игнорируется.

Конкатенация фильтров

<set variable="admingrp" filter="&amp;(objectclass=group)(cn=ESuite Admin)" attribute="dn" />
<mask user="*\*" add="sAMAccountName=\2" />
<filter value="&amp;(objectClass=user)(memberOf=\admingrp)" />

Если admingrp в результате поиска примет значение "CN=ESuite Admins,OU=some name,DC=example,DC=com", а пользователь ввел domain\user, тогда в итоге получается фильтр:

"(&(sAMAccountName=user)(&(objectClass=user)(memberOf=CN=ESuite Admins,OU=some name,DC=example,DC=com)))"

Пример настройки LDAP/AD-аутентификации

Далее приведен пример типовых настроек для аутентификации с использованием LDAP. Настройки задаются в Центре управления, раздел Администрирование → Аутентификация → LDAP/AD-аутентификация (для варианта Упрощенные настройки).

Исходные параметры администраторов, которые должны пройти аутентификацию:

домен: dc.test.local

группа в Active Directory: DrWeb_Admins

Настройки Центра управления:

Название настройки

Значение

Тип сервера

Microsoft Active Directory

Адрес сервера

dc.test.local

Шаблоны имен пользователей для подтверждения авторизации

Маска учeтной записи

test\* или *@test.local

Имя пользователя

\1

Членство пользователей для подтверждения авторизации

Название

DrWeb_Admins

Тип

группа