Данный метод аутентификации работает аналогично методу
password за исключением того, что в качестве метода проверки пароля используется LDAP. LDAP используется только для проверки пар «имя пользователя/пароль». Следовательно, пользователь уже должен существовать в базе данных, прежде чем LDAP можно будет использовать для аутентификации.
Аутентификация по протоколу LDAP может работать в двух режимах. В первом режиме,
который называется «режим simple bind»,
сервер выполняет привязку к отличительному имени (DN), сформированному как
префикс username суффикс.
Как правило, префикс параметр используется для указания
cn=, или DOMAIN\ в среде Active Directory. суффикс используется для указания оставшейся части DN в инфраструктуре, отличной от Active Directory.
Во втором режиме, называемом «режим search+bind», сервер сначала выполняет привязку к каталогу LDAP с использованием фиксированного имени пользователя и пароля, заданных параметрами ldapbinddn
и ldapbindpasswd, и выполняет поиск пользователя, выполняющего вход в базу данных. Если имя пользователя и пароль не заданы, будет выполнена попытка анонимной привязки к каталогу. Поиск будет осуществляться по поддереву, указанному в параметре ldapbasedn, и попытается найти точное соответствие значения атрибута, указанного в
ldapsearchattribute. После того как в результате этого поиска пользователь будет найден, сервер выполнит повторное связывание с каталогом от имени этого пользователя, используя указанный клиентом пароль, чтобы подтвердить корректность входа в систему. Данный режим аналогичен схемам LDAP-аутентификации, используемым в другом программном обеспечении, например, Apache mod_authnz_ldap и pam_ldap. Данный метод обеспечивает значительно большую гибкость в выборе места расположения объектов пользователей в каталоге, однако приводит к выполнению двух дополнительных запросов к серверу LDAP.
В обоих режимах используются следующие параметры конфигурации:
ldapserverИмена или IP-адреса LDAP-серверов для подключения. Можно указать несколько серверов, разделяя их пробелами.
ldapportНомер порта на LDAP-сервере для подключения. Если номер порта не указан, будет использоваться значение порта по умолчанию, установленное в библиотеке LDAP.
ldapscheme
Установите значение ldaps для использования протокола LDAPS. Это нестандартный
способ использования LDAP поверх SSL, поддерживаемый некоторыми реализациями LDAP-серверов
реализациями. См. также параметр ldaptls в качестве
альтернативы.
ldaptls
Установите значение 1, чтобы соединение между Digital Q.DataBase и LDAP-сервером
использовало шифрование TLS. При этом применяется StartTLS
операция согласно стандарту RFC 4513.
См. также параметр ldapscheme в качестве альтернативы.
Обратите внимание, что использование ldapscheme или
ldaptls шифрует только трафик между сервером Digital Q.DataBase и сервером LDAP. Соединение между сервером Digital Q.DataBase и клиентом Digital Q.DataBase по-прежнему будет незашифрованным, если только для него также не используется протокол SSL.
Следующие параметры используются только в режиме simple bind:
ldapprefixСтрока, добавляемая перед именем пользователя при формировании DN для аутентификации, при использовании аутентификации в режиме simple bind.
ldapsuffixСтрока, добавляемая после имени пользователя при формировании DN для аутентификации, при использовании аутентификации в режиме simple bind.
Следующие параметры используются только в режиме search+bind:
ldapbasednКорневой DN, с которого начинается поиск пользователя в режиме search+bind аутентификации.
ldapbinddnDN пользователя для подключения к каталогу с целью выполнения поиска при выполнении аутентификации в режиме search+bind.
ldapbindpasswdПароль пользователя для подключения к каталогу с целью выполнения поиска при выполнении аутентификации в режиме search+bind.
ldapsearchattribute
Атрибут для сопоставления с именем пользователя при поиске в процессе
выполнения аутентификации в режиме search+bind. Если атрибут не указан, то будет использован
uid атрибут.
ldapsearchfilter
Фильтр поиска, применяемый при выполнении аутентификации по методу search+bind.
Вхождения строки $username будут заменены на
имя пользователя. Данный параметр позволяет настраивать более гибкие фильтры поиска, чем
ldapsearchattribute.
ldapurlLDAP URL-адрес в формате RFC 4516 . Это альтернативный способ указания некоторых других параметров LDAP в более компактном и стандартном виде. Формат:
ldap[s]://host[:port]/basedn[?[атрибут][?[область поиска][?[фильтр]]]]
область поиска должен принимать одно из значений
из base, one, sub,
обычно указывается последним. (Значение по умолчанию — base, который
как правило, не используется в данном приложении.) атрибут может
может определять один атрибут; в этом случае он используется в качестве значения для
ldapsearchattribute. Если параметр
атрибут пуст, то параметр
фильтр может использоваться в качестве значения для
ldapsearchfilter.
Схема URL-адреса ldaps выбирает метод LDAPS для
установления LDAP-соединений через протокол SSL, что эквивалентно использованию параметра
ldapscheme=ldaps. Для использования зашифрованных соединений LDAP
с помощью StartTLS операции используйте
стандартную схему URL ldap и укажите
ldaptls параметр в дополнение к
ldapurl.
Для неанонимной привязки ldapbinddn
и ldapbindpasswd должны быть указаны как отдельные
параметры.
В настоящее время URL-адреса LDAP поддерживаются только с OpenLDAP, но не в Windows.
Смешивание параметров конфигурации для простой привязки (simple bind) с параметрами для режима search+bind является ошибкой.
При использовании режима search+bind поиск может быть выполнен по одному атрибуту, указанному с помощью ldapsearchattribute, либо с использованием
пользовательского фильтра поиска, заданного с помощью
ldapsearchfilter.
Указание ldapsearchattribute=foo эквивалентно
указанию ldapsearchfilter="(foo=$username)". Если не указан ни один из параметров, по умолчанию используется
ldapsearchattribute=uid.
Если Digital Q.DataBase был скомпилирован с
OpenLDAP в качестве клиентской библиотеки LDAP, параметр
ldapserver может быть опущен. В этом случае список имен узлов и портов запрашивается через
RFC 2782 записей DNS SRV.
Имя _ldap._tcp.DOMAIN отыскивается, где
DOMAIN извлекается из ldapbasedn.
Ниже приведен пример конфигурации LDAP с механизмом simple-bind:
host ... ldap ldapserver=ldap.example.net ldapprefix="cn=" ldapsuffix=", dc=example, dc=net"
При запросе на подключение к серверу базы данных от имени пользователя базы данных someuser , Digital Q.DataBase попытается выполнить привязку к LDAP-серверу, используя DN cn=someuser, dc=example,
dc=net и пароль, предоставленный клиентом. Если это соединение
будет успешно установлено, доступ к базе данных будет предоставлен.
Ниже приведен пример конфигурации «поиск + привязка» (search+bind):
host ... ldap ldapserver=ldap.example.net ldapbasedn="dc=example, dc=net" ldapsearchattribute=uid
При запросе на подключение к серверу базы данных от имени пользователя базы данных someuser запрашивается, Digital Q.DataBase попытается выполнить
анонимную привязку (так как параметр ldapbinddn не был указан) к
LDAP-серверу и выполнит поиск (uid=someuser)
в рамках указанного базового DN. Если запись будет найдена, система попытается выполнить привязку, используя полученные данные и пароль, предоставленный клиентом. Если эта вторая привязка завершится успешно, доступ к базе данных будет предоставлен.
Ниже приведена та же конфигурация «поиск + привязка», представленная в формате URL:
host ... ldap ldapurl="ldap://ldap.example.net/dc=example,dc=net?uid?sub"
Другое программное обеспечение, поддерживающее проверку подлинности через LDAP, использует тот же формат URL-адреса, что упрощает совместное использование конфигурации.
Ниже приведен пример конфигурации типа «поиск и привязка» (search+bind), в которой используется
ldapsearchfilter вместо
ldapsearchattribute для обеспечения проверки подлинности по
идентификатору пользователя или адресу электронной почты:
host ... ldap ldapserver=ldap.example.net ldapbasedn="dc=example, dc=net" ldapsearchfilter="(|(uid=$username)(mail=$username))"
Ниже приведен пример конфигурации типа «поиск и привязка», использующей механизм обнаружения записей DNS SRV для поиска имени узла (имен узлов) и порта (портов) службы LDAP для доменного имени example.net:
host ... ldap ldapbasedn="dc=example,dc=net"
Поскольку в LDAP для разделения различных частей DN часто используются запятые и пробелы, при настройке параметров LDAP значения часто необходимо заключать в двойные кавычки, как показано в примерах.