Aller au contenu principal

2. Définition de l'URL

Une URL LDAP commence par le préfixe de protocole "ldap" et est définie par la grammaire suivante, suivant la notation ABNF définie dans [RFC4234].

      ldapurl     = scheme COLON SLASH SLASH [host [COLON port]]
[SLASH dn [QUESTION [attributes]
[QUESTION [scope] [QUESTION [filter]
[QUESTION extensions]]]]]
; <host> and <port> are defined
; in Sections 3.2.2 and 3.2.3
; of [RFC3986].
; <filter> is from Section 3 of
; [RFC4515], subject to the
; provisions of the
; "Percent-Encoding" section
; below.

scheme = "ldap"

dn = distinguishedName ; From Section 3 of [RFC4514],
; subject to the provisions of
; the "Percent-Encoding"
; section below.

attributes = attrdesc *(COMMA attrdesc)
attrdesc = selector *(COMMA selector)
selector = attributeSelector ; From Section 4.5.1 of
; [RFC4511], subject to the
; provisions of the
; "Percent-Encoding" section
; below.

scope = "base" / "one" / "sub"
extensions = extension *(COMMA extension)
extension = [EXCLAMATION] extype [EQUALS exvalue]
extype = oid ; From section 1.4 of [RFC4512].

exvalue = LDAPString ; From section 4.1.2 of
; [RFC4511], subject to the
; provisions of the
; "Percent-Encoding" section
; below.

EXCLAMATION = %x21 ; exclamation mark ("!")
SLASH = %x2F ; forward slash ("/")
COLON = %x3A ; colon (":")
QUESTION = %x3F ; question mark ("?")

Le préfixe "ldap" indique une ou plusieurs entrées accessibles à partir du serveur LDAP exécuté sur le nom d'hôte donné au numéro de port donné. Notez que <host> peut contenir des adresses IPv6 littérales comme spécifié dans la section 3.2.2 de [RFC3986].

Le <dn> est un nom distinctif LDAP utilisant le format de chaîne décrit dans [RFC4514]. Il identifie l'objet de base de la recherche LDAP ou la cible d'une opération autre que la recherche.

La construction <attributes> est utilisée pour indiquer quels attributs doivent être retournés à partir de l'entrée ou des entrées.

La construction <scope> est utilisée pour spécifier la portée de la recherche à effectuer dans le serveur LDAP donné. Les portées autorisées sont "base" pour une recherche d'objet de base, "one" pour une recherche d'un niveau, ou "sub" pour une recherche de sous-arbre.

Le <filter> est utilisé pour spécifier le filtre de recherche à appliquer aux entrées dans la portée spécifiée pendant la recherche. Il a le format spécifié dans [RFC4515].

La construction <extensions> fournit à l'URL LDAP un mécanisme d'extensibilité, permettant d'étendre les capacités de l'URL à l'avenir. Les extensions sont une simple liste séparée par des virgules de paires type=valeur, où la partie =valeur PEUT être omise pour les options qui ne la nécessitent pas. Chaque paire type=valeur est une extension distincte. Ces extensions d'URL LDAP ne sont pas nécessairement liées aux mécanismes d'extension LDAP. Les extensions peuvent être prises en charge ou non par le client résolvant l'URL. Une extension préfixée par un caractère '!' (ASCII 0x21) est critique. Une extension non préfixée par un caractère '!' est non critique.

Si une extension d'URL LDAP est implémentée (c'est-à-dire si l'implémentation la comprend et est capable de l'utiliser), l'implémentation DOIT l'utiliser. Si une extension n'est pas implémentée et est marquée comme critique, l'implémentation NE DOIT PAS traiter l'URL. Si une extension n'est pas implémentée et n'est pas marquée comme critique, l'implémentation DOIT ignorer l'extension.

Le type d'extension (<extype>) PEUT être spécifié en utilisant la forme numérique OID <numericoid> (par exemple, 1.2.3.4) ou la forme descripteur <descr> (par exemple, myLDAPURLExtension). L'utilisation de la forme <descr> DEVRAIT être limitée aux noms descriptifs d'identificateurs d'objets enregistrés. Voir [RFC4520] pour les détails d'enregistrement et les directives d'utilisation des noms descriptifs.

Aucune extension d'URL LDAP n'est définie dans ce document. D'autres documents ou une future version de ce document PEUVENT définir une ou plusieurs extensions.

2.1. Encodage en pourcentage​

Une URL LDAP générée DOIT être constituée uniquement de l'ensemble restreint de caractères inclus dans l'une des trois productions suivantes définies dans [RFC3986] :

      <reserved>
<unreserved>
<pct-encoded>

Les implémentations DEVRAIENT accepter d'autres chaînes UTF-8 valides [RFC3629] en entrée. Un octet DOIT être encodé en utilisant le mécanisme d'encodage en pourcentage décrit dans la section 2.1 de [RFC3986] dans l'une de ces situations :

  • L'octet n'est pas dans l'ensemble réservé défini dans la section 2.2 de [RFC3986] ou dans l'ensemble non réservé défini dans la section 2.3 de [RFC3986].
  • C'est le caractère réservé unique '?' et il apparaît à l'intérieur d'un <dn>, <filter>, ou autre élément d'une URL LDAP.
  • C'est un caractère virgule ',' qui apparaît à l'intérieur d'une <exvalue>.

Notez qu'avant l'application du mécanisme d'encodage en pourcentage, le composant extensions de l'URL LDAP peut contenir un ou plusieurs octets nuls (zéro). Aucun autre composant ne le peut.