Configuration LDAp Dolibarr avec LDAP Synology

Je relance un peu le post.

J’aurais bien besoin d’un coup de main pour configurer l’auth via ldap.
J’ai essayé un peu tout les possibilités imaginable dans le conf.php mais en vain.
Je pense que j’éditerais clairement le wiki apres avoir fait fonctionner l’auth car celle ci est inexistante et je ne comprend pas que une fonctionnalité aussi essentielle pour de la production ne soit pas plus documentée.

brandybrice si tu as un peu de temps cela serait parfait.

Bonjour,

Commencez déjà par regarder les log dans syslog du NAS il y a forcement une erreur

Regarder les log a été une des premières choses que j’ai faites.
Et cela ne résoud pas le manque de doc.
De plus j’ai l’impression que dolibarr ne fonctionne qu’avec un certain type de schéma ? (gosa)

Perso je ne vois pas le problème de manque de doc.

On active le module on renseigne les champs (ip, port, dn, tls…) si l’on souhaite écrire on rajoute le compte admin.
https://wiki.dolibarr.org/index.php/Module_LDAP

Si souci dans un premier temps on regarde les log genre de message d’erreur

2018-10-01 10:52:51,460 INFO – user.auth: username=dada authenticated=false message=Invalid username

ou

2018-10-01 10:52:51,460 INFO – user.auth: username=dada authenticated=false message=Invalid password

Il dise quoi les log ?

Tout cela est fait, le test me récupére bien le bon nombre d’utilisateurs.
Impossible de se connecter malgré tout.

J’ai en plus de cela renseigné les champs qui vont bien dans le fichier conf.php. (cette partie n’est dans aucune doc a priori)

Le fichier d’erreur est vide (celui dans documents) le syslog n’est pas plus bavard en tout cas pas pour ça (mdb_equality_candidates: (gosaGroupObjects))

apparament de dn ne serait pas bon pour admin. (/var/log/debug)

Mais cela ne devrait pas trop jouer pour la connexion a un utilisateur existant qui plus est pouvant se connecter sur d’autre service utilisant le ldap.

J’admet tout a fait ne pas etre un expert en ldap par contre.

Je ne suis pas un expert non plus.

J’ai vite fait un test sur un LDAP,
Install d’un LDAP sur une debian

apt-get install ldap-server ldap-client

on modifie /etc/ldap/ldap.conf pour ajouter BASE,URI

dpkg-reconfigure slapd
/etc/init.d/slapd restart

La partie Dolibarr dans le module LDAP
configuration des paramètres globaux
On rajoute le serveur primaire, DN du serveur, (si besoin d’écrire DN de l’administrateur, Mot de passe de l’administrateur)
Synchronisation des utilisateurs et groupes LDAP vers Dolibarr

Dans l’onglet (utilisateurs)
On rajoute le dn des utilisateurs, la liste des objectClass, puis on fait le mapping Dolibbar -> Ldap

Pas de fichier de conf.php a faire ?

Bonjour

Désolé, j’était en congé

Pour l’installation du LDAP sur un synogoly c’est très simple : il y a une application qui s’appelle Active Directory et qui permet de ocnfigurer un LDAP avec une interface graphique. C’est très simple et intuitife.

Pour ce qui est de la configuration de Dolibarr pour se connecter au ldap, il est nécessaire d’activer le ldap dans les module, et de modifier le fichier conf.php
Autre chose qui ma bloqué et qui n’est pas anodin je pense : De tête, j’ai configuré mon ldap sur un port 636 via le certificat SSL pourdes échanges sécurisé et désactivé la connexion anonyme sur le ldap donc accès par root. La chose qui 'avais bloqué, c’est que le certificat lets encrypt était configuré comme le plus sécurisé et quand dolibarr essayé de se connecter au ldap, il refusé la connexion. J’ai mis ensuite le certificat sur intermédiaire et là, tout est passé correctement et celà fonctionne. Je vous avouerais que je n’ai pas vraiment d’explication.

Concernant le conf de tête c’est un truc comme ça : pour le php.conf, je pourrais vous en dire plus lundi
module: « ldap_auth_provider.LdapAuthProvider »
config:
enabled: true
uri: « ldaps://site.com:636 »
start_tls: false
base: « dc=mon,dc=domaine,dc=com »
attributes:
uid: « uid »
mail: « email »
name: « givenName »
bind_dn: « uid=root,cn=users,dc=domain,dc=com »
bind_password: « mot de passe »
#filter: « (objectClass=posixAccount) »

