32.18. LDAP Lookup of Connection Parameters (original) (raw)
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for thecurrent version, or one of the other supported versions listed above instead.
If libpq has been compiled with LDAP support (option `--with-ldap`
for configure
) it is possible to retrieve connection options like host
or dbname
via LDAP from a central server. The advantage is that if the connection parameters for a database change, the connection information doesn't have to be updated on all client machines.
LDAP connection parameter lookup uses the connection service file pg_service.conf
(see Section 32.17). A line in a pg_service.conf
stanza that starts with ldap://
will be recognized as an LDAP URL and an LDAP query will be performed. The result must be a list of keyword = value
pairs which will be used to set connection options. The URL must conform to RFC 1959 and be of the form
ldap://[hostname
[:port
]]/searchbase
?attribute
?searchscope
?filter
where hostname
defaults to localhost
and port
defaults to 389.
Processing of pg_service.conf
is terminated after a successful LDAP lookup, but is continued if the LDAP server cannot be contacted. This is to provide a fallback with further LDAP URL lines that point to different LDAP servers, classical keyword = value
pairs, or default connection options. If you would rather get an error message in this case, add a syntactically incorrect line after the LDAP URL.
A sample LDAP entry that has been created with the LDIF file
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
might be queried with the following LDAP URL:
ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase)
You can also mix regular service file entries with LDAP lookups. A complete example for a stanza in pg_service.conf
would be:
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=*)