Groupe de travail Réseau	K. Zeilenga, éd., OpenLDAP Foundation	
Request for Comments : 3866	juillet 2004	
RFC rendue obsolète : 2596		
Catégorie : En cours de normalisation	Traduxction Claude Brière de L’Isle	

Étiquettes de langue et gammes 
dans le protocole léger d’accès à un répertoire (LDAP)

Statut de ce mémoire
Le présent document spécifie un protocole Internet en cours de normalisation pour la communauté de l’Internet, et appelle à des discussions et des suggestions pour son amélioration. Prière de se reporter à l’édition actuelle du STD 1 "Normes des protocoles officiels de l’Internet" pour connaître l’état de normalisation et le statut de ce protocole. La distribution du présent mémoire n’est soumise à aucune restriction.

Notice de copyright
Copyright (C) The Internet Society (2004).

Résumé
Il est souvent souhaitable d’être capable d’indiquer le langage naturel associé aux valeurs détenues dans un répertoire, et d’être capable d’interroger le répertoire sur les valeurs qui satisfont aux besoins de langage de l’utilisateur. Le présent document précise l’usage des étiquettes de langues et des gammes de langues dans le protocole léger d’accès à un répertoire (LDAP, Lightweight Directory Access Protocol).
Table des Matières
1. Fondements et utilisation prévue	1
1.1 Étiquettes de langue	2
1.2 Gammes de langage	2
1.3 Descriptions d’attribut	2
2. Utilisation des étiquettes de langage dans LDAP	3
2.1 Options d’étiquette de langage	3
2.2 Filtre de recherche	3
2.3 Attributs demandés dans une recherche	4
2.4 Compare	5
2.5 Opération Add	5
2.6 Opération Modify	6
3. Utilisation des gammes de langue dans LDAP	6
3.1 Filtre de recherche	7
3.2 Attributs demandés dans une recherche	7
3.3 Compare	7
4. Découverte de la prise en charge de l’option Langage	8
5. Interopérabilité avec les mises en œuvre qui ne prennent pas en charge les extensions	8
6. Considérations pour la sécurité	8
7. Considérations relatives à l’IANA	8
8. Remerciements	9
9. Références	9
9.1. Références  normatives	9
9.2 Références pour information	9
Appendice A Différences avec la RFC 2596	9
Appendice B Différences avec X.500(1997)	10
Adresse de l’éditeur	10
Déclaration complète de droits de reproduction	10

1.	Fondements et utilisation prévue

Le  protocole léger d’accès à un répertoire (LDAP) [RFC3377] donne aux clients un moyen pour interroger et modifier les informations mémorisées dans un système de répertoire réparti. Les informations du répertoire sont maintenues comme des attributs des entrées. La plupart de ces attributs ont des syntaxes qui sont des chaînes lisibles par l’homme, et il est souhaitable d’être capable d’indiquer le langage naturel associé à des valeurs d’attribut.

Le présent document décrit comment les étiquettes et les gammes de langage [RFC3066] sont portées dans LDAP et doivent être interprétées par les mises en œuvre de LDAP. Toutes les mises en œuvre de LDAP DOIVENT être prêtes à accepter les étiquettes et gammes de langage.

Dans le présent document, les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "DEVRA", "NE DEVRA PAS", "DEVRAIT", "NE DEVRAIT PAS", "RECOMMANDÉ", "PEUT", et "FACULTATIF" sont à interpréter comme décrit dans le BCP 14, [RFC 2119].

Le présent document remplace la RFC 2596. L’Appendice A résume les changements effectués depuis la RFC 2596.

L’Appendice B discute des différences avec les mécanismes de "contexts" de X.500(1997) 

Les Appendices A et B ne sont que pour information.

Le reste de cette section fait un résumé des étiquettes de langue, des gammes de langues et des descriptions d’attribut.

1.1	Étiquettes de langue

La Section 2 du BCP 47 [RFC3066] décrit le format des étiquettes de langage qui est utilisé dans LDAP. En bref, c’est une chaîne de lettres et tirets [ASCII]. Les exemples incluent "fr", "en-US" et "ja-JP". Les étiquettes de langage sont insensibles à la casse. C’est-à-dire que l’étiquette de langage "en-us" est la même que "EN-US".

