Si libpq a été compilé avec le support de LDAP (option
du script --with-ldap
configure
),
il est possible de récupérer les options de connexion comme host
ou dbname
via LDAP à partir d'un serveur central.
L'avantage en est que, si les paramètres de connexion d'une base évolue,
l'information de connexion n'a pas à être modifiée sur toutes les machines
clientes.
La recherche LDAP des paramètres de connexion utilise le fichier service
pg_service.conf
(voir Section 33.16).
Une ligne dans pg_service.conf
commençant par
ldap://
sera reconnue comme une URL LDAP et une requête LDAP
sera exécutée. Le résultat doit être une liste de paires motclé =
valeur
qui sera utilisée pour configurer les options de connexion.
L'URL doit être conforme à la RFC 1959 et être de la forme :
ldap://[hôte
[:port
]]/base_recherche
?attribut
?étendue_recherche
?filtre
où hôte
vaut par défaut localhost
et port
vaut par défaut 389.
Le traitement de pg_service.conf
se termine après une
recherche réussie dans LDAP, mais continu si le serveur LDAP ne peut pas
être contacté. Cela fournit un moyen de préciser d'autres URL LDAP pointant
vers d'autres serveurs LDAP, des paires classiques motclé =
valeur
ou les options de connexion par défaut. Si vous obtenez à la
place un message d'erreur, ajoutez une ligne syntaxiquement incorrecte après
l'URL LDAP.
Un exemple d'une entrée LDAP qui a été créée à partir d'un fichier 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
amènera l'exécution de l'URL LDAP suivante :
ldap://ldap.masociété.com/dc=masociété,dc=com?description?one?(cn=mabase)
Vous pouvez mélanger des entrées d'un fichier de service standard avec
des recherches par LDAP. Voici un exemple complet dans
pg_service.conf
:
# seuls l'hôte et le port sont stockés dans LDAP, # spécifiez explicitement le nom de la base et celui de l'utilisateur [customerdb] dbname=clients user=utilisateurappl ldap://ldap.acme.com/cn=serveur,cn=hosts?pgconnectinfo?base?(objectclass=*)