Vous êtes ici : 6.0 > Connecteurs > Connecteur LDAP

Options de récupération des attributs LDAP

Valeur par défaut

Pour les comptes du LDAP pour lesquels l'un des attributs synchronisés n'est pas renseigné, il est possible de stipuler une valeur par défaut. Pour cela, dupliquez le paramètre et ajoutez le suffixe ".defaut", pour y renseigner la valeur par défaut qui devra être attribuée :
ldap.annuaire.liste_rouge=supannListeRouge
ldap.annuaire.liste_rouge.defaut=1
Il est également possible d'utiliser ce paramètre pour attribuer une valeur par défaut pour tous les comptes synchronisés. Pour cela, renseignez un faux attribut dans le paramètre du champ, et ensuite, renseignez la valeur souhaitée dans le paramètre "defaut". Par exemple :
ldap.annuaire.code_rubrique=#NO_VALUE#
ldap.annuaire.code_rubrique.defaut=12345678

Attribut multivalué ou plusieurs attributs pour un seul champ synchronisé

Si l'attribut du champ LDAP est multivalué ou si l'on affecte plusieurs attributs LDAP au même champ K-Portal, on peut spécifier au connecteur de ne prendre que la première valeur.
Ainsi, pour prendre la première des valeurs il suffit de spécifier le paramétrage suivant :
ldap.annuaire.code_structure=attriLdap;attriLdap2  
ldap.annuaire.code_structure.monovalue=1
Dans notre exemple, si l'attribut LDAP « attriLdap » a une valeur alors celle-ci sera prise et la valeur de « attriLdap2 » sera ignorée.
En revanche, si « attriLdap » est vide, alors c'est la valeur de « attriLdap2 » qui sera prise en compte.

Attributs composites

(Disponible partir de la version 5.1.5 de K-Portal/K-Sup)
La norme supann, norme LDAP en vigueur dans l'enseignement supérieur, propose un type d'attibut LDAP, dit attribut "composite".
Ces attributs permettent de stocker plusieurs valeurs pour des sous-attibuts; Ainsi chaque attribut composite multivalué peut regrouper de façon ordonnée, les attributs (étiquetés).
Ces attributs prennent la forme suivante :
[role=valueRole][type=valueType][code=valueCode][role=valueRole2][type=valueType2][code=valueCode2]
où le premier paramètre est le nom de la sous-variable, et le second est la valeur.
Ci-dessous la description des paramétrages disponibles pour le traitement de ce type d'attribut :
ldapAlias.annuaire.fonction=attributLdap
ldapAlias.annuaire.fonction.compositeitems=role;code
Il est également possible d'effectuer des traitements de chaine de caractères.

Exemple :
Pour gérer le cas suivant :
Entrée : [role={SUPANN}Directrice][type={SUPANN}A][code=85858$Direction des Systèmes d'Information$SSSSS]
Sortie : Directrice - Direction des Systèmes d'Information
 
Le paramétrage suivant est mis en place :
ldapLocal.annuaire.fonction.role.chaine.start=}
ldapLocal.annuaire.fonction.role.chaine.action=+

ldapLocal.annuaire.fonction.code.chaine.action=+
ldapLocal.annuaire.fonction.code.chaine.start=$
ldapLocal.annuaire.fonction.code.chaine.start.occurrence=1
ldapLocal.annuaire.fonction.code.chaine.end=$
ldapLocal.annuaire.fonction.code.chaine.end.occurrence=2

Concaténation d'attributs

Dans le cas d'un attribut LDAP multivalué ou de plusieurs attributs LDAP définis pour un même champ synchronisé, il est possible de concaténer les valeurs et de spécifier un séparateur qui sera inséré entre chaque valeur.
Ainsi, par exemple, pour concaténer les différents numéros de téléphone d'une personne dans un seul champ K-Portal, il suffit de spécifier le paramétrage suivant :
ldap.annuaire.telephone_1=internationaliSDNNumber,homePhone,internationaliSDNNumber
ldap.annuaire.telephone_1.separateur= -
Dans notre exemple, les différents numéros de téléphone seront concaténés dans un même champ K-Portal et séparés d'un tiret. 

Table de correspondance

Il est fréquent lors d'échanges entre deux systèmes, que les nomenclatures soient différentes. Dans notre cas, il n'est pas rare que les valeurs contenues dans l'annuaire LDAP ne correspondent pas tout à fait aux valeurs attendues par K-Portal / K-Sup. Les tables de correspondance K-Portal permettent d'effectuer certaines transformations entre les valeurs récupérées de l'annuaire et les valeurs importées dans K-Portal.
Ainsi, pour chaque attribut importé de l'annuaire vers K-Portal, il est possible d'appliquer une table particulière (fichier .dat). Pour cela, voici les étapes à suivre :
  1. Créez un fichier dont le nom doit être formaté de la façon suivante : « ldap_nom_du_champ.dat », où nom_du_champ correspond au suffixe de l'attribut dans le fichier de configuration ldap.properties. Par exemple, pour l'attribut ldap.annuaire.type_population, la table de correspondance serait nommée ldap_type_population.dat.
  2. Dans le fichier, renseignez la liste des valeurs à convertir, en respectant bien les règles de formatage détaillées dans l'article Description du format des fichiers .dat.
  3. Placez le fichier dans le dossier spécifié dans le paramètre table.repertoire du fichier jtf.properties (généralement /WEB-INF/tables).
