Les attributs étiquetés

SUPANN définit une syntaxe d'attributs, dite attribut étiqueté, dont les valeurs sont constituées chacune d'une étiquette et d'une valeur.

L'étiquette identifie la nomenclature utilisée pour la valeur qui suit.

Cette syntaxe permet de faire co-exister dans le même attribut des valeurs issues de nomenclatures ou provenances différentes sans risques de collisions.

Remarques:

  • Les étiquettes ne peuvent être utilisées que pour les types d'attributs de type “chaînes de caractères” ou dérivés (“directoryString”, “IA5String”, etc).
  • Les étiquettes ne sont pas recommandées pour les attributs destinés à l'affichage. Elles sont en revanche adaptées à des attributs techniques dont le traitement est automatisé, tels que des identifiants, des références croisées, des codes de nomenclature.
  • les étiquettes peuvent rendre difficile la lecture d'attributs par requêtes LDAP depuis des applications dépourvues de fonctionnalités de mise en forme des valeurs lues. Dans ce cas, SUPANN préconise l'usage des options (voir: Les options d'attributs)

Une valeur d'attribut étiqueté obéit à la syntaxe suivante:

{ETIQUETTE}valeur
  • un délimiteur : “{”
  • un nom d'étiquette, obéissant à la syntaxe détaillée ci-dessous
  • un délimiteur : “}”
  • une valeur

Il n'y a pas d'espaces entre ces éléments.

  • Caractères autorisés: lettres non accentuées, chiffres, et les symboles “:” (deux points), “-” (tiret), “_” (tiret bas) et “.” (point).
  • La casse est libre. Les étiquettes pré-définies par SUPANN sont en majuscules.
  • La sensibilité à la casse dépend de la syntaxe du type d'attribut concerné.
  • Le caractère “:” est particulier: c'est un séparateur établissant une hiérarchie de nommage, l'élément à gauche du “:” constituant l'étiquette de l'élément de droite, répétable autant de fois que nécessaire. Exemple: {UAI:0751717J:ETUID} désigne un identifiant étudiant (ETUID) localement défini dans l'établissement de code 0751717J issu de la nomenclature UAI.

Les contraintes sont celles du type d'attribut utilisé, à l'exception des caractères “{” et “}” qui sont interdits.

Chaque type d'attribut défini comme “étiqueté” a ses propres règles définissant les étiquettes autorisées. Trois cas sont possibles:

  • Fermé: SUPANN définit la liste exhaustive des étiquettes autorisées et leurs usages.
  • Semi-ouvert: SUPANN définit une liste d'étiquettes “principales” et leurs usages, non ré attribuables à d'autres usages. L'établissement peut ajouter des étiquettes “locales” pour d'autres usages.
  • Ouvert: l'établissement définit ses propres étiquettes et leurs usages.

Lorsque l'ajout d'étiquettes locales est autorisé (cas “semi-ouvert” ou “ouvert”), celles-ci DOIVENT être identifiées par l'ajout d'un préfixe hiérarchique basé sur le code de l'établissement, pour en indiquer la provenance.

Exemple: l'étiquette locale “ACTIVITE” définie par l'université Paris 1 (Code UAI: 0751717J) sera libellée :

{UAI:0751717J:ACTIVITE}

Cet autre exemple montre une étiquette définie par un établissement ou un prestataire défini par son SIRET:

{SIRET:48264601500016:BDGTYPE}

Lorsque cela ne génère pas d’ambiguïtés, si l'établissement considère qu'il n'a qu'une seule nomenclature interne pour un attribut donné, il peut aussi utiliser son code établissement seul comme étiquette pour l'identifier; par exemple:

{UAI:0751717J}

Attention, les étiquettes locales ne sont pas exploitables dans un cadre inter-établissement (fédération d'identités par exemple), à moins d'établir des conventions bilatérales entre fournisseurs de services et d'identités.

Cependant, si cette étiquette identifie une nomenclature potentiellement partagée (par exemple, définie au niveau national, ou dans une application mutualisée), celle-ci peut être proposée au groupe de travail SUPANN pour normalisation : voir Évolution des recommandations.

Dans ce cas l'étiquette et la valeur sont traitées comme un tout indissociable. La recherche et la comparaison s'effectuent en égalité.

Exemple de filtre LDAP :

(attributEtiquete={ETIQ1}valeur1)

Indexation: une indexation en égalité (“eq”) est en général suffisante pour cet usage.

Dans ce cas, on s'intéresse exclusivement aux valeurs précédées d'une étiquette particulière, les autres étiquettes devant être ignorées.

Exemple de fitre LDAP isolant les entrées possédant l'étiquette souhaitée:

(attributEtiquete={ETIQ1}*)

Un traitement des valeurs lues est nécessaire pour en retirer l'étiquette.

Exemple via une expression rationnelle Perl :

$valeur =~ s/^\{ETIQ1\}//i

Si l'attribut est multi-valué, il peut aussi être nécessaire d'exclure les valeurs qui ne comportent pas l'étiquette recherchée. Cela peut se faire de deux manières:

  • par le serveur LDAP: en appliquant des règles de contrôle d'accès (ACL) dépendant de la valeur de l'attribut.
  • par le client: exemple en Perl, combinant isolation et retrait de l'étiquette :
foreach ($entry->get_value("AttributComposite")) { /^\{ETIQ1\}(.*)$/ and push @valeurs, $1 }

Indexation: pour cet usage, une indexation en égalité (“eq”) et sous-chaîne initiale (“subinitial”) est recommandée. Celle-ci permet de filtrer les valeurs selon leur étiquette.

  • Dernière modification : 2019/12/17 17:44