Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Mon 15 July 2024 17:00

lberon
Juste Inscrit !
Date d'inscription: 15 Jul 2024
Messages: 2

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@texte-a-enlever.dcnt1.org (mot de passe : mdpread) qui est notre compte user pour lire l'AD ?
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: 1142

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: 2

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 Hier 08:48

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1142

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 (Hier 11:44)

Hors ligne

 

Pied de page des forums

Powered by FluxBB