Ci joint les infos pour le ldap contenu dans le fichier conf.php.example a adapter selon sa configuration

Parameters used to setup LDAP authentication.
// Uncomment them if dolibarr_main_authentication = ‹ ldap ›
//
// $dolibarr_main_auth_ldap_host=‹ 127.0.0.1 ›; // You can define several servers here separated with a comma.
// $dolibarr_main_auth_ldap_port=‹ 389 ›; // Port
// $dolibarr_main_auth_ldap_version=‹ 3 ›;
// $dolibarr_main_auth_ldap_servertype=‹ openldap ›; // openldap, activedirectory or egroupware
// $dolibarr_main_auth_ldap_login_attribute=‹ loginfield ›; // Ex: uid or samaccountname for active directory
// $dolibarr_main_auth_ldap_dn=‹ ou=users,dc=my-domain,dc=com ›; // Ex: ou=users,dc=my-domain,dc=com
// $dolibarr_main_auth_ldap_filter = ‹  ›; // If defined, two previous parameters are not used to find a user into LDAP. Ex: (uid=%1%) or &(uid=%1%)(isMemberOf=cn=Sales,ou=Groups,dc=opencsi,dc=com).
// $dolibarr_main_auth_ldap_admin_login=’’; // Required only if anonymous bind disabled. Ex: cn=admin,dc=example,dc=com
// $dolibarr_main_auth_ldap_admin_pass=’’; // Required only if anonymous bind disabled. Ex: secret
// $dolibarr_main_auth_ldap_debug=‹ false ›;

J’ai déjà configuré ce fichier. Mais cela ne fonctionne pas.

Je me suis servi des mêmes information que pour le module en vain.

Impossible de trouver l’utilisateur monusername dans la base Dolibarr.

Alors que les tests via le panel admin du module fonctionnent.

J’avoue être un peu perdu, surtout que la connexion de mes autres services via le ldap fonctionnent.

Je serait curieux que quelqu’un refasse le test d’installer et de configurer.

Mon architecture étant pas sur un syno il vaux peut être mieux que je réouvre un post.

OK j’allais justement poser la question afin de savoir si tu étais sur un synology

Dans ce cas là, j’ai une question. Est ce que le test de la recherche LDAP fonctionne dans le module LDAP de Dolibarr -> Onglet utilisateur -> en bas de page.SI le test fonctionne tu as un retour du nombre d’entrée dans ta base.

Est ce que tu as bien sélectionné la bonne clé dans le ldap? Type : uid, giveName ou cn
Typiquement pour moi, le cn ne fonctionné pas, j’ai du passer par le uid.

Si cela peut aider quelqu’un, voici ci joint les informations nécessaire dans le fichier conf de Dolibarr pour se connecter via le LDAP

$dolibarr_main_auth_ldap_host=‹ ldaps://mon.domaine.com ›; // You can define several servers here separated with a comma.
$dolibarr_main_auth_ldap_port=‹ 636 ›; // Port
$dolibarr_main_auth_ldap_version=‹ 3 ›;
$dolibarr_main_auth_ldap_servertype=‹ openldap ›; // openldap, activedirectory or egroupware
$dolibarr_main_auth_ldap_login_attribute=‹ uid ›; // Ex: uid or samaccountname for active directory
$dolibarr_main_auth_ldap_dn=‹ dc=mon,dc=domaine,dc=com ›; // Ex: ou=users,dc=my-domain,dc=com
// $dolibarr_main_auth_ldap_filter = ‹  ›; // If defined, two previous parameters are not used to find a user into LDAP. Ex: (uid=%1%) or &(uid=%1%)(isMemberOf=cn=Sales,ou=Groups,dc=opencsi,dc=com).
$dolibarr_main_auth_ldap_admin_login=‹ uid=root,cn=users,dc=mon,dc=domaine,dc=com ›; // Required only if anonymous bind disabled. Ex: cn=admin,dc=example,dc=com
$dolibarr_main_auth_ldap_admin_pass=‹ motdepasse ›; // Required only if anonymous bind disabled. Ex: secret
$dolibarr_main_auth_ldap_debug=‹ false ›;

$dolibarr_main_authentication=‹ ldap,dolibarr ›;