La Section 2 du présent document détaille l’utilisation des étiquettes de langage dans LDAP.

1.2	Gammes de langage

Le paragraphe 2.5 du BCP 47 [RFC3066] décrit les gammes de langages. Les gammes de langages sont utilisées pour spécifier des ensembles d’étiquettes de langage.

Une gamme de langages correspond à une étiquette de langage si elle est exactement égale à l’étiquette, ou si elle est exactement égale à un préfixe de l’étiquette telle que le premier caractère suivant le préfixe soit "-". C’est-à-dire que la gamme de langages "de" correspond aux étiquettes de langage "de" et "de-CH" mais pas "den". La gamme de langages spéciale "*" correspond à toutes les étiquettes de langage.

Du fait des restrictions sur les dénominations d’option de description d’attribut dans LDAP, le présent document définit une syntaxe différente de gamme de langages. Cependant, la sémantique des gammes de langages dans LDAP est cohérente avec celle du BCP 47.

La Section 3 du présent document détaille les utilisations des gammes de langages dans LDAP.

1.3	Descriptions d’attribut

Ce paragraphe donne une vue d’ensemble des descriptions d’attribut dans LDAP. Les attributs LDAP et les descriptions d’attribut sont définies dans la [RFC2251].

Un attribut consiste en un type, un ensemble de zéro, une ou plusieurs options d’étiquetage associées, et un ensemble d’une ou plusieurs valeurs. Le type et les options sont combinés en une AttributeDescription (description d’attribut).

Les AttributeDescription peuvent aussi contenir des options qui ne font pas partie de l’attribut, mais indiquent une autre fonction (comme une assertion de gamme ou un codage de transfert).

Une AttributeDescription avec une ou plusieurs options d’étiquetage est un sous type direct de chaque AttributeDescription du même type avec toutes les options de l’étiquetage moins une. Si le type de l’AttributeDescription est un sous type direct d’un autre type, la AttributeDescription est alors aussi un sous type direct de la AttributeDescription qui consiste en le super type et toutes les options de l’étiquetage. C’est-à-dire, "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".

2.	Utilisation des étiquettes de langage dans LDAP

Cette section décrit comment les mises en œuvre de LDAP DOIVENT interpréter les étiquettes de langage en effectuant leurs opérations.

Les serveurs qui prennent en charge la mémorisation d’attributs avec les options d’étiquette de langage dans l’arborescence d’informations de répertoire (DIT, Directory Information Tree) DEVRAIENT permettre tous les types d’attribut qu’ils reconnaissent qui ont la chaîne de répertoire IA5, ou les autres syntaxes de chaîne textuelle qui ont les options d’étiquette de langage associées à elle. Les serveurs PEUVENT permettre que les options de langage soient associées à d’autres types d’attribut.

Les clients NE DEVRAIENT PAS supposer que les serveurs sont capables de mémoriser les attributs avec étiquettes de langage dans le répertoire.

Les mises en œuvre MNE DOIVENT PAS interpréter autrement la structure de l’étiquette lors de la comparaison de deux étiquettes, et DOIVENT les traiter simplement comme des chaînes de caractères. Les mises en œuvre DOIVENT permettre que toute chaîne arbitraire qui se conforme à la syntaxe définie dans le BCP 47 [RFC3066] soit utilisée comme étiquette de langage.

2.1	Options d’étiquette de langage

Une option d’étiquette de langage associe un langage naturel à des valeurs d’un attribut. Une description d’attribut peut contenir plusieurs options d’étiquette de langage. Une entrée peut contenir plusieurs attributs avec le même type d’attribut mais des combinaisons différentes d’options d’étiquette de langage (et d’autres).

Une option d’étiquette de langage se conforme à l’ABNF [RFC2234] suivant :

language-tag-option = "lang-" Language-Tag

où la production Language-Tag (étiquette de langage) est celle définie dans le BCP 47 [RFC3066]. Cette production et celles qu’elle importe de la [RFC2234] sont fournies ici comme rappel :
Language-Tag = Primary-subtag *( "-" Subtag )
Primary-subtag = 1*8ALPHA	; (sous étiquette principale)
Subtag = 1*8(ALPHA / DIGIT)
ALPHA = %x41-5A / %x61-7A	; A-Z / a-z
DIGIT = %x30-39 	; 0-9

