Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
06 novembre 2013

LDAP Lightweight Directory Access Protocol           Standards LDAP


rfc3866

rfc3866

Language Tags and Ranges

   Il est souvent utile d'être capable d'indiquer le langage naturel associé avec les valeurs maintenus dans un annuaire et être capable de requêter l'annuaire sur des valeurs qui sont dans la langue que l'utilisateur demande.

Language Tags

   La section 2 de la BCP 47 (rfc 3066) décris le format de tag de langage qui est utilisé dans LDAP. brièvement, c'est une chaîne ASCII et '-'. ex: fr, en-US, ja-JP. ces tags sont insensible à la casse.

Language Ranges

   La section 2.5 de la BCP 47 (rfc 3066) décris les plages de langage. Un language range match un tag de langage s'il est égal à un préfix du tag. ex: la plage "de" match les tags "de" et "de-CH", mais pas "den". le range spécial "*" match tous les tags.

Attribute Descriptions

   Un attribut consiste d'un type, un jeu de 0 ou plusieurs options de tagging, et un jeu d'une ou plusieurs valeurs. Le type et les options sont combinés dans le AttributeDescription. AttributeDescription peut aussi contenir des options qui ne font pas partie de l'attribut, mais indiquent d'autres fonctions (tel que le range assertion ou le transfer encoding).

   Un AttributeDescription avec une ou plusieurs options de tagging est un sous-type direct de chaque AttributeDescription de même type avec toutes sauf une des options de tagging. Si le type d'AttributeDescription est un sous-type direct d'autres type, alors l'AttributeDescription est aussi un sous-type direct de l'AttributeDescription qui consiste du super-type et toutes les les options de tagging. donc, "CN;x-bar;x-foo" est un sous-type direct de "CN;x-bar", "CN;x-foo", et "name;x-bar;x-foo". Noter que "CN" est un sous-type de "name".

Utilisation des language tags dans LDAP

   Les serveurs qui supportent le stockage d'attributs avec des options de tag de langage dans le DIT devraient permettre à tout type d'attribut uns syntaxe chaîne d'avoir des options de tag de langage. Les serveurs peuvent permettre d'associer des options de langage avec d'autres type d'attributs.

  Les clients ne devraient pas assumer que les serveurs ont cette capacité.

  Les implémentations ne doivent pas interpréter la structure du tag en comparant 2 tags, et doivent les traiter simplement comme chaîne de caractère.

Options de tag de langage

   Un option de tag de langage associe un langage naturel avec des valeurs d'un attribut. Une description d'attribut peut contenir plusieurs attributs avec le même type d'attribut mais avec différentes combinaisons de tag de langage.

Une option de tag de langage en notation ABNF:
language-tag-option = "lang-" Language-Tag
Language-Tag = Primary-subtag *( "-" Subtag )
Primary-subtag = 1*8ALPHA
Subtag = 1*8(ALPHA / DIGIT)
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9

Exemples d'AttributeDescription valide:
givenName;lang-en-US
CN;lang-ja
SN;lang-de;lang-gem-PFL
O;lang-i-klingon;x-foobar
description;x-foobar
CN

Filtres de recherche

Par exemple, Un filtre d'égalité de type "name;lang-en-US" et une valeur d'assertion "Billy Ray", avec l'entrée suivante:
dn: SN=Ray,DC=example,DC=com
objectClass: person DOES NOT MATCH (wrong type)
objectClass: extensibleObject DOES NOT MATCH (wrong type)
name;lang-en-US: Billy Ray MATCHES
name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value)
CN;lang-en-US: Billy Ray MATCHES
CN;lang-en-US;x-foobar: Billy Ray MATCHES
CN;lang-en;x-foobar: Billy Ray DOES NOT MATCH (differing lang-)
CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-)
name: Billy Ray DOES NOT MATCH (no lang-)
SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
SN: Ray DOES NOT MATCH (no lang-, wrong value)

   Noter que "CN" et "SN" sont des sous-type de "name"

Exemple, un filtre d'égalité de type "name" et une valeur d'assertion "Billy Ray", avec l'entrée suivante:
dn: SN=Ray,DC=example,DC=com
objectClass: person DOES NOT MATCH (wrong type)
objectClass: extensibleObject DOES NOT MATCH (wrong type)
name;lang-en-US: Billy Ray MATCHES
name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value)
CN;lang-en-US;x-foobar: Billy Ray MATCHES
CN;lang-en;x-foobar: Billy Ray MATCHES
CN;x-foobar: Billy Ray MATCHES
name: Billy Ray MATCHES
SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
SN: Ray DOES NOT MATCH (wrong value)

