Configuration LDAP

Super cela, c’est sur Jeedom bêta?

Merci aux contributeurs

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.

Petite Update.
Nous sommes repassé en version stable pour tester.

Toujours dans le même fichier de conf, la condition ligne 72 nous bloque pour l’authentification car pas de retour.
Un problème avec le filtre, mais j’ai beau tester différents filtres ils ne sont jamais valides.

Pour palier temporairement et souhaitant tout de même que l’on s’authentifie avec l’Ad nous avons modifié la ligne 70 plaçant le résultat dans la variable result.
Tout les utilisateurs de l’AD seront donc ADMIN du Jeedom.

Remplacer donc la ligne :
$result = ldap_search($ad, config::byKey('ldap::usersearch') . '=' . $_login . ',' . config::byKey('ldap:basedn'), config::byKey('ldap:filter'));

Par :
$result = ldap_search($ad, config::byKey('ldap:basedn'), config::byKey('ldap::usersearch') . '=' . $_login );

La condition est donc validée car result retourne des objets :stuck_out_tongue:

J’attends avec impatience l’ajout dans la stable

Bonjour Nikk0, bonjour à tous,

Je suis passé de Synology ldap server qui fonctionnait tres bien avec mon jeedom sur virtual machine manager, à Synoloy directory server qui ne fonctionne pas .

je recois une erreur dans http.error :
PHP Warning: ldap_bind(): Unable to bind to server: Strong(er) authentication required in /var/www/html/core/class/user.class.php on line 132, refer…

lorsque je teste la connexion.

je ne vois pas tres bien d’ou ca peut venir, j’ai modifier le fichier comme tu as montré. mais rien.

Je ne sais pas trop comment installer le plugin, c’est un peu nébuleux… faut-il simplement copier les sources dans la bonne arborescence ?

Quelqu’un a t’il reussi à faire fonctionner synology directory server sur jeedom. ?

Autre chose, ou puis-je trouver des logs plus détaillés en ssh ?

Merci pour tous,

J’ai tesé mes identifiants de connection à l’ad, ils fonctionnent, le probeme ne vient pas de la je pense.