formcreator icon indicating copy to clipboard operation
formcreator copied to clipboard

Connexion LDAP

Open EC2311 opened this issue 7 years ago • 67 comments

Bonjour

je suis avec GLPI 9.2.3 et formCreator 2.6.4

j'arrive à importer des utilisateurs et des groupes AD. OK

Lorsque je cree un formulaire avec un composant lié LDAP, le resultat est toujours 'Aucun resultat' : je prends la meme structure de filtre que celui declaré dans le LDAP GLPI.

Pourquoi ? Quelle serait le type de filtre à renseigner ? attribut (AD/LDAP?)

D'avance merci

EC2311 avatar Oct 11 '18 05:10 EC2311

Bonjour

Avez-vous spécifié un attribut ?

image

Si vous choisissez l'attribut Common Name, vous devriez voir vos utilisateurs.

btry avatar Oct 11 '18 07:10 btry

Voici le champ et le filtre : image et coté LDAP (authentification) image image

EC2311 avatar Oct 11 '18 10:10 EC2311

En regardant via Ldap, je ne vois pas de champs commonName. par contre display name existe. Seulement pas dans les attributs disponibles?

EC2311 avatar Oct 11 '18 10:10 EC2311

Ine faut pas regarder la configuration LDAP dans l'authentification, mais juste vérifier comment vous avez rempli la question de type LDAP. L'attribut Common Name doit exister indépendamment que vous utilisiez un LDAP normal ou un AD. Mon exemple est fait à partir d'un AD Samba 4, et la question utilise le filtre par défaut quand on la crée.

btry avatar Oct 11 '18 10:10 btry

Voici ce que j'ai coté formulaire : image et je ne vois pas de noms s'afficher.

EC2311 avatar Oct 11 '18 12:10 EC2311

En utilisant ldap soft* je vois les utilisateurs, filtres etc... j'ai recupéré filtre... mais toujours rien.

EC2311 avatar Oct 12 '18 05:10 EC2311

Bonjour,

Je tenterai de reproduire. Vous confirmez que vous avez un AD, pas un LDAP (openldap, 389, ...) ?

btry avatar Oct 12 '18 05:10 btry

on a AD avec connexion 389. j'essaie d'inserer le DC dans le filtre... mais quelle syntaxe ?

EC2311 avatar Oct 12 '18 06:10 EC2311

Il n'y a pas besoin d'insérer le DC dans le filtre. JE pense que celui qui est dans votre dernière capture d'écran sera bon. Avez-vosu de la latence quand vous affichez le formuliare contenant le champ (utiliser l'ongler "preview" pour faire un essai. Si oui, il se peut qu'il y ait un problème pour joindre votre serveur LDAP.

btry avatar Oct 29 '18 16:10 btry

Tout depend de ce que vous entendez par latence... Mais il est vrai que l'affichage n'est pas immédiat contrairement aux autres affichages.

EC2311 avatar Nov 07 '18 12:11 EC2311

Bonjour

La latence serait de l'ordre de 10 seconds ou plus, témoignant d'une incapacité pour le plugin à se connecter à l'annuaire. J'ai pu constater cela récemment suite à une mauvaise configuration. Dans ce scénarion la liste des utilsiateurs est vide.

btry avatar Nov 07 '18 12:11 btry

et commentant en etre sur ? Log ?

EC2311 avatar Nov 07 '18 12:11 EC2311

J'en ai eu la certitude car j'étais en train de faire un debug sur un formulaire contenant un champ LDAP avec un annuaire mal configuré sur mon instance. J'ai corrigé la configuration pour réparer le souci et ai réfléchi sur la nature du problème. Pour moi il n'y a pas de bug. J'ai également choisi de ne pas faire apparaitre un message d'avertissement sur le formulaire car cela dérouterait l'utilsiateur final. Cela dit, une amélioration pourrait être faite, mais je n'ai pas encore de solution satisfaisante. LE mieux que j'aie trouvé pour le moment serait de ne pas traiter le champ si l'annuaire LDAP associé ne fonctionne pas (ce qui est fait avec les champs de type Tag)

