#1 Mon 15 July 2024 17:00
- lberon
- Juste Inscrit !
- Date d'inscription: 15 Jul 2024
- Messages: 3
Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
Je tente de brancher les connexions de nos utilisateurs de BDD à notre LDAP pour des raisons de sécurité.
Je n'arrive en revanche pas à paramétrer correctement et j'ai une impossibilité pour m'authentifier :
FATAL: authentification LDAP échouée pour l'utilisateur « u.user » FATAL: authentification LDAP échouée pour l'utilisateur « u.ser »
J'ai les éléments suivants pour notre LDAP (infos fictives) :
- nom : ldap.dcnt1.org
- port : 400
- DC = dcnt1, org
J'ai donc paramétré l'authentification par la configuration suivante :
host all all IP/24 ldap ldapserver=ldap.dcnt1.org ldapport=400 ldapprefix="" ldapsuffix=", dc=dcnt1, dc=org"
Je n'arrive pas à cerner la différence entre une connexion search et search+bind.
J'en comprends que le search + bind utilise une pré-authentification et va rechercher si le u.user qui essaie de se connecter existe dans le LDAP.
Le search classique utilise le u.user directement.
Une personne de la communauté pourrait-elle m'aiguiller ?
Dois-je renseigner des OU ?
Dois-je utiliser le compte READ@ (mot de passe : mdpread) qui est notre compte user pour lire l'AD ? dcnt1.org
Dois-je renseigner d'autres options ?
J'ai tenté de nombreuses configurations, sans succès.
A chaque fois le message d'erreur d'authentification apparaît.
Mon u.user a eu un simple GRANT TO CONNECT ON MA_BASE TO "u.user";
En vous remerciant, Léandre BERON
Hors ligne
#2 Tue 16 July 2024 07:30
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1143
Re: Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
dans le cas d'un bind simple, postgresql va tenter une connexion (ou un bind en jargon ldap) en utilisant le DN que vous lui avez spécifié, qui est le "chemin d'accès" d'un object ldap. Donc oui, il faut spécifier le chemin complet vers l'OU ou réside les utilisateurs qui vont se connecter à votre serveur.
Search+bind est utilisé quand par exemple vos utilisateurs se trouvent dans sur plusieurs OU. Dans ce cas la vous spécifiez un utilisateur bien défini, dont le DN ne changera pas (donc il faut également spécifier le DN), avec lequel postgresql va bind pour rechercher dans l'annuaire l'utilisateur qui tente de se connecter en faisant correspondre un attribut au nom d'utillisateur (par défaut uid, on lui préfère souvent sAMAccountName qui possède normalement la même valeur mais qui ne peut pas être vide). Si une correspondance est trouvée postgresql refait un bind avec l'utilisateur trouvé.
A noter que si votre serveur ldap le permet, la phase search peut se faire de manière anonyme, c'est à dire sans avoir a spécifier d'utilisateur (déconseillé pour des raisons de sécurité).
Sinon je pense que vous avez oublié de spécifier le prefixe dans votre hba :
Code:
ldapprefix="CN="
Dans la methode bind simple, le DN est constitué par la concaténation de chaine suivante :
Code:
ldapprefix || nom_dutilisateur || ldapsuffix
Dernière modification par tumasgiu (Tue 16 July 2024 07:33)
Hors ligne
#3 Thu 18 July 2024 15:37
- lberon
- Juste Inscrit !
- Date d'inscription: 15 Jul 2024
- Messages: 3
Re: Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
Merci pour ces explications.
Si je comprends bien, ayant des OU différentes, je dois donc modifier la configuration comme suit :
ldap ldapserver=ldap.dcnt1.org ldapport=400 ldapbasedn="dc=dcnt1,dc=org" ldapsearchfilter="(|(ou=MONOU1)(ou=MONOU2))" ldapprefix="cn=" ldapsuffix=",dc=dcnt1,dc=org"
Cela ne me met maintenant plus l'erreur d'authentification mais maintenant une erreur type :
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "dev-grande" (10.03.9.229) and accepting TCP/IP connections on port 5432?
Il changerait d'IP pour se connecter avec le LDAP par conséquent ?
J'ai ouvert cet IP dans le pg_hba.conf en trust, cela ne change rien une fois restart. J'ai aussi tenté en md5, et avec la même configuration LDAP que précédement cité.
Je n'ai pas spécifié d'utilisateur bien défini avec lequel postgresql va bind pour rechercher l'utilisateur dans l'annuaire.
En spécifiant le ldapbinddn et ldapbindpasswd j'obtiens :
ldap ldapserver=ldap.dcnt1.org ldapport=400 ldapbasedn="dc=dcnt1,dc=org" ldapsearchfilter="(|(ou=MONOU1)(ou=MONOU2))" ldapprefix="cn=" ldapsuffix=",dc=dcnt1,dc=org" ldapbinddn="cn=admin,dc=dcnt1,dc=org" ldapbindpasswd="adminmdp"
Après restart j'ai exactement la même erreur que précédement sur cette nouvelle IP.
Cordialement,
Léandre BERON
Hors ligne
#4 Mon 22 July 2024 08:48
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1143
Re: Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
votre serveur refuse sans doute de démarrer, très certainement à cause de la ligne que vous avez rajoutée dans le hba qui doit être incorrecte.
Il faudrait que vous regardiez les logs pour savoir exactement ce qui ne va pas.
Je ne sais pas si c'est cette erreur qui empêche postgres de démarrer, mais votre paramètre ldapsearchfilter est incorrecte. Ce paramètre est le filtre qui est utilisé pour tester si un utilisateur précis existe dans l'annuaire.
Pour ce faire il faut construire la requête à l'aide de la variable $username, qui contient le nom d'utilisateur utilisé pour se connecter au serveur postgres. La requête va s'executer sur tous les éléments du sous arbre de l'annuaire désigné par le paramètre ldapbasedn. Il faut donc que vos utilisateurs soient situés dans ce sous arbre (dans votre cas, cela a l'air bon car vous désignez l'intégralité de votre annuaire).
L'attribut testé par la requête doit donc contenir le nom d'utilisateur postgres. Dans un active directory, on utilise généralement :
Code:
ldapsearchfilter="sAMAccountName=$username"
ou
Code:
ldapsearchattribute=sAMAccountName
La documentation en français : https://docs.postgresql.fr/current/auth-ldap.html
Dernière modification par tumasgiu (Mon 22 July 2024 11:44)
Hors ligne
#5 Mon 29 July 2024 04:02
- financecajole
- Juste Inscrit !
- Date d'inscription: 28 Jul 2024
- Messages: 1
Re: Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
votre serveur refuse sans doute de démarrer, très certainement à cause de la ligne que vous avez rajoutée dans le hba qui doit être incorrecte.
Il faudrait que vous regardiez les logs pour savoir exactement ce qui ne va pas.
Je ne sais pas si c'est cette erreur qui empêche postgres de démarrer, mais votre paramètre ldapsearchfilter est incorrecte. Ce paramètre est le filtre qui est utilisé pour tester si un utilisateur précis existe dans l'annuaire.
Pour ce faire il faut construire la requête à l'aide de la variable $username, qui contient le nom d'utilisateur utilisé pour se connecter au serveur postgres. La requête va s'executer sur tous les éléments du sous arbre de l'annuaire désigné par le paramètre ldapbasedn. Il faut donc que vos utilisateurs soient situés dans ce sous arbre (dans votre cas, cela a l'air bon car vous désignez l'intégralité de votre annuaire).
L'attribut testé par la requête doit donc contenir le nom d'utilisateur postgres. Dans un active directory, on utilise généralement :Code:
ldapsearchfilter="sAMAccountName=$username"ou
Code:
ldapsearchattribute=sAMAccountNameLa documentation en français : https://docs.postgresql.fr/current/auth-ldap.html geometry dash world
Merci beaucoup, j'ai essayé et ça a fonctionné.
Dernière modification par financecajole (Mon 29 July 2024 08:54)
Hors ligne
#6 Mon 26 August 2024 14:44
- lberon
- Juste Inscrit !
- Date d'inscription: 15 Jul 2024
- Messages: 3
Re: Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
Merci pour ces différents retour.
Mon erreur était due à un compte pour remonter les informations de supervision à un autre serveur.
Après l'avoir ajouté en méthode trust pour uniquement ce compte, je n'ai plus le problème.
En paramétrant ma ligne ainsi :
ldap ldapserver=ldap.dcnt1.org ldapport=XXXX ldapbasedn="dc=dcnt1,dc=org" ldapbinddn="READ@" ldapbindpasswd="PASSWORD" ldapsearchattribute=sAMAccountName dcnt1.org
J'ai un échec d'authentification.
Les logs m'indiquent que l'authentification par mot de passe a échouée pour l'utilisateur USER.
L'utilisateur "USER" n'a pas de mot de passe affecté.
Pourtant, quand j'utilise un ldapsearch en ligne de commande, mon USER remonte bien de mon LDAP :
ldapsearch -x -H ldap://ldap.dcnt1.org -D "READ@" -w 'PASSWORD' -b "dc=dcnt1,dc=org" "(sAMAccountName=USER)" dcnt1.org
Cordialement,
Léandre BERON
Hors ligne
#7 Mon 26 August 2024 15:29
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1143
Re: Configuration du pg_hba.conf pour branchement LDAP
Bonjour,
dans votre hba, est ce qu'il existe un enregistrement avant votre enregistrement ldap dont les 5 premiers champs seraient identiques ? (même type de connexion, même base de donnée, même plage d'adresse ip, même utilisateur)
par exemple :
Code:
host ma_bdd 192.168.1.0/24 USER md5 #plein d'autre enregistrements #plein d'autre enregistrements host ma_bdd 192.168.1.0/24 USER ldap ldapserver=ldap.dcnt1.org ldapport=XXXX ldapbasedn="dc=dcnt1,dc=org" ldapbinddn="READ@dcnt1.org" ldapbindpasswd="PASSWORD" ldapsearchattribute=sAMAccountName
Si c'est le cas, c'est obligatoirement le premier enregistrement de la liste qui corresponds à ces champs qui est utilisée pour authentifier la connexion. Si l'authentificaiton échoue, la connexion est annulée, postgresql ne cherche pas à savoir s'il existe une autre méthode permettant de valider l'authentification plus bas dans le hba.
Cela a l'air de correspondre à votre problème.
Hors ligne