Module LDAP : LDAP vers Dolibarr

Bon, je viens de tout configurer… Et effectivement il faut renseigner des éléments supplémentaires dans Conf.ini pour faire de l’authentification LDAP depuis Dolibarr. (bien documenté par @rigaudie)
Pour ma part, je n’ai pas le problème de l’authentification par mot de passe vide. Il oblige le bon mot de passe AD.

Astuce : afin de garder l’authentification des comptes internes, il faut mettre :
$dolibarr_main_authentication= ‹ ldap,dolibarr ›;

Par contre, dès que je renseigne un filtre dans $dolibarr_main_auth_ldap_filter, l’authentification ne se fait plus :dry:

1 « J'aime »

Aie, pas le droit aux liens sur Discourse pour mes premiers posts…

Je vais faire court du coup: sur le ticket github 13314 (très utile pour pouvoir paramétrer en LDAPS) j’ai ajouté une note sur le filtre, qui doit être entre parenthèses () pour un filtre non-trivial du type :
'(&(objectClass=inetOrgPerson)(memberOf=cn=dolibarr_users,ou=groups,dc=example,dc=com))'
Je suis resté bloqué un moment là-dessus…

2 « J'aime »

C’est bon, tu as le droit maintenant!

1 « J'aime »

J’ai crié victoire trop vite : j’ai l’impression que le code n’a pas été pensé pour des filtres du type memberOf. Si comme moi vous avez paramétré dolibarr_main_auth_ldap_dn sur votre ou d’utilisateurs, alors vous pouvez commenter le code suivant dans ./htdocs/core/login/functions_ldap.php pour régler le problème (je n’arrivais qu’à me connecter avec le premier résultat de mon filtre avant, en fait):

@@ -141 +142 @@                                                                                                                                                                                                                                                                   
-               if ($resultFetchLdapUser && !empty($ldap->ldapUserDN)) $ldap->searchUser = $ldap->ldapUserDN;                                                                                                                                                                     
+               #if ($resultFetchLdapUser && !empty($ldap->ldapUserDN)) $ldap->searchUser = $ldap->ldapUserDN; 

Ce code réinitialise l’utilisateur recherché si ldapUserDN est défini (ce qui est fait dans ./htdocs/core/class/ldap.class.php). Une fois cette ligne supprimée, c’est OK cette fois.