Le fait que votre dropdown soit vide me fait penser que cette expérience vous arrive également. Une latence anormale à l'affichage du formulaire serait déjà une piste.

Une idée simple pour vérifier : dupliquez votre formulaire, supprimer le champ de type LDAP dans le duplicata, et affichez ce formulaire avec l'onglet "prévisualisation". Si il y a bien une latence sur le formulaire original vous verrez tout de suite la différence.

btry avatar Nov 07 '18 16:11 btry

En duspliquant je n'ai pas la meme latence : c'est bien plus rapide, ce qui conforte votre idee. Néanmoins, ce qui me parait etrange c'est que l'authentification via LDAP est ok, vu que les utilisateurs se connectent etc, et ce pour l'ensemble des Ldaps configurés, et que je parviens à faire l'import d'utilisateur ou de groupe AD...

J'ai essayé d'utiliser le debug, mais je ne vois rien... on ne pourrait pas imaginer un 'test'/monitor lors de la connexion du formulaire au ldap afin de vérifier la connexion, un peu comme dans l'onglet 'authentification' ?

dans le formulaire, dans quel script se trouve la connexion au ldap et le rapatriement des données utilisateurs ?

EC2311 avatar Nov 07 '18 17:11 EC2311

la connection à l'annuaire s'effectue dans le fichier suivant : https://github.com/pluginsGLPI/formcreator/blob/develop/inc/fields/ldapselectfield.class.php

Je pense que vous avez ajouté un annuaire dans GLPI, puis créé votre formulaire avec le champ LDAP et finalement détruit puis recréé votre annuaire dans GLPI. Dans une telle situation le champ LDAP fait référence à un annuaire qui n'existe plus et il peut y avoir une tentative de connection vers un hôte dont le nom n'existe pas (chaine vide ou "N/A"; à déterminer en relisant le code).

btry avatar Nov 08 '18 08:11 btry

non, je n'ai pas supprimé puis ajouter le ldap.

par contre, je vois dans le fichier ldap_filter.php $filter = "(".$authldap->getField("login_field")."=*)"; $ldap_condition = $authldap->getField('condition'); echo "(& $filter $ldap_condition)";

pourriez vous indiquer ce qui est fait ensuite avec la variable $filter sachant que pour l'authentification dans GLPI j'utilise un compte spécifique à chaque LDAP. où sort la ligne 'echo' ?

EC2311 avatar Nov 08 '18 10:11 EC2311

Sous GLPI 9.3.2, toujours meme chose. Dommage que je n'arrive pas à le faire fonctionner car pour demander ajout d'utilisateur dans des Groupes la connexion LDAP serait plus simple que d'ajouter champ utilisateur (objet glpi) ou texte libre (si l'utilisateur n'existe pas dans la base) Il n'y aurait pas des endroits strategiques ou je pourrais mettre une echo afin de vérifier connexion/retour/variables importantes pour le bon fonctionnement à la connexion LDAP (sachant que mon authentification LDAP fonctionne...)

EC2311 avatar Nov 28 '18 13:11 EC2311

je pense avoir une piste :) ligne 83 du script ldapselectfield.class, j'ai ajouté (lors du catch) echo $ds; echo $e; ainsi j'ai l'erreur (eventuelle) et....

Resource id #21ErrorException: ldap_search(): Partial search results returned: Sizelimit exceeded in \HTTPServer\wwwroot\plugins\formcreator\inc\fields\ldapselectfield.class.php:64 Stack trace: #0 [internal function]: plugin_formcreator_ldap_warning_handler(2, 'ldap_search(): ...', '\...', 64, Array) #1 \HTTPServer\wwwroot\plugins\formcreator\inc\fields\ldapselectfield.class.php(64): ldap_search(Resource id #21, 'OU=xxxxxx,OU=x...', '(& (samaccountn...', Array) #2 HTTPServer\wwwroot\plugins\formcreator\inc\fields\selectfield.class.php(41): PluginFormcreatorLdapselectField->getAvailableValues() #3 \HTTPServer\wwwroot\plugins\formcreator\inc\field.class.php(96): PluginFormcreatorSelectField->displayField(true) #4 \HTTPServer\wwwroot\plugins\formcreator\inc\fields.class.php(122):