! Attention, lorsqu'une valeur fournie par le LDAP ne correspond à aucune clé dans le fichier .dat, la valeur renvoyée sera vide et le champ ne sera pas rempli pour la personne concernée. Si vous souhaitez que la valeur du LDAP soit restitueé telle quelle, ajoutez le paramètre suivant dans votre fichier de configuration (remplacez [attribut] par l'attribut concerné, par exemple : annuaire.code_structure) :
ldap.[attribut].conversion.conservationvaleur=1

Manipulation de chaînes

D'autres options permettent de manipuler la valeur de chaque attribut récupéré avant de le synchroniser vers K-Portal / K-Sup. Dans les options décrites ci-dessous, remplacez [attribut] par le nom de l'attribut concerné, par exemple : annuaire.liste_rouge. Pensez également à remplacer systématiquement le préfixe "ldap" par l'alias concerné ("ldapEtu" par exemple), si vous avez défini plusieurs synchronisations (valable pour tous les paramètres, sauf si explicitement indiqué dans la documentation).

Variable optionnelle permettant de concaténer un préfixe avec la valeur de l'attribut :
ldap.[attribut].prefixe=PRE
Variable optionnelle permettant de concaténer un suffixe avec la valeur de l'attribut
ldap.[attribut].suffixe=SUF
Variable indiquant si la conversion avec la table de correspondance (fichier .dat) est effectuée avant les manipulations de chaine de texte (positionner la valeur à 1), ou après (positionner la valeur à 0). Par défaut, la conversion s'effectue avant les manipulations de chaîne.
ldap.[attribut].conversion.prioritaire=1

Recherche par rapport à des indexs fixes :
#  Index de départ de recherche
# Valeur par défaut=0
ldap.[attribut].index.start=3

# Index de fin de recherche
ldap.[attribut].index.end=8

# Nombre de caractere avant la fin de la chaine
ldap.[attribut].index.start.fromend=3
Recherche par rapport à une chaîne donnée :
# Action par rapport à la chaîne recherchée
# Valeur par défaut= +
# Valeur possibles: - <=> avant + <=> apres
ldap.[attribut].chaine.action=-
# chaîne de texte à partir de laquelle la recherche est effectuée
ldap.[attribut].chaine.start=;

# numéro de l'occurrence de la chaîne recherchée
# Valeur par défaut=1
ldap.[attribut].chaine.start.occurence=1

# chaîne de texte jusqu'à laquelle la recherche doit s'effectuer
ldap.[attribut].chaine.end=;

# numéro de l'occurrence de la chaîne de fin recherchée
# Valeur par défaut=1
ldap.[attribut].chaine.end.occurence=1

# Nombre de caractère à partir de la chaine recherchée
ldap.[attribut].chaine.end.length=1
Exemples :
En commentaire se trouve la valeur renseignée dans l'annuaire LDAP, et sous le commentaire se trouve la liste des options à ajouter pour récupérer la chaîne "aaaaaa" qui est une partie de la valeur de l'attribut (l'exemple concerne la récupération du champ prénom).
Recherche par rapport à des indexs fixes :
# aaaaaaxxxxx
ldap.annuaire.prenom.index.end=6

# xxxxxaaaaaa
ldap.annuaire.prenom.index.start=5

# xxxxxxxxaaa
ldap.annuaire.prenom.index.start.fromend=3

# xxxxaaaaaaxxxxx
ldap.annuaire.prenom.index.start=4
ldap.annuaire.prenom.index.end=10
Recherche par rapport à une chaîne donnée :
# aaaaa;xxxxxxxxxxxx
ldap.annuaire.prenom.chaine.action=-
ldap.annuaire.prenom.chaine.start=;

# xxxxxxxxx;aaaaa
ldap.annuaire.prenom.chaine.action=+
ldap.annuaire.prenom.chaine.start=;

# xxxxx;xxx;xxx;aaaaa
ldap.annuaire.prenom.chaine.action=+
ldap.annuaire.prenom.chaine.start=;
ldap.annuaire.prenom.chaine.start.occurrence=3

# xxxxx;xxx;xxx;aaaaa;xxxxx;xxxx;
ldap.annuaire.prenom.chaine.action=+
ldap.annuaire.prenom.chaine.start=;
ldap.annuaire.prenom.chaine.start.occurrence=3
ldap.annuaire.prenom.chaine.end.length=4

# xxxxx;xxx;xxx;aaaaa;xxxxx;xxxx;
ldap.annuaire.prenom.chaine.action=+
ldap.annuaire.prenom.chaine.start=;
ldap.annuaire.prenom.chaine.start.occurrence=3
ldap.annuaire.prenom.chaine.end=;
ldap.annuaire.prenom.chaine.end.occurrence=4