Une option d’étiquette de langage est une option d’étiquetage. Une option d’étiquette de langage n’a pas d’effet sur la syntaxe des valeurs de l’attribut ni sur leur codage de transfert.

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

Note : Les deux dernières n’ont pas d’option d’étiquette de langage. L’option x-foobar est fictive et est utilisée pour les exemples.

2.2	Filtre de recherche

Si des options d’étiquette de langage sont présentes dans une AttributeDescription dans une assertion, alors pour chaque entrée au sein de cette portée, les valeurs de chaque attribut dont la AttributeDescription consiste en le même type d’attribut ou ses sous types et contient chacune des options présentées (et éventuellement d’autres) doivent correspondre.

Donc, par exemple, un filtre d’une correspondance pour égalité de type "name;lang-en-US" et une valeur d’assertion de "Billy Ray", contre l’entrée de répertoire suivante :

dn: SN=Ray,DC=example,DC=com
objectClass: person                            NE CORRESPOND PAS (mauvais type)
objectClass: extensibleObject            NE CORRESPOND PAS (mauvais type)
name;lang-en-US: Billy Ray              CORRESPOND
name;lang-en-US: Billy Bob              NE CORRESPOND PAS (mauvaise valeur)
CN;lang-en-US: Billy Ray                 CORRESPOND
CN;lang-en-US;x-foobar: Billy Ray  CORRESPOND
CN;lang-en;x-foobar: Billy Ray         NE CORRESPOND PAS (differing lang-)
CN;x-foobar: Billy Ray                      NE CORRESPOND PAS (pas de lang-)
name: Billy Ray                                  NE CORRESPOND PAS (pas de lang-)
SN;lang-en-GB;lang-en-US: Billy Ray CORRESPOND
SN: Ray                                               NE CORRESPOND PAS (pas de lang-, mauvaise valeur)

Noter que "CN" et "SN" sont des sous types de "name".

On note que fournir une option d’étiquette de langage dans un filtre de recherche AttributeDescription va filtrer les valeurs désirables lorsque l’étiquette ne correspond pas exactement. Par exemple, le filtre (name;lang-en=Billy Ray) NE correspond PAS à l’attribut "name;lang-en-US:  Billy Ray".

Si le serveur ne prend pas en charge la mémorisation des attributs avec l’option d’étiquette de langage dans la DIT, toute assertion qui inclut une option d’étiquette de langage ne va alors pas correspondre car c’est un type d’attribut non reconnu. Il ne sera pas retourné d’erreur à cause de cela ; une assertion de présence va s’évaluer à FAUX et toutes les autres assertions à Indéfini.

Si aucune option n’est spécifiée dans l’assertion, seuls le type d’attribut de base et la valeur de l’assertion doivent alors correspondre à la valeur du répertoire.

Donc, par exemple, un filtre d’une correspondance d’égalité de type "name" et de valeur d’assertion "Billy Ray", contre l’entrée de répertoire suivante :
dn: SN=Ray,DC=example,DC=com
objectClass: person   	NE CORRESPOND PAS (mauvais type)
objectClass: extensibleObject 	NE CORRESPOND PAS (mauvais type)
name;lang-en-US: Billy Ray  	CORRESPOND
name;lang-en-US: Billy Bob 	NE CORRESPOND PAS (mauvaise valeur)
CN;lang-en-US;x-foobar: Billy Ray	CORRESPOND
CN;lang-en;x-foobar: Billy Ray 	CORRESPOND
CN;x-foobar: Billy Ray 	CORRESPOND
name: Billy Ray   	CORRESPOND
SN;lang-en-GB;lang-en-US: Billy Ray 	CORRESPOND
SN: Ray  	NE CORRESPOND PAS (mauvaise valeur)

2.3	Attributs demandés dans une recherche

Les clients peuvent fournir l’option d’étiquette de langage dans chaque AttributeDescription dans la liste d’attributs demandée dans une demande de recherches.

