1

6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés



Import LDAP PHP

Import LDAP via script PHP

Le système d'import LDAP décris dans cette note technique est à utiliser à partir de la version 3.0 de Kentika. Plus spécifiquement, le Webfolder doit contenir un dossier PHP, avec un fichier "tools.php". (Sinon, ce fichier est inclus dans le .zip joint.)

1. Import des scripts

Importer les scripts joints dans le fichier LDAP.zip.

2. Paramétrage

Le scripts permettant le paramétrage du LDAP est le script AScript_LDAP_import_test. Pour le paramétrer correctement, il faut les informations suivantes :
- L'Adresse URL du serveur LDAP (et éventuellement un port, s'il est différent de 389)
- Un identifiant permettant de se connecter au LDAP en mode lecture. Cela peut être un simple identifiant, ou un DN complet. (Exemple : cn=admin,cn=users,dc=kentika,dc=local)
- Le mot de passe associé au compte ci-dessus.
- Un masque de recherche qui sera utilisé pour récupérer les personnes dans la base (Exemple : cn=users,dc=kentika,dc=local)
- Un filtre, utilisé pour réduire les résultats trouvés et ne récupérer que les utilisateurs à importer dans la base. Cela permet entre autres d'éviter d'importer les comptes d'administration du système ne correspondant pas à de réelles personnes. (Exemple : (cn=*))

 Une fois ces informations réunies, il faut les renseigner dans le script, à la ligne suivante :

PHP Executer(Tcom2+"tools.php";"ldap_extract";Tcom10;"HOST";"ADMIN";"MOT_DE_PASSE";"MASQUE";"FILTRE";"CHAMPS";Vrai)

 Les correspondances sont les suivantes :
HOST : Adresse URL du serveur. Si le port est différent de 389, le rajouter après l'adresse du serveur, séparé par ":"  (Exemple : 192.168.0.1:1220)
ADMIN : Identifiant
MOT_DE_PASSE : Mot de passe
MASQUE : Masque de recherche
FILTRE : Filtre
CHAMPS : À ce stade, vider ce champ.

Le script aura donc une ligne du type :

PHP Executer(Tcom2+"tools.php";"ldap_extract";Tcom10;"192.168.0.1";"cn=admin,cn=users,dc=kentika,dc=local";"secret";"cn=users,dc=kentika,dc=local";"(cn=*)";"";Vrai)

 Exécuter ensuite le script depuis un monoposte ou un client sur le serveur : Fichier > Exploitation > C > LDAP_Import_test.

Si le script ne parvient pas à se connecter à l'annuaire, une fenêtre d'erreur apparaît, permettant de déterminer à quelle étape il a échoué (connexion, recherche, etc.).

Attention : Dès lors qu'une fenêtre popup apparaît, même si elle est vide, c'est qu'il y a eu une erreur lors de l'exécution du script PHP.

 Si tout se passe bien, le script ouvre une fenêtre de l'explorateur Windows, avec le script "tools.php", et un fichier de données extraites de l'annuaire.

3. Paramétrage du filtre d'import

Afin de paramétrer le filtre d'import, il faut commencer par déterminer les champs à importer dans Kentika, en regardant les champs renseignés dans le fichier créé à l'étape précédente.

Il est conseillé de modifier ensuite le script LDAP_import_test pour ne récupérer que ces champs. Cela permet de réduire la taille du fichier créé, d'accéler le traitement de l'import (php et Kentika), et d'éviter les caractères spéciaux contenus dans certains champs qui posent problème à l'import dans Kentika.

Pour cela, il faut renseigner dans la ligne indiquée dans la partie précédente, l'attribut CHAMP avec la liste des champs, séparés par des points-virgule :

Exemple : PHP Executer(Tcom2+"tools.php";"ldap_extract";Tcom10;"192.168.0.1";"cn=admin,cn=users,dc=kentika,dc=local";"secret";"cn=users,dc=kentika,dc=local";"(cn=*)";"cn;sn;streetaddress;mail";Faux)
 Note : Deux champs supplémentaires sont renvoyés quel que soit la lite envoyées : Il s'agit du dn et du count.

 Une fois que les champs sont filtrés, utiliser un fichier "propre" pour créer un filtre d'import, dont le code doit être "LDAP". (Plus d'informations sur les filtres d'import)

 Astuce : Il est possible d'importer directement le fichier créé par le script LDAP_import_test avec le filtre créé. Il est cependant recommandé d'effectuer cette première opération dans une base de test.

 

