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 34.17).
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 LDAP réussie, mais continue 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 dans ce cas
vous préférez avoir un message d'erreur, ajoutez une ligne syntaxiquement
incorrecte après l'URL LDAP.
À titre d'exemple, une entrée LDAP créée à partir du fichier LDIF suivant
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
peut être retrouvée avec l'URL LDAP suivante :
ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase)
Dans le fichier de service, vous pouvez mélanger des entrées standards avec
des recherches LDAP. Voici un exemple complet d'un bloc 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=*)