Si l’option d’étiquette de langage est fournie dans une description d’attribut, seuls dans une entrée de répertoire sont alors à retourner les attributs dont les descriptions d’attribut ont le même type d’attribut ou ses sous types et contiennent chacune les options d’étiquette de langage présentées (et éventuellement d’autres). Donc si un client demande juste l’attribut "name;lang-en", le serveur va retourner "name;lang-en" et "CN;lang-en;lang-ja" mais pas "SN" ni "name;lang-fr".

Les clients peuvent fournir dans la liste d’attributs plusieurs AttributeDescription qui ont le même type d’attribut de base mais des options différentes. Par exemple, un client pourrait fournir à la fois "name;lang-en" et "name;lang-fr", et cela permettrait de retourner un attribut avec l’une et l’autre option d’étiquette de langage. Noter qu’il ne serait pas nécessaire de fournir à la fois "name" et "name;lang-en" car tous les sous types de nom vont correspondre à "name".

Si un serveur ne prend pas en charge la mémorisation des attributs avec option d’étiquette de langage dans la DIT, toutes les descriptions d’attribut dans la liste qui incluent l’option d’étiquette de langage sont alors à ignorer, tout comme si ils étaient des types d’attribut inconnus.

Si une demande est faite en spécifiant tous les attributs ou si un attribut est demandé sans fournir l’option d’étiquette de langage, toutes les valeurs d’attribut sans considération de leur option d’étiquette de langage sont alors retournées.

Par exemple, si le client demande un attribut "description", et si une entrée correspondante 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 va retourner :
description: software products
description;lang-en: software products
description;lang-de: Softwareprodukte

2.4	Compare

Les options d’étiquette de langage peuvent être présentes dans une AttributeDescription utilisée dans une demande compare AttributeValueAssertion (assertion de valeur d’attribut). Ceci est à traiter par les serveurs comme l’utilisation de l’option d’étiquette de langage dans un filtre de recherche avec une vérification d’égalité, comme décrit au paragraphe 2.2. Si il n’y a pas d’attribut dans l’entrée avec le même type d’attribut ou son sous type et qu’elle contient chacune des options d’étiquette de langage présentées (ou éventuellement d’autres) l’erreur noSuchAttributeType (il n’y a pas ce type d’attribut) sera retournée.

Donc, par exemple, une demande compare de type "name" et de valeur d’assertion "Johann", contre une entrée contenant les attributs suivants :
objectClass: top
objectClass: person
givenName;lang-de-DE: Johann
CN: Johann Sibelius
SN: Sibelius
causeraient le renvoi par le serveur de compareTrue.

Cependant, si le client produisait une demande compare de type "name;lang-de" et valeur d’assertion "Johann" contre l’entrée ci-dessus, la demande échouerait avec l’erreur noSuchAttributeType.

Si le serveur ne prend pas en charge la mémorisation d’attributs avec option d’étiquette de langage dans la DIT, toute comparaison qui inclut une option d’étiquette de langage va alors toujours échouer à localiser un attribut, et noSuchAttributeType sera retourné.

2.5	Opération Add

Les clients peuvent fournir des options de langage dans une AttributeDescription dans des attributs d’une nouvelle entrée à créer.

Un client peut fournir plusieurs attributs avec les mêmes type et valeur d’attribut, pour autant que chaque attribut ait un ensemble différent d’options d’étiquette de langage.

Par exemple, la demande suivante est valide :
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 de l’Université
houseIdentifier;lang-fr: 9e étage

Si un serveur ne prend pas en charge la mémorisation d’étiquette de langage avec des valeurs d’attribut dans la DIT, il DOIT alors traiter une AttributeDescription avec une option d’étiquette de langage comme un attribut non reconnu. Si le serveur interdit l’ajout des attributs non reconnus, il DOIT alors rejeter la demande d’ajout avec un code de résultat approprié.

2.6	Opération Modify

Un client peut fournir l’option d’étiquette de langage dans une AttributeDescription au titre d’un élément de modification dans l’opération modify.

Les types d’attribut et l’option d’étiquette de langage DOIVENT correspondre exactement aux valeurs mémorisées dans le répertoire. Par exemple, si la modification est un "delete" (supprimer), alors si les valeurs mémorisées à supprimer ont l’option d’étiquette de langage, cette option d’étiquette de langage DOIT être fournie dans l’opération modify, et si les valeurs mémorisées à supprimer n’ont pas d’option d’étiquette de langage, aucune option d’étiquette de langage n’est alors à fournir.