// Parameters used to setup LDAP authentication.
// Uncomment them if dolibarr_main_authentication = ‹ ldap ›
//
$dolibarr_main_auth_ldap_host=‹ 127.0.0.1 ›;
$dolibarr_main_auth_ldap_port=‹ 389 ›;
$dolibarr_main_auth_ldap_version=‹ 3 ›;
$dolibarr_main_auth_ldap_servertype=‹ openldap ›;
$dolibarr_main_auth_ldap_login_attribute=‹ uid ›;
$dolibarr_main_auth_ldap_dn=‹ ou=people,dc=domain,dc=name ›;
//$dolibarr_main_auth_ldap_filter = ‹  ›;
$dolibarr_main_auth_ldap_admin_login=‹ cn=admin,dc=domain,dc=name ›;
$dolibarr_main_auth_ldap_admin_pass=’-+/myfun´kypwD’; // mon vrai password contient rééllement des + / et ´ mais aucun souci coté modules
$dolibarr_main_auth_ldap_debug=‹ true ›;

C’est en gros a quoi ressemble mon fichiers de conf.

Oui la recherche d’utilisateur fonctionne depuis le module ldap. voici en gros la configuration.

Dn complet : ou=people,dc=domain,dc=name
Liste des objectClass : inetOrgPerson

Pour les détails de mon installation les voici :
- devuan stable
- php avec module itk
- base postgresql
- ldap avec une installation a base de fusiondirectory

Le message que j’obtiens est toujours «Impossible de trouver l’utilisateur monutilisateur dans la base Dolibarr.»

Ça a l’air correcte après je suis loin d’être un expert…
Est ce que c’est normal que dolibarr_main_auth_ldap_login_attribute soit le « uid » et que dans le dolibarr_main_auth_ldap_admin_login, il n’y ai pas de « uid » mais le « cn »?

Alors j’ai try de changer (mais tout mes autres services fonctionnent comme ça) avec le cn j’ai :
ErrorBadLoginPassword

alors que avec uid j’ai :
Impossible de trouver l’utilisateur monusername dans la base Dolibarr.

La différence s’explique aussi (sauf erreur de ma part) par le fait que l’admin est créé au dpkg-reconfigure slapd alors que les utilisateurs sont créés via fusiondirectory.

Le log n’apparait pas en haut a gauche et j’ai une erreur dans le log par contre :

2018-12-04 18:12:06 INFO 62.147.242.8 checkLoginPassEntity usertotest=MonUser entitytotest=1 authmode=ldap
2018-12-04 18:12:06 INFO 62.147.242.8 functions_ldap::check_user_password_ldap usertotest=MonUser passwordtotest=** entitytotest=1
2018-12-04 18:12:06 INFO 62.147.242.8 functions_ldap::check_user_password_ldap Server:127.0.0.1, Port:389, Protocol:3, Type:openldap
2018-12-04 18:12:06 INFO 62.147.242.8 functions_ldap::check_user_password_ldap uid/samacountname=uid, dn=ou=people,dc=Mon-Domaine,dc=com, Admin:cn=admin,dc=Mon-Domaine,dc=com, Pass:MonMotDePasse
2018-12-04 18:12:07 DEBUG 62.147.242.8 Ldap::connect_bind try bindauth on 127.0.0.1 user=cn=admin,dc=Mon-Domaine,dc=com password=********************
2018-12-04 18:12:07 DEBUG 62.147.242.8 Ldap::connect_bind return=2
2018-12-04 18:12:07 INFO 62.147.242.8 Ldap::fetch search with searchDN=ou=people,dc=Mon-Domaine,dc=com filter=(uid=MonUser)
2018-12-04 18:12:07 INFO 62.147.242.8 Ldap::fetch search found 1 records
2018-12-04 18:12:07 DEBUG 62.147.242.8 Ldap::connect_bind try bindauth on 127.0.0.1 user=uid=MonUser,ou=people,dc=Mon-Domaine,dc=com password=

