31.18. Поиск параметров подключения LDAP#

31.18. Поиск параметров подключения LDAP

31.18. Поиск параметров подключения LDAP

Если libpq был скомпилирован с поддержкой LDAP (опция --with-ldap для configure), можно получить параметры подключения, такие как host или dbname через LDAP с центрального сервера. Преимущество заключается в том, что если параметры подключения к базе данных изменятся, информацию о подключении не нужно обновлять на всех клиентских машинах.

Поиск параметров подключения LDAP использует файл сервиса подключения pg_service.conf (см. Раздел 31.17). Строка в разделе pg_service.conf, начинающаяся с ldap://, будет распознана как URL LDAP, и будет выполнен запрос LDAP. Результатом должен быть список пар keyword = value, которые будут использоваться для установки параметров подключения . URL должен соответствовать RFC 1959 и иметь следующую форму

ldap://[hostname[:port]]/search_base?attribute?search_scope?filter

где hostname по умолчанию равен localhost, а port по умолчанию равен 389.

Обработка файла pg_service.conf прекращается после успешного поиска в LDAP, но продолжается, если сервер LDAP недоступен. Это позволяет использовать резервный вариант с дополнительными строками URL LDAP, указывающими на различные серверы LDAP, классическими пары keyword = value или параметрами подключения по умолчанию. Если вы предпочитаете получить сообщение об ошибке в этом случае, добавьте синтаксически некорректную строку после URL LDAP.

Пример записи LDAP, созданной с помощью файла LDIF

version:1
dn:cn=mydatabase,dc=mycompany,dc=com
changetype:add
objectclass:top
objectclass:device
cn:mydatabase
description:host=dbserver.mycompany.com
description:port=5439
description:dbname=mydb
description:user=mydb_user
description:sslmode=require

может быть запрошен с помощью следующего LDAP URL:

ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase)

Вы также можете смешивать обычные записи файлов служб с поиском в LDAP. Полный пример для станзы в файле pg_service.conf будет следующим:

# only host and port are stored in LDAP, specify dbname and user explicitly
[customerdb]
dbname=customer
user=appuser
ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)