Si le serveur ne prend pas en charge la mémorisation d’étiquette de langage avec des valeurs d’attribut dans la DIT, il DOIT alors traiter une AttributeDescription avec une option d’étiquette de langage comme un attribut non reconnu, et DOIT refuser la demande avec un code de résultat approprié.

3.	Utilisation des gammes de langue dans LDAP

Depuis la publication de la RFC 2596, la nécessité d’un mécanisme permettant à un client de demander des attributs sur la base d’un ensemble d’options d’étiquette de langage dont les étiquettes commencent toutes par la même séquence de sous étiquettes de langage est devenu évidente.

Les AttributeDescription qui contiennent des options de gamme de langage sont destinées à être utilisées dans les assertions de valeur d’attribut, des listes d’attribut de recherche, et autres endroits où le client désire fournir une description d’attribut correspondant à une gamme d’étiquettes de langage associée aux attributs.

Une option gamme de langages se conforme à l’ABNF [RFC2234] suivant :

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

où la production Language-Tag est celle définie dans le BCP 47 [RFC3066]. Cette production et celles qu’elle importe de la [RFC2234] sont fournies au paragraphe 2.1 pour en faciliter la recherche.

Une option de gamme de langages correspond à une option d’étiquette de langage si l’option de gamme de langages moins le tiret en queue "-" correspond exactement à l’étiquette de langage ou si l’option gamme de langages (incluant le "-" en queue) correspond à un préfixe de l’option d’étiquette de langage. Note que l’option de gamme de langages "lang-" satisfait à toutes les options d’étiquette de langage.

Voici des exemples de AttributeDescription valides contenant l’option de gamme de langages :
givenName;lang-en-
CN;lang-
SN;lang-de-;lang-gem-
O;lang-x-;x-foobar

Une option de gamme de langages n’est pas une option d’étiquetage. Les attributs ne peuvent pas être mémorisés avec les options de gamme de langages. Toute tentative d’ajout ou mise à jour d’une description d’attribut avec une option de gamme de langages DEVRA être traitée comme un type d’attribut non défini et résulter en une erreur.

Une option de gamme de langages n’a pas d’effet sur le codage de transfert ni sur la syntaxe des valeurs de l’attribut.

Les serveurs DEVRAIENT prendre en charge l’assertion de gamme de langages pour tout type d’attribut dont ils permettent la mémorisation avec les étiquettes de langage.

3.1	Filtre de recherche

Si une option de gamme de langages est présente dans une AttributeDescription d’une assertion, alors pour chaque entrée dans sa portée sont à retourner les valeurs de chaque attribut dont la AttributeDescription consiste en le même type d’attribut ou ses sous types, et contient une option d’étiquette de langage correspondant à l’option de gamme de langages.

Donc, par exemple, un filtre d’une correspondance d’égalité de type "name;lang-en-" et de valeur d’assertion "Billy Ray", contre l’entrée de répertoire suivante :
dn: SN=Ray,DC=example,DC=com
objectClass: person	NE CORRESPOND PAS (mauvais type)
objectClass: extensibleObject	NE CORRESPOND PAS (mauvais type)
name;lang-en-US: Billy Ray 	CORRESPOND
name;lang-en-US: Billy Bob 	NE CORRESPOND PAS (mauvaise valeur)
CN;lang-en-US: Billy Ray   	CORRESPOND
CN;lang-en-US;x-foobar: Billy Ray  	CORRESPOND
CN;lang-en;x-foobar: Billy Ray  	CORRESPOND
CN;x-foobar: Billy Ray    	NE CORRESPOND PAS (pas de lang-)
name: Billy Ray               	NE CORRESPOND PAS (pas de lang-)
SN;lang-en-GB;lang-en-US: Billy Ray 	CORRESPOND
SN: Ray            	NE CORRESPOND PAS (pas de lang-, mauvaise valeur)

Noter que "CN" et "SN" sont des sous types de "name".

