Aller au contenu principal

3. Syntaxes

Les définitions de syntaxe contraignent la structure des valeurs d'attribut stockées dans un annuaire LDAP et déterminent la représentation des valeurs d'attribut et d'assertion transférées dans le protocole LDAP.

Les syntaxes requises pour le fonctionnement de l'annuaire ou qui sont couramment utilisées sont spécifiées dans cette section. Les serveurs DEVRAIENT reconnaître toutes les syntaxes répertoriées dans ce document, mais ne sont pas tenus de les prendre en charge autrement, et PEUVENT reconnaître ou prendre en charge d'autres syntaxes. Cependant, la définition de syntaxes arbitraires supplémentaires est découragée car elle entravera l'interopérabilité. Les implémentations client et serveur n'ont généralement pas la capacité de reconnaître dynamiquement de nouvelles syntaxes.

3.1. Considérations générales

La description de chaque syntaxe spécifie comment les valeurs d'attribut ou d'assertion conformes à la syntaxe doivent être représentées lors de leur transfert dans le protocole LDAP [RFC4511]. Cette représentation est appelée codage spécifique à LDAP pour la distinguer des autres méthodes de codage des valeurs d'attribut (par exemple, le codage des règles de codage de base (BER) [BER] utilisé par les annuaires X.500 [X.500]).

Le codage spécifique à LDAP d'une syntaxe d'attribut donnée produit toujours des valeurs alignées sur des octets. Dans la plus grande mesure possible, les règles de codage pour les syntaxes LDAP devraient produire des chaînes de caractères pouvant être affichées avec peu ou pas de traduction par les clients implémentant LDAP. Cependant, les clients NE DOIVENT PAS supposer que le codage spécifique à LDAP d'une valeur d'une syntaxe non reconnue est une chaîne de caractères lisible par l'homme. Il existe quelques cas (par exemple, la syntaxe JPEG) où il n'est pas raisonnable de produire une représentation lisible par l'homme.

Chaque syntaxe LDAP est identifiée de manière unique par un identifiant d'objet [ASN.1] représenté au format décimal pointé (les noms descriptifs courts ne sont pas définis pour les syntaxes). Ces identifiants d'objet ne sont pas destinés à être affichés aux utilisateurs. Les identifiants d'objet pour les syntaxes définies dans ce document sont résumés à l'annexe A.

Une limite supérieure minimale suggérée sur le nombre de caractères dans une valeur d'attribut avec une syntaxe basée sur des chaînes, ou le nombre d'octets dans une valeur pour toutes les autres syntaxes, PEUT être indiquée en ajoutant la limite entre accolades après l'OBJECT IDENTIFIER de la syntaxe dans une définition de type d'attribut (voir la règle <noidlen> dans [RFC4512]). Une telle limite n'est pas considérée comme faisant partie de l'identifiant de syntaxe.

Par exemple, "1.3.6.1.4.1.1466.115.121.1.15{64}" dans une définition d'attribut suggère que le serveur d'annuaire autorisera une valeur de l'attribut allant jusqu'à 64 caractères, bien qu'il puisse autoriser des chaînes de caractères plus longues. Notez qu'un seul caractère de la syntaxe Directory String peut être codé sur plus d'un octet, car UTF-8 [RFC3629] est un codage à longueur variable. Par conséquent, une chaîne de 64 caractères peut avoir une longueur supérieure à 64 octets.

3.2. Définitions communes

Les règles ABNF suivantes sont utilisées dans un certain nombre de définitions de syntaxe à la section 3.3.

PrintableCharacter = ALPHA / DIGIT / SQUOTE / LPAREN / RPAREN /
PLUS / COMMA / HYPHEN / DOT / EQUALS /
SLASH / COLON / QUESTION / SPACE
PrintableString = 1*PrintableCharacter
IA5String = *(%x00-7F)
SLASH = %x2F ; barre oblique ("/")
COLON = %x3A ; deux-points (":")
QUESTION = %x3F ; point d'interrogation ("?")

Les règles <ALPHA>, <DIGIT>, <SQUOTE>, <LPAREN>, <RPAREN>, <PLUS>, <COMMA>, <HYPHEN>, <DOT>, <EQUALS>, et <SPACE> sont définies dans la [RFC4512].