PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/08/2024 12:01:07

groju
Membre

Authentification ldap avec plusieurs OU à la racine d'un domaine

Bonjour,

Voici le contexte : j'ai un serveur postgreSQL en version 15 et je souhaite faire de l'authentification ldap.
------
Côté config pour se connecter au serveur active directory tout est ok car :
Dans mon fichier pg_hba.conf lorsque je fais un ldap "search + bind" sur une OU tout fonctionne très bien. Voici la ligne qui fonctionne :

host all all 0.0.0.0/0 ldap ldapserver=monserveur.exemple.com ldapbasedn="OU=Informatique,OU=Services XXX,DC=exemple,DC=com" ldapbinddn="CN=bindpg,OU=postgreSQL,OU=Acces_Serveurs,DC=exemple,DC=com" ldapbindpasswd="secret" ldapsearchattribute=sAMAccountName
------
Mon soucis c'est que je souhaiterais faire un "search" sur 2 OU qui sont toutes les 2 à la racine de mon domaine.
J'ai compris qu'il n'est pas possible de faire plusieurs lignes comme celle ci-dessus (en spécifiant une OU différente dans chaque ligne) car à partir du moment où je ne rentre pas dans la 1ere ligne, la ligne du dessous ne sera pas lue).

>>>> Pour contourner ce souci, j'ai trouvé (en fouillant doc et forum) qu'il est nécessaire de faire une seule et même ligne avec laquelle je dois pouvoir scruter 2 OU en utilisant l'option "ldapsearchfilter" de la manière suivante :
host all all 0.0.0.0/0 ldap ldapserver=monserveur.exemple.com ldapbasedn="DC=exemple,DC=com" ldapbinddn="CN=bindpg,OU=postgreSQL,OU=Acces_Serveurs,DC=exemple,DC=com" ldapbindpasswd="secret" ldapsearchfilter="(&(sAMAccountName)(|(OU=Informatique,OU=Services XXX,DC=exemple,DC=com)(OU=autre,OU=ServiceYYY,DC=exemple,DC=com)))"

Lors du redémarrage du moteur, la ligne est bien prise en compte puisque le moteur démarre (si elle est incorrecte j'ai noté que le moteur ne démarre pas), mais l'authentification ldap ne fonctionne plus du tout, même sur l'OU unique du départ qui fonctionne lorsque c'est la seule à être scrutée.
En consultant la vue  pg_hba_file_rules, aucune erreur n'est signalée

Côté syntaxe je ne vois pas ce qui peut clocher.
------
Quelqu'un saurait-il me dire où est l'erreur ou le cas échéant quelle serait la méthode adéquate pour que mes users de l'OU n°1 ET ceux de l'OU n°2 puissent se connecter. Je reprécise qu'elle sont dans l'arborescence de mon AD toutes les 2 au même niveau (qui plus est à la racine de mon domaine exemple.com).

Je précise que mes users AD sont créés sur le serveur avec le droit de login et que j'utilise ldap2pg pour les importer, de ce côté-ci c'est très efficace et fonctionne impeccablement bien wink
------
D'avance merci pour votre aide.
Bonne journée à tous

Hors ligne

#2 06/08/2024 14:49:04

rjuju
Administrateur

Re : Authentification ldap avec plusieurs OU à la racine d'un domaine

Vous devriez essayer ldapsearch pour valider votre syntaxe.  Postgres ne detectera pas d'erreur car il se contente de valider que chaque argument est bien une chaine de caractere, mais il n'a aucune idee de leurs significations.



Au passage, pourquoi utiliser ldap (qui entre autre necessite d'envoyer le mot de passe en clair sur le reseau), plutot que GSSAPI?

Hors ligne

#3 06/08/2024 15:12:18

groju
Membre

Re : Authentification ldap avec plusieurs OU à la racine d'un domaine

Merci pour votre retour, j'avoue que je n'avais pas l'info que le mot de passe passait en clair sur le réseau... je vais étudier la methode GSSAPI.
En attendant voici le retour de la commande ldapsearch :
# extended LDIF
#
# LDAPv3
# base <DC=exemple,DC=com> with scope subtree
# filter: (&(sAMAccountName=*)(|(OU=XXX,OU=Services,DC=exemple,DC=com)(OU=YYY,OU=Acces_Serveurs,DC=exemple,DC=com)))
# requesting: ALL
#

# search reference
ref: ldap://DomainDnsZones.exemple.com/DC=DomainDnsZones,DC=exemple,DC=com

# search result
search: 2
result: 0 Success

Tout semble correct ?!

Hors ligne

Pied de page des forums