Si le serveur ne prend pas en charge la mémorisation des attributs avec l’option d’étiquette de langage dans la DIT, toute assertion qui comporte une option de gamme de langages ne va alors pas correspondre car elle est d’un type d’attribut non reconnu. Aucune erreur ne sera retournée à cause de cela ; un filtre de présence s’évaluera à FAUX et toutes les autres assertions à Indéfini.

3.2	Attributs demandés dans une recherche

Les clients peuvent fournir des options de gamme de langages dans chaque AttributeDescription dans la liste des attributs demandés dans une demande de recherche.

Si une option de gamme de langages est fournie dans une description d’attribut, seuls les attributs d’une entrée de répertoire dont la description d’attribut a le même type ou sous type d’attribut et une option d’étiquette de langage correspondant à l’option de gamme de langages fournie sont alors à retourner. Donc, si un client demande juste l’attribut "name;lang-en-", le serveur va retourner "name;lang-en-US" et "CN;lang-en;lang-ja" mais pas "SN" ni "name;lang-fr".

Les clients peuvent fournir dans la liste d’attributs plusieurs AttributeDescription qui ont le même type d’attribut de base mais des options différentes. Par exemple un client pourrait fournir à la fois "name;lang-en-" et "name;lang-fr-", et cela permettrait alors de retourner un attribut dont le type serait name ou un sous type de name et avec une option d’étiquette de langage satisfaisant à toute option de gamme de langages.

Si un serveur ne prend pas en charge la mémorisation des attributs avec l’option d’étiquette de langage dans la DIT, toute description d’attribut dans la liste qui comporte des options de gamme de langages sera à ignorer, tout comme si c’était des types d’attribut inconnus.

3.3	Compare

Les options de gamme de langages peuvent être présentes dans une AttributeDescription utilisée dans une demande compare AttributeValueAssertion. Cela doit être traité par les serveurs de la même façon que l’utilisation des options de gamme de langages dans un filtre de recherche avec une correspondance pour égalité, comme décrit au paragraphe 3.1. Si il n’y a pas d’attribut dans l’entrée avec le même sous type et une option d’étiquette de langage correspondante, l’erreur noSuchAttributeType sera retournée.

Donc, par exemple, une demande compare de type "name;lang-" et d’une valeur d’assertion de "Johann", contre l’entrée qui a les attributs suivants :
objectClass: top
objectClass: person
givenName;lang-de-DE: Johann
CN: Johann Sibelius
SN: Sibelius
va causer la réponse compareTrue (comparaison Vraie) du serveur. (Noter que l’option gamme de langages "lang-" satisfait toute option d’étiquette de langage.)

Cependant, si le client a produit une demande compare du type "name;lang-de" et de la valeur d’assertion "Sibelius" contre l’entrée ci-dessus, la demande va échouer avec l’erreur noSuchAttributeType.

Si le serveur ne prend pas en charge la mémorisation des attributs avec l’option d’étiquette de langage dans la DIT, toute comparaison qui comporte une option de gamme de langages va alors toujours échouer à localiser un attribut, et noSuchAttributeType sera retourné.

4.	Découverte de la prise en charge de l’option Langage

Un serveur DEVRAIT indiquer qu’il prend en charge la mémorisation des attributs avec l’option d’étiquette de langages dans la DIT en publiant 1.3.6.1.4.1.4203.1.5.4 comme valeur d’entrée spécifique d’un agent système de répertoire (DSE, DSA Specific Entry) racine.

Un serveur DEVRAIT indiquer qu’il prend en charge la correspondance de gamme de langages des attributs avec les options d’étiquette de langage mémorisées dans la DIT en publiant 1.3.6.1.4.1.4203.1.5.5 comme valeur de l’attribut "supportedFeatures" (caractéristiques prises en charge) [RFC3674] dans la DSE racine.

Un serveur PEUT restreindre l’utilisation de l’option d’étiquette de langages à un sous ensemble des types d’attribut qu’il reconnaît. Le présent document ne définit pas de mécanisme pour déterminer quel sous ensemble de types d’attribut peut être utilisé avec l’option d’étiquette de langage.

5.	Interopérabilité avec les mises en œuvre qui ne prennent pas en charge les extensions