2018-12-04 18:12:07 DEBUG 62.147.242.8 Ldap::connect_bind return=2
2018-12-04 18:12:07 INFO 62.147.242.8 functions_ldap::check_user_password_ldap Authentification ok
2018-12-04 18:12:07 INFO 62.147.242.8 functions_ldap::check_user_password_ldap Sync ldap2dolibarr
2018-12-04 18:12:07 INFO 62.147.242.8 Ldap::fetch search with searchDN=ou=people,dc=Mon-Domaine,dc=com filter=(uid=MonUser)
2018-12-04 18:12:07 INFO 62.147.242.8 Ldap::fetch search found 1 records
2018-12-04 18:12:07 DEBUG 62.147.242.8 sql=SELECT u.rowid, u.lastname, u.firstname, u.employee, u.gender, u.birth, u.email, u.job, u.skype,
u.signature, u.office_phone, u.office_fax, u.user_mobile, u.address, u.zip, u.town, u.fk_state as state_id, u.fk_country as country_id, u.admin,
u.login, u.note, u.pass, u.pass_crypted, u.pass_temp, u.api_key, u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid, u.statut, u.lang,
u.entity, u.datec as datec, u.tms as datem, u.datelastlogin as datel, u.datepreviouslogin as datep, u.photo as photo, u.openid as openid, u.accountancy_code,
u.thm, u.tjm, u.salary, u.salaryextra, u.weeklyhours, u.color, u.dateemployment, u.ref_int, u.ref_ext, u.default_range, u.default_c_exp_tax_cat,
c.code as country_code, c.label as country, d.code_departement as state_code, d.nom as state
FROM llx_user as u
LEFT JOIN llx_c_country as c ON u.fk_country = c.rowid
LEFT JOIN llx_c_departements as d ON u.fk_state = d.rowid
WHERE u.entity IS NOT NULL
AND (u.ldap_sid = ‹ 0-0 › OR u.login = ‹ MonUser ›) LIMIT 1 ORDER BY u.entity ASC
2018-12-04 18:12:07 ERR 62.147.242.8 DoliDBPgsql::query SQL Error message: ERREUR: 42601: erreur de syntaxe sur ou près de « ORDER »
LINE 1: …ldap_sid = ‹ 0-0 › OR u.login = ‹ MonUser ›) LIMIT 1 ORDER BY u…

LOCATION: scanner_yyerror, scan.l:1087 (DB_ERROR_SYNTAX)
2018-12-04 18:12:07 ERR 62.147.242.8 DoliDBPgsql::query SQL Error usesavepoint = 0
2018-12-04 18:12:07 DEBUG 62.147.242.8 sql=SELECT u.rowid, u.lastname, u.firstname, u.employee, u.gender, u.birth, u.email, u.job, u.skype,
u.signature, u.office_phone, u.office_fax, u.user_mobile, u.address, u.zip, u.town, u.fk_state as state_id,
u.fk_country as country_id, u.admin, u.login, u.note, u.pass, u.pass_crypted, u.pass_temp, u.api_key, u.fk_soc,
u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid, u.statut, u.lang, u.entity, u.datec as datec, u.tms as datem,
u.datelastlogin as datel, u.datepreviouslogin as datep, u.photo as photo, u.openid as openid,
u.accountancy_code, u.thm, u.tjm, u.salary, u.salaryextra, u.weeklyhours, u.color, u.dateemployment,
u.ref_int, u.ref_ext, u.default_range, u.default_c_exp_tax_cat, c.code as country_code,
c.label as country, d.code_departement as state_code, d.nom as state
FROM llx_user as u LEFT JOIN llx_c_country as c ON u.fk_country = c.rowid
LEFT JOIN llx_c_departements as d ON u.fk_state = d.rowid WHERE u.entity IN (0, 1)
AND u.login = ‹ MonUser ›
ORDER BY u.entity ASC
2018-12-04 18:12:07 DEBUG 62.147.242.8 User::fetch user not found
2018-12-04 18:12:07 INFO 62.147.242.8 User not found, connexion refused
2018-12-04 18:12:07 DEBUG 62.147.242.8 sql=SELECT transkey, transvalue FROM llx_overwrite_trans where lang=‹ fr_FR ›
2018-12-04 18:12:07 INFO 62.147.242.8 — End access to /index.php
2018-12-04 18:12:07 INFO 62.147.242.8 — Access to /index.php showing the login form and exit
2018-12-04 18:12:07 DEBUG 62.147.242.8 sql=SELECT transkey, transvalue FROM llx_overwrite_trans where lang=‹ fr_FR ›
2018-12-04 18:12:07 INFO 62.147.242.8 — End access to /index.php
2018-12-04 18:12:08 INFO 62.147.242.8 — Access to /theme/eldy/style.css.php - action=, massaction=
2018-12-04 18:12:08 DEBUG 62.147.242.8 sql=SELECT transkey, transvalue FROM llx_overwrite_trans where lang=‹ fr_FR ›
2018-12-04 18:12:08 DEBUG 62.147.242.8 Menubase::menuLoad mymainmenu= myleftmenu= type_user=0 menu_handler=eldy tabMenu size=0
2018-12-04 18:12:08 DEBUG 62.147.242.8 sql=SELECT m.rowid, m.type, m.module, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu, m.url,
m.titre, m.langs, m.perms, m.enabled, m.target, m.mainmenu, m.leftmenu, m.position
FROM llx_menu as m WHERE m.entity IN (0,1) AND m.menu_handler IN (‹ eldy ›,‹ all ›) AND m.usertype IN (0,2) ORDER BY m.position, m.rowid
2018-12-04 18:12:08 INFO 62.147.242.8 — End access to /theme/eldy/style.css.php
2018-12-04 18:12:08 INFO 62.147.242.8 — Access to /core/js/lib_head.js.php - action=, massaction=
2018-12-04 18:12:08 DEBUG 62.147.242.8 sql=SELECT transkey, transvalue FROM llx_overwrite_trans where lang=‹ fr_FR ›
2018-12-04 18:12:08 INFO 62.147.242.8 — End access to /core/js/lib_head.js.php