trop d'enregistrement à retourner ?

EC2311 avatar Nov 28 '18 13:11 EC2311

A priori il y a trop de résultats. Efectivement en passant récemment sur le code pour préparer la version 2.7 je me suis étonné de n'avoir jamais eu de retour de bug.

Combien d'utilisateurs vous avez dans l'annuaire ?

btry avatar Nov 28 '18 14:11 btry

Un tres grand nombre... du coup en mettant certains filtres j'arrive à faire fonctionner, mais pas pratique... NB j'ai du modifier les parametres supp du ldap dans GLPI afin de spécifier d'utiliser les resultats paginés. par contre je ne sais pas si le nbre de resultats (illimité) et taille de la page (100) a un role.

D'autre part j'ai des ldap repliques qui semblent ne pas avoir forcemment les memes données au meme moment... (bizarre) En utilisant un soft ldap (softterra) j'obtiens bien une liste complete des utilisateurs enfin jusque (1000 ensuite ca bloque) alors que si j'utilise un serveur d'authentification (dans le formulaire de glpi) je n'ai pas la meme liste : liste incomplete...

Et comment faire pour faire la liaison ensuite avec les groupes qui ne sont pas dans la meme OU ? Je l'ai defini dans l'authentification ldap : lors de l'imoort ca marche, mais si j'utilise cette connexion cela ne fonctionne pas (niveau formulaire) j'ai l'impression qu'il faut creer une nouvelle connexion LDAP avec baseDN pour l'accés au groupe (via le formulaire) je ne sais pas si je me fais bien comprendre...

EC2311 avatar Nov 28 '18 16:11 EC2311

Pas de news ?

voici ce que j'ai mis cote authentification ldap image mais toujours le meme souci de liste "abregée"...

EC2311 avatar Mar 08 '19 10:03 EC2311

Je n'ai pas encore repris les recherches sur ce bug. De mémoire, le plugin ne réutilsie pas les paramètres de l'annuaire dans GLPI pour faire sa connection LDAP. C'est peut être par là qu'il faudrait améliorer le plugin.

btry avatar Mar 08 '19 10:03 btry

sachant que pour les connexions dans GLPI, je n'ai aucun probleme avec les LDAP : toute personne presente dans le ldap arrive à se connecter sans souci et les imports d'utilisateurs sont ok : donc le filtre dans l'authentification est correctement réalisé. A priori dans le formulaire aussi, sachant que je vois des utilisateurs... mais liste incomplete...

EC2311 avatar Mar 08 '19 12:03 EC2311

Je penche pour un problème de pagination. Ca pourrait se confirmer si un filtre restreint les résultats de recherche LDAP à une poignée d'éléments.

btry avatar Mar 08 '19 12:03 btry

je confirme Si je restreins la liste via le 'displayname' je vois bien l'ensemble des personnes correspondants donc souci dans la pagination ou buffer (pour grand nombre d'objets ldap ;) )

EC2311 avatar Mar 08 '19 13:03 EC2311

Bonjour

Pouvez-vous vérifier si les résultats paginés sont activés sur votre GLPI ?

image

btry avatar Apr 19 '19 09:04 btry

Sur intance de Dev : oui, taille de page 30000 et nbr maxi des resultalts : 300000

EC2311 avatar Apr 23 '19 07:04 EC2311

Et le serveur LDAP est configuré avec les mêmes valeurs ?

btry avatar Apr 23 '19 08:04 btry

euh... joker : cela a une importance ?

EC2311 avatar Apr 23 '19 08:04 EC2311

La pagination est imposée par le serveur et les clients sont tenus de faire des requêtes avec des pages de taille inférieure ou égale aux limites du serveur.

Je ne connais pas 389, mais je pense que ça existe.

Le plugin utilise l'API de GLPI pour accéder au serveur LDAP, et à priori, les paramètres de pagination de GLPI doivent s'appliquer.

btry avatar Apr 23 '19 08:04 btry