Les mises en œuvre de la présente spécification devraient veiller à ce que leur utilisation de l’option d’étiquette de langage n’empêche pas le bon fonctionnement des mises en œuvre qui ne prennent pas en charge les étiquettes de langage.

Selon la RFC 2251, "une AttributeDescription avec une ou plusieurs options est traitée comme un sous type du type de l’attribut sans aucune option". Un serveur qui ne la prend pas en charge va traiter une AttributeDescription avec toute option d’étiquette de langage comme un type d’attribut non reconnu. Un client qui ne la prend pas en charge va traiter la AttributeDescription comme il le ferait de tout autre sous type inconnu. Normalement, les clients qui ne les prennent pas en charge ignorent simplement les sous types non reconnus (et les types d’attribut non reconnus) des attributs qu’ils demandent.

Pour assurer un fonctionnement approprié des clients qui ne les prennent pas en charge, les clients qui le font DEVRAIENT s’assurer que les entrées qu’ils remplissent avec des valeurs étiquetées sont aussi remplies avec des valeurs non étiquetées.

De plus, les clients qui prennent en charge les extensions DEVRAIENT être prêtes à traiter des entrées qui ne sont pas remplies avec des valeurs étiquetées.

6.	Considérations pour la sécurité

Les options d’étiquettes et de gammes de langage sont seulement utilisées pour indiquer la langue d’origine des valeurs et pour interroger le répertoire sur les valeurs qui satisfont aux besoins de langage de l’utilisateur. Ces options ne soulèvent aucun problème connu de sécurité spécifique. Cependant, le lecteur devrait examiner les questions générales de sécurité des répertoires détaillées dans la spécification technique de LDAP [RFC3377].

7.	Considérations relatives à l’IANA

L’enregistrement de ces mécanismes de protocole [RFC3383] a été complété par l’IANA.

Objet : Demande d’enregistrement de mécanisme du protocole LDAP
Identifiant d’objet : 1.3.6.1.4.1.4203.1.5.4
Description : Options d’étiquette de langage
Identifiant d’objet : 1.3.6.1.4.1.4203.1.5.5
Description : Options de gamme de langage
Adresse & mèl de la personne à contacter pour d’autres informations : Kurt Zeilenga <kurt@openldap.org>
Usage : caractéristique
Spécification : RFC 3866
Auteur/Contrôleur des changements : IESG
Commentaire : aucun

Ces OID ont été affectés [ASSIGN] par OpenLDAP Foundation, sous son allocation d’entreprise privée affectée par l’IANA [PRIVATE], pour être utilisés dans la présente spécification.

8.	Remerciements

Le présent document est une révision de la RFC 2596 par Mark Wahl et Tim Howes. La RFC 2596 a été produite par les groupes de travail ASID et LDAPEXT de l’IETF. Le présent document fait aussi des emprunts à un certain nombre de documents de l’IETF parmi lesquels le BCP 47 de H. Alvestrand.

9.	Références
9.1.	Références  normatives

[ASCII]	"Coded Character Set -- 7-bit American Standard Code for Information Interchange", ANSI X3.4-1986.

[RFC2119]	S. Bradner, "Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigence", BCP 14, mars 1997.

[RFC2234]	D. Crocker et P. Overell, "BNF augmenté pour les spécifications de syntaxe : ABNF", novembre 1997. (Obsolète, voir RFC5234)

[RFC2251]	M. Wahl, T. Howes et S. Kille, "Protocole léger d’accès à un répertoire (v3)", décembre 1997.

[RFC3066]	H. Alvestrand, "Étiquettes pour l'identification des langues", BCP 47, janvier 2001. (Obsolète,voir RFC5646.)

[RFC3377]	J. Hodges, R. Morgan, "Protocole léger d'accès à un répertoire (v3) : Spécification technique", septembre  2002. (Obsolète, voir RFC4510) (P.S.)

[RFC3674]	K. Zeilenga, "Dispositif de découverte dans le protocole léger d'accès à un répertoire (LDAP)", décembre  2003. (Obsolète, voir RFC4512) (P.S.)

9.2	Références pour information

[X.501]	Recommandation UIT-T X.501, "Annuaire -- Modèles", Union Internationale des Télécommunication –Secteur de la normalisation des télécommunications, Genève (1997).

