メインコンテンツまでスキップ

2. URL 定義

LDAP URL はプロトコルプレフィックス "ldap" で始まり、[RFC4234] で定義されている ABNF 表記に従って、以下の文法で定義されます。

      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 ("?")

"ldap" プレフィックスは、指定されたホスト名およびポート番号で実行されている LDAP サーバーからアクセス可能なエントリを示します。<host> には、[RFC3986] のセクション 3.2.2 で指定されているリテラル IPv6 アドレスが含まれる場合があることに注意してください。

<dn> は、[RFC4514] で記述されている文字列表現を使用した LDAP 識別名です。これは、LDAP 検索のベースオブジェクトまたは非検索操作のターゲットを識別します。

<attributes> 構造は、エントリから返される属性を示すために使用されます。

<scope> 構造は、指定された LDAP サーバーで実行する検索のスコープを指定するために使用されます。許可されるスコープは、ベースオブジェクト検索の場合は "base"、1 レベル検索の場合は "one"、サブツリー検索の場合は "sub" です。

<filter> は、検索中に指定されたスコープ内のエントリに適用する検索フィルタを指定するために使用されます。これには、[RFC4515] で指定されたフォーマットがあります。

<extensions> 構造は、LDAP URL に拡張性メカニズムを提供し、URL の機能を将来拡張できるようにします。拡張は、type=value ペアの単純なカンマ区切りリストであり、それを必要としないオプションの場合は =value 部分を省略できます (MAY)。各 type=value ペアは個別の拡張です。これらの LDAP URL 拡張は、必ずしも LDAP 拡張メカニズムに関連しているわけではありません。拡張は、URL を解決するクライアントによってサポートされている場合もあれば、サポートされていない場合もあります。'!' 文字 (ASCII 0x21) で始まる拡張は重要 (critical) です。'!' 文字で始まらない拡張は重要ではありません (non-critical)。

LDAP URL 拡張が実装されている場合 (つまり、実装がそれを理解し、使用できる場合)、実装はそれを使用しなければなりません (MUST)。拡張が実装されておらず、重要としてマークされている場合、実装はその URL を処理してはなりません (MUST NOT)。拡張が実装されておらず、重要としてマークされていない場合、実装はその拡張を無視しなければなりません (MUST)。

拡張タイプ (<extype>) は、数値 OID <numericoid> 形式 (例: 1.2.3.4) または記述子 <descr> 形式 (例: myLDAPURLExtension) を使用して指定できます (MAY)。<descr> 形式の使用は、登録されたオブジェクト識別子の記述名に制限されるべきです (SHOULD)。記述名の登録の詳細と使用ガイドラインについては、[RFC4520] を参照してください。

本文書では LDAP URL 拡張は定義されていません。他の文書または本文書の将来のバージョンで、1 つ以上の拡張が定義される場合があります (MAY)。

2.1. パーセントエンコーディング​

生成された LDAP URL は、[RFC3986] で定義されている以下の 3 つの生成規則のいずれかに含まれる制限された文字セットのみで構成されなければなりません (MUST)。

      <reserved>
<unreserved>
<pct-encoded>

実装は、入力として他の有効な UTF-8 文字列 [RFC3629] を受け入れるべきです (SHOULD)。以下のいずれかの状況では、[RFC3986] のセクション 2.1 で記述されているパーセントエンコーディングメカニズムを使用してオクテットをエンコードしなければなりません (MUST)。

  • オクテットが、[RFC3986] のセクション 2.2 で定義されている予約セット、または [RFC3986] のセクション 2.3 で定義されている非予約セットに含まれていない。
  • 単一の予約文字 '?' であり、<dn>、<filter>、または LDAP URL のその他の要素内に存在する。
  • <exvalue> 内に存在するカンマ文字 ',' である。

パーセントエンコーディングメカニズムが適用される前に、LDAP URL の拡張コンポーネントには 1 つ以上の null (ゼロ) バイトが含まれる場合があることに注意してください。他のコンポーネントには含まれません。