Переменные идентификации и аутентификации по LDAP-протоколу
Возможны два режима LDAP-аутентификации:
-
без предварительного поиска;
-
с предварительным поиском.
Для успешной аутентификации парольная аутентификация по LDAP-протоколу через LDAP-сервер требуется наличие пользователя в БД ЛИНТЕР и в БД LDAP-сервера, при этом имя пользователя БД ЛИНТЕР должно соответствовать одному из атрибутов пользователя в БД LDAP-сервера (для аутентификации без предварительного поиска данный атрибут должен входить в состав уникального имени пользователя в БД LDAP-сервера). Кроме того, чтобы для режима LDAP-аутентификации с предварительным поиском не требовалось задавать DN и пароль пользователя с правами поиска, необходимо разрешение на анонимный поиск в LDAP-базе.
В режиме без предварительного поиска сначала идет подключение к серверу LDAP_SERVER и попытка выполнить соединение с уникальным именем, сформированным как LDAP_PREFIX< имя >LDAP_SUFFIX, где < имя > и пароль определяются соответствующими параметрами команды OPEN (см. документ «Интерфейс нижнего уровня»). Удачное соединение означает удачную идентификацию и аутентификацию.
В режиме с предварительным поиском сначала идет подключение к серверу LDAP_SERVER и попытка выполнить соединение со специальными именем LDAP_SEARCHDN и паролем, который может быть задан одним из способов:
-
напрямую через переменную LDAP_SEARCHPW;
-
с помощью ключа LDAPSRCHPW;
-
через файл, полный путь к которому передается в параметре LDAP_SEARCHPW_FILE;
-
анонимно, если эти учетные данные не заданы.
После этого производится поиск пользователя в БД LDAP-сервера в каталоге LDAP_BASEDN с фильтром LDAP_FILTER. Найденное в результате поиска уникальное имя (если единственное) используется для попытки соединения с введенным пользователем паролем. Удачное соединение означает удачную идентификацию и аутентификацию.
Для настройки LDAP-аутентификации ядра СУБД ЛИНТЕР используются следующие переменные окружения:
-
LDAP_PREFIX определяет строку, добавляемую в качестве префикса к имени пользователя БД ЛИНТЕР для формирования уникального имени (DN) для LDAP-аутентификации. Переменная служит для указания имени атрибута, соответствующего выбранной схеме, отличной от значения по умолчанию. Если переменная
LDAP_PREFIX
не задана, по умолчанию используется строка "cn=". Например, для пользователя SYSTEM БД ЛИНТЕР будет использован атрибут с значением cn=SYSTEM (если LDAP_PREFIX ="cn=", т.е. стандартное имя пользователя). Если LDAP_PREFIX ="sn=", то имя пользователя БД СУБД ЛИНТЕР будет соответствовать атрибуту Surname LDAP-схемы.Переменная игнорируется в режиме LDAP-аутентификации с предварительным поиском.
Значение переменной может задаваться с помощью ключа
/LDAPPREFIX
. -
LDAP_SUFFIX определяет строку, добавляемую в качестве суффикса к имени пользователя БД ЛИНТЕР для формирования уникального имени (DN) для LDAP-аутентификации.
LDAP_SUFFIX
выбирается при настройке LDAP-сервера и обычно соответствует доменному имени организации. Значение строки должно состоять из предопределенных имен атрибутов схемы LDAP-сервера (ou – организационная единица, c – страна, dc – домен и т.п.) и их значений. Указание переменнойLDAP_SUFFIX
является обязательным для режима LDAP-аутентификации без предварительного поиска. Если эта переменная не задана, то любой запрос на аутентификацию пользователей с включенной LDAP-аутентификацией будет отвергнут.Например,
LDAP_SUFFIX="ou=Users, dc=company, dc=com"
DN строка формируется как конкатенация строк
LDAP_PREFIX
, имени пользователя СУБД ЛИНТЕР, символа ',' иLDAP_SUFFIX
.Переменная игнорируется в режиме LDAP-аутентификации с предварительным поиском.
Значение переменной может задаваться с помощью ключа
/LDAPSUFFIX
. -
LDAP_SERVER задает адрес LDAP-сервера в виде доменного имени. Если переменная не задана, по умолчанию предполагается работа с локальным LDAP-сервером (localhost). В переменной
LDAP_SERVER
может быть указан номер порта, отделяемый от доменного имени двоеточием. Можно задавать несколько серверов через пробел, в этом случае попытка соединиться с очередным LDAP-сервером будет предприниматься после неудачного соединения с предшествующим LDAP-сервером.Например,
LDAP_SERVER="ldap.server.domain.org" LDAP_SERVER="ldap.server.domain.org:636" LDAP_SERVER="ldap.server.relex.org" LDAP_SERVER="ldap1.server.domain.org ldap2.server.domain.org:636 ldap3.server.domain.org"
Значение переменной может задаваться с помощью ключа
/LDAPSRV
. -
LDAP_TIMEOUT задает интервал в секундах, в течение которого ожидается ответ от LDAP-сервера. Если в течение указанного интервала ответ не поступил, возвращается код завершения «Тайм-аут LDAP-сервера». По умолчанию интервал тайм-аута принимается в 10 секунд.
Ожидание ответа от LDAP-сервера выполняется в чередующихся фазах активного и пассивного тайм-аута:
Фаза активного тайм-аута
Фаза пассивного тайм-аута
…
Фаза активного тайм-аута
Фаза пассивного тайм-аута
В фазе активного тайм-аута ЛИНТЕР-сервер ожидает ответ от LDAP-сервера в течение указанного в
LDAP_TIMEOUT
интервала времени. Если ответ не поступил, генерируется код завершения «Тайм-аут LDAP-сервера».Если пользователь продолжает попытки соединиться с ЛИНТЕР-сервером, то в течение следующей фазы пассивного тайм-аута (также равного значению
LDAP_TIMEOUT
) все попытки соединения с LDAP-сервером немедленно отвергаются с выдачей кода завершения «Тайм-аут LDAP-сервера» (хотя к этому моменту соединение с LDAP-сервером, возможно, уже восстановлено).После пассивной фазы тайм-аута повторяется фаза активного тайм-аута и т.д. Это сделано с целью предотвращения накопления очереди пользователей, ожидающих аутентификации, при сбоях в работе LDAP-сервера.
Пример
LDAP_TIMEOUT=15
Значение переменной может задаваться с помощью ключа
/LDAPTOUT
. -
LDAP_BASEDN задает режим LDAP-аутентификации с предварительным поиском уникального имени пользователя в БД LDAP-сервера. Значением переменной является корень поиска, производимого через заданный фильтр.
Задание переменной обязательно для LDAP-аутентификации с предварительным поиском
Значение переменной может задаваться с помощью ключа
/LDAPBASEDN
. -
LDAP_FILTER задает фильтр, используемый для поиска пользователя в БД LDAP-сервера. Строка фильтра может содержать служебное слово '%username%', которое при поиске заменяется на введенное при установлении соединения с СУБД ЛИНТЕР имя пользователя БД ЛИНТЕР. В найденной записи извлекается уникальное имя пользователя (DN), которое используется совместно с введенным пользователем паролем для попытки аутентификации. Если фильтр находит несколько записей (либо не находится ни одной), то аутентификация считается не пройденной.
Переменная игнорируется в режиме LDAP-аутентификации без предварительного поиска.
Значение по умолчанию "(uid=%username%)".
Значение переменной может задаваться с помощью ключа
/LDAPFLTR
. -
LDAP_SEARCHDN задает уникальное имя (DN), с помощью которого будет производиться поиск в БД LDAP-сервера.
Переменная игнорируется в режиме LDAP-аутентификации без предварительного поиска. Если значение переменной не задано или задана пустая строка, то будет использоваться анонимный поиск (т.е. без предоставления регистрационных данных пользователя БД LDAP-сервера).
Значение переменной может задаваться с помощью ключа
/LDAPSRCHDN
. -
LDAP_SEARCHPW задает пароль для имени, от которого будет производиться поиск в БД LDAP-сервера.
Переменная игнорируется в режиме LDAP-аутентификации без предварительного поиска или в случае анонимного поиска.
Значение переменной может задаваться с помощью ключа
/LDAPSRCHPW
. -
LDAP_SEARCHPW_FILE задает путь к файлу, содержащему пароль
LDAP_SEARCHPW
. Переменная имеет более высокий приоритет, чем переменнаяLDAP_SEARCHPW
и ключ/LDAPSRCHPW
.Значение переменной может задаваться с помощью ключа
/LDAPSRCHPWFILE
.