[RFC3383]	K. Zeilenga, "Autorité d'allocation des numéros de l'Internet (IANA) : Considérations sur le protocole léger d'accès à un répertoire (LDAP)", septembre 2002. (Obsolète, voir RFC4520)

[ASSIGN]	OpenLDAP Foundation, "OpenLDAP OID Delegations", http://www.openldap.org/foundation/oid-delegate.txt. 

[PRIVATE]	IANA, "Private Enterprise Numbers", http://www.iana.org/assignments/enterprise-numbers .

Appendice A	Différences avec la RFC 2596

Le présent document ajoute la prise en charge des gammes de langage, fournit un mécanisme que peut utiliser un client pour découvrir si un serveur prend en charge les étiquettes et gammes de langage, et précise comment les attributs avec plusieurs étiquettes de langage doivent être traités. Le présent document est une réécriture significative de la RFC2596.

Appendice B	Différences avec X.500(1997)

La Recommandation UIT-T X.500(1997) [X.501] définit un mécanisme et des contextes différents des moyens de représenter les étiquettes de langage (codes). Cette Section résume les différences majeures de ces approches.

a)	Une opération X.500 qui a spécifié un code de langue sur une valeur correspond à une valeur dans le répertoire sans un code de langue.

b)	LDAP fait référence au BCP 47 [RFC3066], qui permet l’enregistrement par l’IANA de nouvelles étiquettes ainsi que d’étiquettes non enregistrées.

c)	LDAP prend en charge des gammes de langage (nouveau dans cette révision).

d)	LDAP ne permet pas d’étiquette de langage (ni de gammes) dans un nom distinctif.

e)	X.500 décrit les procédures d’administration de sous-schéma pour permettre d’associer les codes de langues à des types d’attributs particuliers.

Adresse de l’éditeur

Kurt D. Zeilenga
OpenLDAP Foundation
mél : Kurt@OpenLDAP.org 

Déclaration complète de droits de reproduction

Copyright (C) The Internet Society (2004). Le présent document est soumis aux droits, licences et restrictions contenus dans le BCP 78, et à www.rfc-editor.org, et sauf pour ce qui est mentionné ci-après, les auteurs conservent tous leurs droits.

Le présent document et les informations qui y sont contenues sont fournis sur une base "EN L’ÉTAT" et le contributeur, l’organisation qu’il ou elle représente ou qui le/la finance (s’il en est), la INTERNET SOCIETY et la INTERNET ENGINEERING TASK FORCE déclinent toutes garanties, exprimées ou implicites, y compris mais non limitées à toute garantie que l’utilisation des informations ci encloses ne violent aucun droit ou aucune garantie implicite de commercialisation ou d’aptitude à un objet particulier.

Propriété intellectuelle

L’IETF ne prend pas position sur la validité et la portée de tout droit de propriété intellectuelle ou autres droits qui pourraient être revendiqués au titre de la mise en œuvre ou l’utilisation de la technologie décrite dans le présent document ou sur la mesure dans laquelle toute licence sur de tels droits pourrait être ou n’être pas disponible ; pas plus qu’elle ne prétend avoir accompli aucun effort pour identifier de tels droits. Les informations sur les procédures de l’ISOC au sujet des droits dans les documents de l’ISOC figurent dans les BCP  78 et BCP 79.

Des copies des dépôts d’IPR faites au secrétariat de l’IETF et toutes assurances de disponibilité de licences, ou le résultat de tentatives faites pour obtenir une licence ou permission générale d’utilisation de tels droits de propriété par ceux qui mettent en œuvre ou utilisent la présente spécification peuvent être obtenues sur le répertoire en ligne des IPR de l’IETF à http://www.ietf.org/ipr .

L’IETF invite toute partie intéressée à porter son attention sur tous copyrights, licences ou applications de licence, ou autres droits de propriété qui pourraient couvrir les technologies qui peuvent être nécessaires pour mettre en œuvre la présente norme. Prière d’adresser les informations à l’IETF à ietf- ipr@ietf.org .

Le financement de la fonction d’édition des RFC est actuellement fourni par l’Internet Society.