Du coup je pense qu’il y a un bug.
Je vais faire un pointeur vers ici depuis le forum de bug.

Effectivement avec le uid, il arrive à se connecter. Quelques erreurs sql après dans le log (je ne sais pas si ça impacte la connexion). S’il ne trouve pas c’est peut être un problème filtre mais vue que tu m’as dit que çà fonctionné via la recherche dans Dolibarr, je ne sais pas.

Désolé de ne pas pouvoir t’aider plus que ça. Je suis vraiment pas très bon en ldap.

Salut à tou.te.s,
Après avoir bien galéré pour configuré le LDAP, voici ce que je viens de découvrir :

1- une fois le module configuré comme indiqué ci-dessus, l’import des utilisateurs de LDAP vers dolibarr se fait par la commande suivante :

sudo -u apache php /chemin/vers/dolibarr/scripts/user/sync_users_ldap2dolibarr.php commitiferror --server=localhost

2- pour être à même de s’authentifier grâce au mot de passe de LDAP, c’est dans le fichier conf.php que cela se passe /chemin/vers/dolibarr/htdocs/conf/conf.php. Voir dans le fichier example

$dolibarr_main_authentication='dolibarr,ldap'; $dolibarr_main_auth_ldap_host='127.0.0.1'; // You can define several servers here separated with a comma. $dolibarr_main_auth_ldap_port='389'; // Port $dolibarr_main_auth_ldap_version='3'; $dolibarr_main_auth_ldap_servertype='openldap'; // openldap, activedirectory or egroupware $dolibarr_main_auth_ldap_login_attribute='uid'; // Ex: uid or samaccountname for active directory $dolibarr_main_auth_ldap_dn='ou=users,dc=my-domain,dc=com'; // Ex: ou=users,dc=my-domain,dc=com $dolibarr_main_auth_ldap_filter = ''; // If defined, two previous parameters are not used to find a user into LDAP. Ex: (uid=%1%) or &(uid=%1%)(isMemberOf=cn=Sales,ou=Groups,dc=opencsi,dc=com). //$dolibarr_main_auth_ldap_admin_login=''; // Required only if anonymous bind disabled. Ex: cn=admin,dc=example,dc=com //$dolibarr_main_auth_ldap_admin_pass=''; // Required only if anonymous bind disabled. Ex: secret //$dolibarr_main_auth_ldap_debug='false';

Bonjour,
Je travaille actuellement sur Dolibarr en local sur ma machine avec un seveur LDAP qui est sur le Synology et j’ai besoin a chaque fois que je créer contact sur Dolibarr, qu’il se crée automatiquement sur mon annuaire LDAP.

J’ai tous configuré sur Dolibarr, le test de connexion au serveur est OK, le test de synchronisation de contact est OK aussi.

quand je crée vraiment mon contact, il se crée bien dans Dolibarr avec ça « fiche LDAP », je force donc la Synchronisation de Dolibarr vers LDAP.

Je vais donc regarder sur le NAS et aucun rien ne s’ajoute… et aucune erreur ne s’affiche donc si quelqu’un pouvais m’aider?

Je pense que cela peut venir de mon mapping LDAP sur le NAS mais je ne suis pas sur du tout.

Merci d’avance
Bastien

Je n’arrive pas non plus a le configurer correctement.

Je trouve pas de doc sur le mapping du synology

Bonjour,
Avez-vous avancé sur le sujet?
J’ai le même problème.
J’ai remarque qu’en activant le userPassword (crypté ou pas) cela génère une erreur 19.
Cordialement.

Bon si cela peut servir à quelqu’un:

https://www.synology.com/fr-fr/knowledgebase/DSM/help/DSM/AdminCenter/file_directory_service_ldap
et aussi

Et cela fonctionne !

1 « J'aime »