Module LDAP : LDAP vers Dolibarr

Bonjour,

Voila deux jours que je me casse les dents sur cette config…
En essayant de synchroniser mon LDAP (issue d’un AD serveur 2003) avec Dolibarr.

Objectif : Se connecter sur Dolibarr avec les identifiants de sessions de l’AD.

Les paramètres globaux semblent bien renseignés et le test de connexion LDAP est OK.

Connexion TCP au serveur LDAP réussie (Serveur=192.168.90.11, Port=389) Connection/Authentification au serveur LDAP réussie (Serveur=192.168.90.11, Port=389, [email protected], Password=******) Serveur LDAP configuré en version 3

Maintenant, comment config les onglets Utilisateurs et Groupes ?

Voici les informations que j’ai fournit :

1.png

2.png

Voila le résultat :

3.png

A l’aiiide s’il vous plait ^^

Pièces jointes :

Toujours bloqué :’(

J’ai avancé dans le sujet…
J’ai enfin réussi a afficher une liste d’utilisateur de mon AD…

Le souci, c’est que j’ai pas mal d’OU bien organisé, et Dolibar ne permet visiblement d’importer qu’une seul OU… a moins que vous ayez une solution ?!

J’ai tenté ceci:

OU=un,deux,trois,DC=mon,DC=domain

OU=un, OU=deux, OU=trois, DC=nom, DC=domain

OU=un;deux;trois, DC=nom, DC=Domain

OU=un,deux,trois; DC=nom, DC=domain

Bref, je vois pô… :unsure:

Bon, finalement j’ai pas spécifié d’OU, et effectué mon filter sur l’ensemble des user du ldap… ça tourne enfin ^^

Par contre, ma liste déroulante me donne bien mes utilisateurs, mais de la sorte :

samaccountname=user1 samaccountname=user2 samaccountname=user3 samaccountname=user3 samaccountname=user4 ...

Pas évident pour retrouver facilement un user, du coup je me demandait si il était possible de masquer samaccountname ^^

Tiens, je viens au passage signaler qu’il y a une souci (côté dev)… a l’authentification des users depuis le ldap sur dolibarr… Que faire :confused:

Migrer vers openldap+samba :happy:

As tu un message d’erreur qui s’affiche à l’écran ou dans le fichier log ?

Salut Meos ! (content d’avoir enfin une réponse :slight_smile: )

En fait, pour tout t’expliquer, je travail sur un environnement de prod, impossible de passer sur OpenLDAP comme ça… surtout qu’on vient de migrer l’ensemble de notre archi sur les nouvelles ESX + EMC… pas trop envie de rebricoler la conf ^^

Bon sinon, pour ce qu’il se passe côté Dolibarr, je communique bien avec le ldap, j’ai configuré les bons attributs et récupère a présent la liste des users du ldap. Je sélectionne l’un d’entre eux, le « GET » pour remplir mon formulaire dans dolibarr…
Magie, les données du ldap sont bien rapatrié sur dolibarr… le mot de passe généré disparait et est remplacé par la phrase « Mot de passe du domaine ».

Pour le test, j’ai sélectionné mon user ldap, et importé celui ci dans dolibarr… je me déconnecte de ma session administrateur pour me connecter avec mon identifiant ldap… et la, mot de passe incorrect.

Alors, plusieurs questions me turlupinent…dans la conf du module ldap, il est demandé un attributs pour le mappage du mot de passe… chiffré ou non chiffré…
Quel pourrait être cette attribut ? (j’ai bien entendu testé userPassword)
Est il nécessaire de remplir les deux champs ? chiffré et non chiffré ?

a l’aiiide ^^ :confused:

Sur ma config (openldap) l’attribut est le même pour chiffré et non chiffré : ‹ userPassword ›.
A l’époque où j’ai bossé sur une migration AD -> samba/openldap je me suis cassé les dents sur les mots de passe car AD utilisait un chiffrement particulier :unhappy:
Il faudrait regarder le schéma AD pour trouver la valeur de l’attribut qui convient pour les mot de passe.

Yep, j’ai pu voir sur la toile (d’après le développement de script open source), que certain encodé le mot de passe avant authentification ldap… hm :dry:

Pour moi, on envoie les données des champs en clair au LDAP, et c’est lui qui gère l’encodage et l’authentification non ?

Pour le coup, j’ai regarder dans le schéma de mon AD, pour le CN=User-Password, j’ai bien comme valeur d’attribut userPassword…

J’ai retrouvé également un CN =UnixUserPassword … mais bon c’est significativement pas cette attribut qui m’intéresse :confused:

Toujours bloqué :confused:

Je viens compléter mon précédent post avec des nouvelles infos.

Je créé un nouvel utilisateur en l’important son profil depuis le ldap, (dolibarr m’informe par message que le mot de passe est celui du domaine).

Utilisateur créé, mais impossible de s’identifier.
Je vais voir dans l’utilisateur, un carré vert m’informe que l’utilisateur est bien actif. Toujours sur le profil, si je parcours l’onglet Fiche LDAP, un message en rouge m’informe que « Le compte est désactivé sur Dolibarr. »

Voila… :confused:

Personne peut m’aider ? !!

Bon bah je continue tout seul, au moins si quelqu’un a un souci il pourra suivre ce que j’ai fait.

Pour le coup j’ai activer le syslog et le mode DEBUG… pfff franchement pas terrible ce qu’il se passe derrière tout ça…

J’ai bien configuré mon fichier de conf en dur.
Maintenant, je peux me connecter en laissant le champs password vide !

debug en laissant le champs password vide :
DEBUG: Logging LDAP steps
DEBUG: Server:192.168.xx.xx, Port:389, Protocol:3, Type:activedirectory DEBUG: uid/samacountname=samaccountname, dn=, Admin:, Pass: DEBUG: login ldap = userTest
DEBUG: UACF =
DEBUG: pwdLastSet =
DEBUG: badPasswordTime =
DEBUG: sid = -1

debug en mettant le mot de passe (normalement valide):
DEBUG: Logging LDAP steps
DEBUG: Server:192.168.xx.xx, Port:389, Protocol:3, Type:activedirectory DEBUG: uid/samacountname=samaccountname, dn=, Admin:, Pass:

Coté log, en essayant de me connecter avec un user/pass valide :

2011-07-25 12:47:56 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap usertotest=userTest 2011-07-25 12:47:56 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap Server:192.168.xx.xx, Port:389, Protocol:3, Type:activedirectory 2011-07-25 12:47:56 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap uid/samacountname=samaccountname, dn=, Admin:, Pass: 2011-07-25 12:47:56 DEBUG 192.168.90.167 nologin index Ldap::connect_bind try bindauth for activedirectory on 192.168.xx.xx user=samaccountname=userTest,dc=ciaf,dc=local 2011-07-25 12:47:56 WARN 192.168.90.167 nologin index Ldap::connect_bind return=-1 2011-07-25 12:47:56 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap Authentification ko failed to connect to LDAP for 'userTest' 2011-07-25 12:47:57 DEBUG 192.168.90.167 nologin index Bad password, connexion refused 2011-07-25 12:47:57 INFO 192.168.90.167 nologin index Interfaces::run_triggers action=USER_LOGIN_FAILED Launch triggers for file 'interface_modPropale_PropalWorkflow.class.php' 2011-07-25 12:47:57 INFO 192.168.90.167 nologin index Interfaces::run_triggers action=USER_LOGIN_FAILED Launch triggers for file 'interface_modAgenda_ActionsAuto.class.php' 2011-07-25 12:47:57 INFO 192.168.90.167 nologin index Interfaces::run_triggers action=USER_LOGIN_FAILED Triggers for file 'interface_modNotification_Notification.class.php' need module to be enabled 2011-07-25 12:47:57 INFO 192.168.90.167 nologin index Interfaces::run_triggers action=USER_LOGIN_FAILED Launch triggers for file 'interface_all_Logevents.class.php' 2011-07-25 12:47:57 INFO 192.168.90.167 nologin index Interfaces::run_triggers action=USER_LOGIN_FAILED Launch triggers for file 'interface_modLdap_Ldapsynchro.class.php'

Et en me connectant sans mot de passe :

2011-07-25 12:49:54 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap usertotest=userTest 2011-07-25 12:49:54 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap Server:192.168.xx.xx, Port:389, Protocol:3, Type:activedirectory 2011-07-25 12:49:54 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap uid/samacountname=samaccountname, dn=, Admin:, Pass: 2011-07-25 12:49:54 DEBUG 192.168.90.167 nologin index Ldap::connect_bind try bindauth for activedirectory on 192.168.xx.xx user=samaccountname=userTest,dc=ciaf,dc=local 2011-07-25 12:49:54 DEBUG 192.168.90.167 nologin index Ldap::connect_bind return=2 2011-07-25 12:49:54 INFO 192.168.90.167 nologin index functions_ldap::check_user_password_ldap Authentification ok 2011-07-25 12:49:54 DEBUG 192.168.90.167 nologin index User::Fetch sql=SELECT u.rowid, u.name, u.firstname, u.email, u.office_phone, u.office_fax, u.user_mobile, u.admin, u.login, u.webcal_login, u.phenix_login, u.phenix_pass, u.note, u.pass, u.pass_crypted, u.pass_temp, u.fk_societe, u.fk_socpeople, u.fk_member, 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 FROM llx_user as u WHERE u.entity IN (0,1) AND (u.ldap_sid = '-1' OR u.login = 'userTest') LIMIT 1 2011-07-25 12:49:54 DEBUG 192.168.90.167 nologin index User::Fetch sql=SELECT u.rowid, u.name, u.firstname, u.email, u.office_phone, u.office_fax, u.user_mobile, u.admin, u.login, u.webcal_login, u.phenix_login, u.phenix_pass, u.note, u.pass, u.pass_crypted, u.pass_temp, u.fk_societe, u.fk_socpeople, u.fk_member, 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 FROM llx_user as u WHERE u.entity IN (0,1) AND u.login = 'userTest' 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index This is a new started user session. _SESSION['dol_login']=userTest Session id=xxxxxxxxxxxxxxxxxxx 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index BEGIN Transaction 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index Update last login date for user->id=19 UPDATE llx_user SET datepreviouslogin = datelastlogin, datelastlogin = 20110725124954, tms = tms WHERE rowid = 19 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Interfaces::run_triggers action=USER_LOGIN Launch triggers for file 'interface_modPropale_PropalWorkflow.class.php' 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Interfaces::run_triggers action=USER_LOGIN Launch triggers for file 'interface_modAgenda_ActionsAuto.class.php' 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Interfaces::run_triggers action=USER_LOGIN Triggers for file 'interface_modNotification_Notification.class.php' need module to be enabled 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Interfaces::run_triggers action=USER_LOGIN Launch triggers for file 'interface_all_Logevents.class.php' 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Interfaces::run_triggers action=USER_LOGIN Launch triggers for file 'interface_modLdap_Ldapsynchro.class.php' 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index COMMIT Transaction 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index User::getRights sql=SELECT r.module, r.perms, r.subperms FROM llx_user_rights as ur, llx_rights_def as r WHERE r.id = ur.fk_id AND r.entity = 1 AND ur.fk_user= 19 AND r.perms IS NOT NULL 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index User::getRights sql=SELECT r.module, r.perms, r.subperms FROM llx_usergroup_rights as gr, llx_usergroup_user as gu, llx_rights_def as r WHERE r.id = gr.fk_id AND gr.fk_usergroup = gu.fk_usergroup AND gu.fk_user = 19 AND r.perms IS NOT NULL AND r.entity = 1 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index --- Access to /dolibarr/htdocs/index.php 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Menubase::menuTopCharger sql=SELECT m.rowid, m.mainmenu, m.titre, m.url, m.langs, m.perms, m.enabled, m.target FROM llx_menu as m WHERE m.type = 'top' AND m.entity = 1 AND m.menu_handler in('eldy','all') AND m.usertype in (0,2) ORDER BY m.position 2011-07-25 12:49:54 INFO 192.168.90.167 userTest index Menubase::menuLeftCharger sql=SELECT m.rowid, m.fk_menu, m.url, m.titre, m.langs, m.perms, m.enabled, m.target, m.mainmenu, m.leftmenu FROM llx_menu as m WHERE m.menu_handler in('eldy','all') AND m.entity = 1 AND m.usertype in (0,2) ORDER BY m.position, m.rowid 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index InfoBox::listBoxes get default box list sql=SELECT b.rowid, b.box_id, b.position, b.box_order, b.fk_user, d.file, d.note FROM llx_boxes as b, llx_boxes_def as d WHERE b.box_id = d.rowid AND d.entity = 1 AND b.position = 0 AND b.fk_user = 0 ORDER BY b.box_order 2011-07-25 12:49:54 DEBUG 192.168.90.167 userTest index DoliDB::disconnect

Je galère quoi…

A mon sens, le souci viens du fait que je n’arrive pas a récupérer le SID ldap…

J’ai pourtant bien mis en en attribut le objectsid
Je cherche toujours…

De toute évidence, je récupère bien le SID dans la fiche utilisateur LDAP…
(En fait, il faut mettre tout les attribut en minuscule dans la conf).

Mais en mode debugg, le SID reste sur la valeur « -1 » :-\

Dur…

2011-07-25 14:54:17 INFO 192.168.90.167 nologin index functions_dolibarr::check_user_password_dolibarr sql=SELECT pass, pass_crypted FROM llx_user WHERE login = 'userTest' AND entity IN (0,1) 2011-07-25 14:54:17 INFO 192.168.90.167 nologin index functions_dolibarr::check_user_password_dolibarr Authentification ok - found pass in database

Comment peut il me dire qu’il a trouvé le mot de passe en base et que l’authentification est ok alors que je n’es rien saisie !? :dry:

up!

:’( …

Toujours bloqué, et j’avance plus…

Bonjour,

J’ai pas mal galéré aussi pour une authentification LDAP sur AD. Si c’est toujours d’actualité pour vous, en fouinant dans le code du login LDAP j’ai compris que le module LDAP sert à récupérer les utilisateurs depuis l’AD (ou les groupes) mais que pour l’authentification il faut en plus recopier les paramètres de connexion et de recherche LDAP dans la configuration de Dolibarr (config.php)… Les paramètres saisis dans le module ne sont pas exploités dans le script de login :confused:

Voilà ce que j’ai ajouté dans la config :

$dolibarr_main_authentication= ‹ ldap › // au lieu de ‹ dolibarr ›

$dolibarr_main_auth_ldap_host = ‹ monserveur-ad-primaire.mon-domaine.com ›;
$dolibarr_main_auth_ldap_port = ‹ 389 ›;
$dolibarr_main_auth_ldap_version = ‹ 3 ›;
$dolibarr_main_auth_ldap_servertype = ‹ activedirectory ›;
$dolibarr_main_auth_ldap_login_attribute = ‹ samaccountname ›;
$dolibarr_main_auth_ldap_dn = ‹ DC=mon-dn1,DC=mon-dn-2 ›;
$dolibarr_main_auth_ldap_admin_login = ‹ MONDOMAINEWINDOWS\mon-utilisateur-utilise-pour-authentifier ›;
$dolibarr_main_auth_ldap_admin_pass = ‹ le-mot-de-passe-de-cet-utilisateur ›;
$dolibarr_main_auth_ldap_filter = ‹ &(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)) ›;
$dolibarr_main_auth_ldap_debug = ‹ false ›;

Et là ça passe comme papi dans mamie.

J’espère que cela pourra aider quelqu’un qui crie dans l’espace sans se faire entendre…

Cdt,
François

2 J'aimes

Bonjour,

Actuellement j’essaye de configurer Dolibarr avec mon AD, j’ai bien activé le module LDAP, j’ai configuré le fichier config.php comme l’a expliqué « rigaudie ».

Le problème que je rencontre c’est lors de l’authentification, il reconnait bien les mots de passe valide de l’AD mais j’arrive aussi à me connecter sans entrer de mot de passe.

Si quelqu’un a une idée du problème.

Bonjour,
j’ai la version 3.5.1 installée, et j’ai exactement le meme comportement ; j’allais d’ailleurs poster quelque chose sur le sujet avant de tomber sur ton post. j’ai fait la config pour l’authentification AD directement dans le fichier de conf …

Je ne sais pas si les dev liront ce post mais c’est quand meme assez critique comme comportement …