2. URL-Definition
Eine LDAP-URL beginnt mit dem Protokollpräfix "ldap" und wird durch die folgende Grammatik definiert, die der in [RFC4234] definierten ABNF-Notation folgt.
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 ("?")
Das Präfix "ldap" bezeichnet einen Eintrag oder Einträge, auf die vom LDAP-Server zugegriffen werden kann, der auf dem angegebenen Hostnamen unter der angegebenen Portnummer ausgeführt wird. Beachten Sie, dass der <host> literale IPv6-Adressen enthalten kann, wie in Abschnitt 3.2.2 von [RFC3986] angegeben.
Der <dn> ist ein LDAP Distinguished Name unter Verwendung des in [RFC4514] beschriebenen Zeichenfolgenformats. Er identifiziert das Basisobjekt der LDAP-Suche oder das Ziel einer Nicht-Suchoperation.
Das Konstrukt <attributes> wird verwendet, um anzugeben, welche Attribute aus dem Eintrag oder den Einträgen zurückgegeben werden sollen.
Das Konstrukt <scope> wird verwendet, um den Umfang der Suche anzugeben, die auf dem angegebenen LDAP-Server durchgeführt werden soll. Die zulässigen Bereiche sind "base" für eine Basisobjektsuche, "one" für eine Suche auf einer Ebene oder "sub" für eine Teilbaumsuche.
Der <filter> wird verwendet, um den Suchfilter anzugeben, der während der Suche auf Einträge innerhalb des angegebenen Bereichs angewendet werden soll. Er hat das in [RFC4515] angegebene Format.
Das Konstrukt <extensions> stellt der LDAP-URL einen Erweiterbarkeitsmechanismus zur Verfügung, der es ermöglicht, die Fähigkeiten der URL in Zukunft zu erweitern. Erweiterungen sind eine einfache kommagetrennte Liste von type=value-Paaren, wobei der Teil =value für Optionen, die ihn nicht erfordern, weggelassen werden KANN (MAY). Jedes type=value-Paar ist eine separate Erweiterung. Diese LDAP-URL-Erweiterungen stehen nicht unbedingt im Zusammenhang mit einem der LDAP-Erweiterungsmechanismen. Erweiterungen können vom Client, der die URL auflöst, unterstützt oder nicht unterstützt werden. Eine Erweiterung, der ein '!'-Zeichen (ASCII 0x21) vorangestellt ist, ist kritisch. Eine Erweiterung, der kein '!'-Zeichen vorangestellt ist, ist nicht kritisch.
Wenn eine LDAP-URL-Erweiterung implementiert ist (d. h., wenn die Implementierung sie versteht und verwenden kann), MUSS (MUST) die Implementierung sie verwenden. Wenn eine Erweiterung nicht implementiert ist und als kritisch markiert ist, DARF die Implementierung die URL NICHT (MUST NOT) verarbeiten. Wenn eine Erweiterung nicht implementiert ist und nicht als kritisch markiert ist, MUSS (MUST) die Implementierung die Erweiterung ignorieren.
Der Erweiterungstyp (<extype>) KANN (MAY) unter Verwendung der numerischen OID <numericoid>-Form (z. B. 1.2.3.4) oder der Deskriptor <descr>-Form (z. B. myLDAPURLExtension) angegeben werden. Die Verwendung der <descr>-Form SOLLTE (SHOULD) auf registrierte beschreibende Namen von Objektbezeichnern beschränkt sein. Siehe [RFC4520] für Registrierungsdetails und Verwendungsrichtlinien für beschreibende Namen.
In diesem Dokument sind keine LDAP-URL-Erweiterungen definiert. Andere Dokumente oder eine zukünftige Version dieses Dokuments KÖNNEN (MAY) eine oder mehrere Erweiterungen definieren.
2.1. Prozent-Codierung
Eine generierte LDAP-URL MUSS (MUST) nur aus dem eingeschränkten Satz von Zeichen bestehen, die in einer der folgenden drei in [RFC3986] definierten Produktionen enthalten sind:
<reserved>
<unreserved>
<pct-encoded>
Implementierungen SOLLTEN (SHOULD) andere gültige UTF-8-Zeichenfolgen [RFC3629] als Eingabe akzeptieren. Ein Oktett MUSS (MUST) in jeder der folgenden Situationen unter Verwendung des in Abschnitt 2.1 von [RFC3986] beschriebenen Prozent-Codierungsmechanismus codiert werden:
- Das Oktett befindet sich nicht in dem in Abschnitt 2.2 von [RFC3986] definierten reservierten Satz oder in dem in Abschnitt 2.3 von [RFC3986] definierten nicht reservierten Satz.
- Es ist das einzelne reservierte Zeichen '?' und kommt innerhalb eines
<dn>,<filter>oder eines anderen Elements einer LDAP-URL vor. - Es ist ein Kommazeichen ',', das innerhalb eines
<exvalue>vorkommt.
Beachten Sie, dass die Erweiterungskomponente der LDAP-URL vor der Anwendung des Prozent-Codierungsmechanismus ein oder mehrere Null- (Zero-) Bytes enthalten kann. Keine andere Komponente darf dies.