Attributs demandés dans la recherche

   Les clients peuvent fournir des options de tag de langage dans chaque AttributeDescrition dans la liste des attributs demandés. Si les options de tag de langage sont fournis, seul les attributs ayant la description sont retournés

exemple, si le client demande un attribut description, et une entrée qui match contient les attributs suivants:
objectClass: top
objectClass: organization
O: Software GmbH
description: software products
description;lang-en: software products
description;lang-de: Softwareprodukte

Le serveur devrait retourner:
description: software products
description;lang-en: software products
description;lang-de: Softwareprodukte

Compare

   Les tag peuvent être utilisés dans une requête compare. Le serveur les traites de la même manière que pour les recherches.

exemple, un requête compare de type "name" et une valeur d'assertion "Johann" avec une entrée:
objectClass: top
objectClass: person
givenName;lang-de-DE: Johann
CN: Johann Sibelius
SN: Sibelius

   Le serveur devrait retourner compareTrue. Cependant, si le client demande un compare de type "name;lang-de", la requête échouera avec noSuchAttributeType.

Add

Les clients peuvent fournir ces tags dans AttributeDescription d'une nouvelle entrée à créer.exemple:
dn: CN=John Smith,DC=example,DC=com
objectClass: residentialPerson
CN: John Smith
CN;lang-en: John Smith
SN: Smith
SN;lang-en: Smith
streetAddress: 1 University Street
streetAddress;lang-en-US: 1 University Street
streetAddress;lang-fr: 1 rue Universite
houseIdentifier;lang-fr: 9e etage

Modify

   Un client peut fournir ces tags dans un AttributeDescription comme partie d'un élement de modification. Les types d'attibuts et les options doivent matcher exactement les valeurs stockées dans l'annuaire.Par exemple, si la modification est 'delete', et que les valeurs à supprimer ont un tag de langage, ces options doivent être fournis dans l'opération modify.

Utilisation des plages de langage dans LDAP

   Une plage de langage, en notation ABNF:

  language-range-option = "lang-" [ Language-Tag "-" ]

  où language-Tag et définis dans la BCP 47.

Exemple d'AttributeDescription contenant des options de plage de langage:
givenName;lang-en-
CN;lang-
SN;lang-de-;lang-gem-
O;lang-x-;x-foobar

   Une option de plage de langage n'est pas une option de tagging. les attributs ne peuvent pas être stockés avec des options de plage de langage.

Filtres de recherche

   Si une option de plage de langage est présente dans un AttributeDescription dans une assertion, alors pour chaque entrée dans le scope, les valeurs de chaque attribut dont AttributeDescription consistent du même type d'attribut ou ses sous-type et contiennent un option de tag de langage correspondant sont retournés

exemple, un filtre d'égalité de type "name;lang-en-" et une valeur d'assertion "Billy Ray", avec l'entrée suivante:
dn: SN=Ray,DC=example,DC=com
objectClass: person DOES NOT MATCH (wrong type)
objectClass: extensibleObject DOES NOT MATCH (wrong type)
name;lang-en-US: Billy Ray MATCHES
name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value)
CN;lang-en-US: Billy Ray MATCHES
CN;lang-en-US;x-foobar: Billy Ray MATCHES
CN;lang-en;x-foobar: Billy Ray MATCHES
CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-)
name: Billy Ray DOES NOT MATCH (no lang-)
SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
SN: Ray DOES NOT MATCH (no lang-, wrong value)

Attributs demandés dans les opérations de recherche

   Les clients peuvent fournir des options de plage de langage dans chaque AttributeDescription dans la liste des attributs demandés dans une opération de recherche. Si le client demande l'attribut "name;lang-en-", le serveur pourrait retourner "name;lang-en-US" et "CN;lang-en;lang-ja", mais pas "SN" ni "name;lang-fr".

Comparaison

exemple, une requête compare de type "name;lang-" et une valeur d'assertion "Johann", avec l'entrée suivante:
objectClass: top
objectClass: person
givenName;lang-de-DE: Johann
CN: Johann Sibelius
SN: Sibelius

   Le serveur devrait retourner compareTrue. Si le client avait fournis le type "name;lang-de", et la valeur d'assertion "Sibelius" avec l'entrée ci-dessus, la requête aurait échouée.

Découverte des options de langage

   Un serveur devrait indiquer qu'il supporte les options de tag de langage en publiant 1.3.6.1.4.1.4203.1.5.4 ( Language Tag Options ) et 1.3.6.1.4.1.4203.1.5.5 ( Language Range Options ) dans le rootDSE.