Configuration LDAP

Bonjour !

Je me permets d’intervenir après quelques heures de recherche sur la question.
Nous avons un Active Directory et nous n’arrivions pas à faire fonctionner la connexion LDAP depuis Jeedom.
Nous avons essayé de passer Jeedom en version Alpha pour obtenir la solution de LetMeR00t mais cela ne fonctionnait toujours pas. ([LDAP] Test réussi mais connexion impossible - #9 par henribi)
Apres avoir regarder les modification de LetMeR00t sur le GitHub ([LDAP] Some features by LetMeR00t · Pull Request #1639 · jeedom/core · GitHub) nous nous sommes décidé a trifouiller dans le code de Jeedom pour faire fonctionner cette connexion :muscle:
Voici la copie d’écran de notre conf graphique :
Le serveur étant en Qualif l’adresse IP n’est pas masquée.

Pour la connexion vers l’UO Users qui est Built-In microsoft on utilisera dans BaseDN : cn=Users,dc=Sub,dc=local
Sub & local étant propre à votre Active Directory.

Si vous souhaitez créer une autre UO plus spécifique on utilisera : ou=MonUO,dc=Sub,dc=local

Ensuite je vous conseille d’utiliser le superbe plugin JeeXplorer car on va aller modifier une petite ligne de code dans un fichier. (Je rappelle que cela est pour une connexion avec Active Directory).
Une connexion LDAP linux doit fonctionner, je n’ai pas testé.

Téléchargez le fichier suivant : /html/core/class/user.class.php ou Editez le grâce à JeeXplorer.
Ouvrez-le dans un éditeur de fichier (Type « NotePad++ » ou « Visual Studio Code ») pour ceux qui l’on téléchargé.

Pour la version Stable de Jeedom (4.0.56 à l’heure où j’écris)
Dans la fonction connect, à la ligne 65 vous avez un test :
if (!ldap_bind($ad, 'uid=' . $_login . ',' . config::byKey('ldap:basedn'), $_mdp))

Modifiez cette ligne par :
if (!ldap_bind($ad, 'cn=' . $_login . ',' . config::byKey('ldap:basedn'), $_mdp))

Active Directory n’utilisant pas de uid la condition n’est jamais validée et vos utilisateurs ne sont pas importé dans Jeedom.

Pour la version Alpha (4.1.9)
Dans la fonction connect, à la ligne 65 vous avez un test :
if (ldap_bind($ad, 'uid=' . $_login . ',' . config::byKey('ldap:basedn'), $_mdp))

Modifiez cette ligne par :
if (ldap_bind($ad, 'cn=' . $_login . ',' . config::byKey('ldap:basedn'), $_mdp))

Réimportez ensuite votre fichier au même endroit. Si vous avez quelque réticence commentez la ligne que l’on modifie. Ou faites une copie de votre fichier initial.

Ensuite re-testez votre liaison Active Directory et faites un test avec l’un de vos user présent dans l’UO que vous avez choisie :stuck_out_tongue:

La connexion devrait se valider et vous devriez arriver sur l’interface du Jeedom avec votre utilisateur AD.