4. Paramétrage du batch

Le script d'import en batch est le script AScript_LDAP_Batch. Outre le fait de paramétrer le script pour s'exécuter une fois par jour (de préférence en dehors de heures d'utilisation du logiciel), il faut également recopier toute la ligne modifiée dans le script LDAP_import_test et la coller à la place de la ligne par défaut du script batch :

PHP Executer(Tcom2+"tools.php";"ldap_extract";Tcom10;"HOST";"ADMIN";"MOT_DE_PASSE";"MASQUE";"FILTRE";"CHAMPS";Vrai)

Une fois ceci fait, l'import est prêt à se faire automatiquement. Penser à vérifier le lendemain que tout fonctionne bien en batch.

Ajustements supplémentaires

Il existe deux ajustements supplémentaires qui peuvent permettre de résoudre certains problèmes :

Suppression des logs :

Par défaut, le script batch supprime automatiquement tous les logs de modification de fiches personnes créés par un import et qui ont plus de 3 jours. Cela permet d'éviter une accumulation des logs. Il est possible de garder les logs en modifiant, dans le script LDAP_batch un ligne en fin de script :

Si (Vrai)
CHERCHER PAR FORMULE([log];([log]record_num%10=1) & ([log]date_action<(Date du jour-3)) & ([Log]Comment="IMP") & (([log]code_action=2)|([log]code_action=3)))
SUPPRIMER SELECTION([log])
Fin de si

devient :

Si (Vrai)
CHERCHER PAR FORMULE([log];([log]record_num%10=1) & ([log]date_action<(Date du jour-3)) & ([Log]Comment="IMP") & (([log]code_action=2)|([log]code_action=3)))
SUPPRIMER SELECTION([log])
Fin de si

Pagination :

Sur de nombreux annuaires, il existe une limite au nombre de résultats renvoyés à une requête. Par défaut, sous Active Directory, la limite est de 1000 enregistrements.
Dans la version du fichier php jointe (qui n'est pas celle qui est livrée avec la version 3.0 de Kentika), la pagination est gérée automatiquement (mais peut être désactivée en mettant la dernière valeur de la formule EXECUTER PHP à "Faux").

Dans la version fournie avec la v3.0 :
Si le masque de recherche et le filtre ne peuvent être ajustés pour réduire le nombre de résultats en-dessous de 1000, l'import ne sera pas réalisé.
Il est cependant possible de réaliser une sorte de pagination, en découpant les résultats alphabétiquement. Pour cela, il faut modifier un paramètre dans les scripts Kentika (à essayer d'abord avec LDAP_import_test, puis à reporter dans LDAP_batch) : Changer le dernier paramètre en "Vrai".

Il faut également inclure dans le filtre un "@", qui sera remplacé par chaque lettre de l'alphabet, l'une après l'autre.

Exemple : PHP Executer(Tcom2+"tools.php";"ldap_extract";Tcom10;"192.168.0.1";"cn=admin,cn=users,dc=kentika,dc=local";"secret";"cn=users,dc=kentika,dc=local";"(cn=@*)";"cn;sn;streetaddress;mail";Vrai)

 

Interrogation de plusieurs dossiers LDAP (fichier php joint, non disponible en v3.0, intégré en v3.0.1):

Il est parfois nécessaire de réaliser plusieurs interrogations vers l'annuaire, avec des masques de recherche différents.

Pour cela, il suffit de renseigner les différents masques de recherches séparés par deux point-virgules (";;") :

PHP Executer(Tcom2+"tools.php";"ldap_extract";Tcom10;"192.168.0.1";"cn=admin,cn=users,dc=kentika,dc=local";"secret";"cn=users,dc=kentika,dc=local;;cn=externe,dc=kentika,dc=local";"(cn=*)";"";Vrai)

Il est possible soit de définir un filtre par masque de recherche (chaque filtre doit également être séparé par deux point-virgules), soit de définir un filtre unique qui sera utilisé pour chaque masque de recherche.

Alternative

Le script joint (import LDAP 4D.zip) est une alternative full 4D (pas de PHP) pour générer le fichier puis l'importer dans Kentika. Le script est fourni à titre indicatif, à modifier pour créer un script de test, et un script d'import en batch.