1. 引言
本文档讨论轻量级目录访问协议 (LDAP) [RFC4510] 所使用的 X.500 目录 信息模型 [X.501].
目录是"一组为提供目录服务而相互协作的开放系统" [X.500]. 目录所保存的 信息统称为目录信息库 (Directory Information Base, DIB). 目录用户可以是 人员或其他实体, 其通过客户端 (或目录用户代理 (Directory User Agent, DUA)) 访问目录. 客户端代表目录用户与一台或多台服务器 (或目录系统代理 (Directory System Agent, DSA)) 交互. 每台服务器保存 DIB 的一个片段.
DIB 包含两类信息:
1) 用户信息 (例如, 由用户提供和管理的信息). 第 2 节描述用户信息
模型.
2) 管理信息与操作信息 (例如, 用于管理和/或运行目录的信息). 第 3 节
描述目录管理信息与操作信息模型.
这两个模型称为通用目录信息模型, 用于描述信息在目录中的表示方式. 这些通用模型为其他信息模型提供框架. 第 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)
对象标识符 (object identifier, OID) [X.680] 在 LDAP 中使用符合下列 ABNF 的点分十进制格式表示:
numericoid = number 1*( DOT number )
短名称也称为描述符 (descriptor), 用作对象标识符的可读性更高的别名. 短名称不区分大小写, 并符合下列 ABNF:
descr = keystring
当既可以指定对象标识符也可以指定短名称时, 使用下列产生式:
oid = descr / numericoid
当用法仅限于指代对象标识符的短名称, 且这些对象标识符标识同类对象
(例如属性类型描述, 匹配规则描述, 对象类描述) 时, 通常首选
实现对于使用方式存在歧义 (如上文所述) 的短名称 (描述符), SHOULD 将其视为无法识别.
第 6.2 节进一步讨论短名称 (描述符).