1. はじめに
本文書では、Lightweight Directory Access Protocol (LDAP) [RFC4510] で使用される X.500 ディレクトリ情報モデル [X.501] について論じる。
ディレクトリとは、「ディレクトリサービスを提供するために協調する オープンシステムの集合」である [X.500]。ディレクトリに保持される情報は、 総称してディレクトリ情報ベース (Directory Information Base、DIB) と 呼ばれる。人間またはその他の実体であり得るディレクトリ利用者は、 クライアント (またはディレクトリ利用者エージェント (Directory User Agent、DUA)) を介してディレクトリにアクセスする。クライアントは ディレクトリ利用者に代わり、1 台以上のサーバー (またはディレクトリ システムエージェント (Directory System Agent、DSA)) と対話する。 サーバーは DIB の一部分を保持する。
DIB には、次の 2 種類の情報が含まれる。
1) 利用者情報 (たとえば、利用者によって提供および管理される情報)。
第 2 節では、利用者情報のモデルについて説明する。
2) 管理情報および運用情報 (たとえば、ディレクトリの管理および/または
運用に使用される情報)。第 3 節では、ディレクトリの管理情報および
運用情報のモデルについて説明する。
汎用ディレクトリ情報モデルと総称されるこれら 2 つのモデルは、情報が ディレクトリ内でどのように表現されるかを記述する。これらの汎用モデルは、 他の情報モデルの枠組みとなる。第 4 節ではサブスキーマ情報モデルと サブスキーマの発見について、第 5 節では DSA (サーバー) 情報モデルに ついて論じる。
その他の X.500 情報モデル (アクセス制御、分散知識、レプリケーション 知識の各情報モデルなど) も、LDAP で使用できるように適合させることが できる。これらのモデルを LDAP に適用する方法の規定は、今後の文書に 委ねる。
1.1. 他の LDAP 仕様との関係
本文書は LDAP 技術仕様 [RFC4510] の不可欠な一部であり、この技術仕様は、 以前に定義された LDAP 技術仕様 RFC 3377 を全面的に廃止する。
本文書は、RFC 2251 の 3.2 節および 3.4 節、ならびに 4 節および 6 節の 一部を廃止する。付録 A.1 に、これらの節に対する変更点を要約する。 RFC 2251 の残りの部分は、[RFC4511]、[RFC4513]、および [RFC4510] に よって廃止される。
本文書は、RFC 2252 の 4、5、および 7 節を廃止する。付録 A.2 に、 これらの節に対する変更点を要約する。RFC 2252 の残りの部分は [RFC4517] によって廃止される。
本文書は、RFC 2256 の 5.1、5.2、7.1、および 7.2 節を廃止する。 付録 A.3 に、これらの節に対する変更点を要約する。RFC 2256 の残りの 部分は、[RFC4519] および [RFC4517] によって廃止される。
本文書は RFC 3674 を全面的に廃止する。付録 A.4 に、RFC 3674 以降の 変更点を要約する。
1.2. X.501 との関係
本文書には、本プロトコルを説明するために必要な [X.501] の資料を、 適合化したものと適合化していないものの両方を含めている。これらの適合化 (および本文書におけるその他の相違点) は、本プロトコルにのみ適用される。
1.3. 表記規則
本文書におけるキーワード "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、 "SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、および "OPTIONAL" は、BCP 14 [RFC2119] の記述どおりに解釈されるものとする。
スキーマ定義は、LDAP 記述形式 (4.1 節で定義) を用いて提示する。ここで 提示する定義は、読みやすさのために整形 (行折り返し) されている。これらの 定義で参照されるマッチング規則および LDAP 構文は、[RFC4517] で規定される。
1.4. 共通の ABNF 生成規則
本文書の多くの構文は、拡張バッカス・ナウア記法 (Augmented Backus-Naur Form、ABNF) [RFC4234] を使用して記述されている。これらの構文 (および 他の文書で定義される多くの構文) は、次の共通生成規則に依存する。
keystring = leadkeychar *keychar
leadkeychar = ALPHA
keychar = ALPHA / DIGIT / HYPHEN
number = DIGIT / ( LDIGIT 1*DIGIT )
ALPHA = %x41-5A / %x61-7A ; "A"-"Z" / "a"-"z"
DIGIT = %x30 / LDIGIT ; "0"-"9"
LDIGIT = %x31-39 ; "1"-"9"
HEX = DIGIT / %x41-46 / %x61-66 ; "0"-"9" / "A"-"F" / "a"-"f"
SP = 1*SPACE ; one or more " "
WSP = 0*SPACE ; zero or more " "
NULL = %x00 ; null (0)
SPACE = %x20 ; space (" ")
DQUOTE = %x22 ; quote (""")
SHARP = %x23 ; octothorpe (or sharp sign) ("#")
DOLLAR = %x24 ; dollar sign ("$")
SQUOTE = %x27 ; single quote ("'")
LPAREN = %x28 ; left paren ("(")
RPAREN = %x29 ; right paren (")")
PLUS = %x2B ; plus sign ("+")
COMMA = %x2C ; comma (",")
HYPHEN = %x2D ; hyphen ("-")
DOT = %x2E ; period (".")
SEMI = %x3B ; semicolon (";")
LANGLE = %x3C ; left angle bracket ("<")
EQUALS = %x3D ; equals sign ("=")
RANGLE = %x3E ; right angle bracket (">")
ESC = %x5C ; backslash ("\")
USCORE = %x5F ; underscore ("_")
LCURLY = %x7B ; left curly brace "{"
RCURLY = %x7D ; right curly brace "}"
; Any UTF-8 [RFC3629] encoded Unicode [Unicode] character
UTF8 = UTF1 / UTFMB
UTFMB = UTF2 / UTF3 / UTF4
UTF0 = %x80-BF
UTF1 = %x00-7F
UTF2 = %xC2-DF UTF0
UTF3 = %xE0 %xA0-BF UTF0 / %xE1-EC 2(UTF0) /
%xED %x80-9F UTF0 / %xEE-EF 2(UTF0)
UTF4 = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
%xF4 %x80-8F 2(UTF0)
OCTET = %x00-FF ; Any octet (8-bit data unit)
オブジェクト識別子 (OID) [X.680] は、LDAP では次の ABNF に準拠する ドット区切りの 10 進数形式で表現される。
numericoid = number 1*( DOT number )
記述子 (descriptor) とも呼ばれる短い名前は、オブジェクト識別子の読みやすい 別名として使用される。短い名前では大文字と小文字が区別されず、次の ABNF に 準拠する。
descr = keystring
オブジェクト識別子と短い名前のどちらも指定できる場合は、次の生成規則を 使用する。
oid = descr / numericoid
使用範囲が、同種のオブジェクトを識別するオブジェクト識別子 (たとえば、
属性タイプ記述、マッチング規則記述、オブジェクトクラス記述) を参照する
短い名前に限定される場合は、一般に
実装は、上記の意味で曖昧に使用される短い名前 (記述子) を、認識不能として 扱うべきである (SHOULD)。
短い名前 (記述子) については、6.2 節でさらに論じる。