跳到主要内容

RFC 4512 - LDAP: 目录信息模型

网络工作组 K. Zeilenga 征求意见稿: 4512 OpenLDAP 基金会 废止: 2251, 2252, 2256, 3674 2006 年 6 月 类别: 标准跟踪

             轻量级目录访问协议 (LDAP):
目录信息模型

本备忘录的状态

本文档为 Internet 社区规定了一项 Internet 标准跟踪协议, 并征求讨论 与改进建议. 有关本协议的标准化阶段和状态, 请参阅最新版的 "Internet Official Protocol Standards" (STD 1). 本备忘录的分发不受限制.

版权声明

版权所有 (C) The Internet Society (2006).

摘要

轻量级目录访问协议 (Lightweight Directory Access Protocol, LDAP) 是一种 Internet 协议, 用于访问依照 X.500 数据模型和服务模型运作的分布式目录 服务. 本文档描述 LDAP 所使用的 X.500 目录信息模型 (Directory Information Models).

目录

  1. 引言 ..........................................................3 1.1. 与其他 LDAP 规范的关系 .....................................3 1.2. 与 X.501 的关系 ............................................4 1.3. 约定 .......................................................4 1.4. 公共 ABNF 产生式 ...........................................4

  2. 目录用户信息模型 ...............................................6 2.1. 目录信息树 .................................................7 2.2. 条目的结构 .................................................7 2.3. 条目的命名 .................................................8 2.4. 对象类 .....................................................9 2.5. 属性描述 ..................................................12 2.6. 别名条目 ..................................................16

  3. 目录管理信息与操作信息 ........................................17 3.1. 子树 ......................................................17 3.2. 子条目 ....................................................18 3.3. 'objectClass' 属性 .........................................18 3.4. 操作属性 ..................................................19

  4. 目录模式 ......................................................22 4.1. 模式定义 ..................................................23 4.2. 子模式子条目 ..............................................32 4.3. 'extensibleObject' 对象类 ..................................35 4.4. 子模式发现 ................................................35

  5. DSA (服务器) 信息模型 .........................................36 5.1. 服务器特定的数据要求 ......................................36

  6. 其他考虑事项 ..................................................40 6.1. 用户信息的保留 ............................................40 6.2. 短名称 ....................................................41 6.3. 缓存和影子复制 ............................................41

  7. 实现指南 ......................................................42 7.1. 服务器指南 ................................................42 7.2. 客户端指南 ................................................42

  8. 安全考虑事项 ..................................................43

  9. IANA 考虑事项 .................................................43

  10. 致谢 .........................................................44

  11. 规范性参考文献 ...............................................45 附录 A. 变更 .....................................................47 A.1. 相对于 RFC 2251 的变更 .....................................47 A.2. 相对于 RFC 2252 的变更 .....................................49 A.3. 相对于 RFC 2256 的变更 .....................................50 A.4. 相对于 RFC 3674 的变更 .....................................51

  12. 引言

本文档讨论轻量级目录访问协议 (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 节进一步讨论短名称 (描述符).

  1. 目录用户信息模型

如 [X.501] 所述:

  目录的目的是保存关于某个"世界"中相关对象 (object) 的信息, 并提供
对这些信息的访问. 对象可以是任何可标识 (可命名) 的事物.

对象类 (object class) 是具有某些共同特征的一组已标识的对象或可设想
对象. 每个对象至少属于一个类. 一个对象类可以是其他对象类的子类,
在这种情况下, 前一个类 (即子类) 的成员也被视为后一个类 (即超类)
的成员. 子类还可以有子类, 如此类推, 深度不受限制.

目录条目 (directory entry) 是一个具名的信息集合, 是目录所保存信息的 基本单位. 目录条目有多种类型.

对象条目 (object entry) 表示某个特定对象. 别名条目 (alias entry) 提供 替代名称. 子条目 (subentry) 保存管理和/或操作信息.

表示目录信息库 (Directory Information Base, DIB) 的条目集合按层次组织 成树状结构, 称为目录信息树 (Directory Information Tree, DIT).

第 2.1 节描述目录信息树. 第 2.2 节讨论条目的结构. 第 2.3 节讨论条目的命名.

第 2.4 节讨论对象类. 第 2.5 节讨论属性描述. 第 2.6 节讨论别名条目.

2.1. 目录信息树

如上所述, DIB 由按层次组织成树状结构的条目集合组成, 该结构称为目录 信息树 (DIT); 更具体地说, 它是一棵以条目为顶点的树.

顶点之间的边定义条目之间的关系. 如果存在从 X 到 Y 的边, 则 X 处的 条目是 Y 的直接上级, 而 Y 是 X 的直接下级. 一个条目的上级包括该条目 的直接上级及其所有上级. 一个条目的下级包括其所有直接下级以及这些 直接下级的下级.

类似地, 对象条目之间的上级/下级关系可用于推导它们所表示对象之间的 关系.DIT 结构规则可用于管控对象之间的关系.

注: 条目的直接上级也称为该条目的父条目, 条目的直接下级也称为该条目 的子条目. 具有同一父条目的条目称为兄弟条目.

2.2. 条目的结构

一个条目由一组属性组成, 这些属性保存有关该条目所表示对象的信息. 一些属性表示用户信息, 称为用户属性 (user attribute). 另一些属性表示 操作和/或管理信息, 称为操作属性 (operational attribute).

一个属性由属性描述 (一个类型和零个或多个选项) 以及一个或多个关联值 组成. 通常使用属性描述来指称属性. 例如, 'givenName' 属性由属性描述 'givenName' ('givenName' 属性类型 [RFC4519] 和零个选项) 以及一个或多个 关联值组成.

属性类型规定该属性能否具有多个值, 用于构造和比较该属性值的语法和 匹配规则, 以及其他功能. 选项表示子类型和其他功能.

属性值符合为该属性类型定义的语法.

一个属性的任意两个值不得等价. 当且仅当两个值按照该属性类型的相等 匹配规则能够匹配时, 才认为它们等价. 或者, 如果属性类型未定义相等 匹配规则, 则当且仅当两个值完全相同时, 才认为它们等价.(其他限制见 2.5.1 节.)

例如, 'givenName' 属性可以有多个值, 这些值必须是目录字符串 (Directory String), 并且不区分大小写.'givenName' 属性不能同时保存 "John" 和 "JOHN", 因为按照该属性类型的相等匹配规则, 这两个值等价.

此外, 属性不得具有与其自身不等价的值. 例如, 'givenName' 属性不能将 包含替换字符 (REPLACEMENT CHARACTER, U+FFFD) 码位的目录字符串作为值, 因为按照该属性的相等匹配规则, 涉及该目录字符串的匹配结果为未定义 (Undefined).

当某个属性用于命名条目时, 在构成相对可分辨名称 (Relative Distinguished Name) 时只使用该属性的一个且仅一个值. 该值称为可分辨值 (distinguished value).

2.3. 条目的命名

2.3.1. 相对可分辨名称

每个条目都相对于其直接上级命名. 该相对名称称为相对可分辨名称 (Relative Distinguished Name, RDN) [X.501], 由一个或多个无序的属性值 断言 (attribute value assertion, AVA) 构成; 每个 AVA 包含一个选项数为 零的属性描述和一个属性值. 选择这些 AVA, 使其与条目的属性值 (每个值 均为可分辨值) 相匹配.

一个条目的相对可分辨名称在该条目直接上级的所有直接下级中必须唯一 (即在所有兄弟条目中唯一).

以下是 RDN 字符串表示形式的示例 [RFC4514]:

  UID=12345
OU=Engineering
CN=Kurt Zeilenga+L=Redwood Shores

最后一个是多值 RDN 的示例, 即由多个 AVA 构成的 RDN.

2.3.2. 可分辨名称

条目的完全限定名称称为其可分辨名称 (Distinguished Name, DN) [X.501], 它是该条目的 RDN 与其直接上级 DN 的串接. 可分辨名称明确且无歧义地 指向树中的一个条目. 以下是 DN 字符串表示形式的示例 [RFC4514]:

  [email protected],DC=example,DC=com
CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US

2.3.3. 别名

别名 (alias), 即别名名称 (alias name), 是"通过使用别名条目为对象提供 的名称" [X.501]. 第 2.6 节描述别名条目.

2.4. 对象类

对象类是"具有某些共同特征的一组已标识对象 (或可设想对象)" [X.501].

如 [X.501] 中所定义:

  对象类在目录中用于多种目的:

- 描述对象及与这些对象对应的条目, 并对其进行分类;

- 在适当时控制目录的运行;

- 与 DIT 结构规则规范配合, 约束条目在 DIT 中的位置;

- 与 DIT 内容规则规范配合, 约束条目中包含的属性;

- 标识由适当管理机构与特定策略相关联的条目类别.

一个对象类 (子类) 可派生自另一个对象类 (其直接超类), 后者本身又可
派生自更通用的对象类. 对于结构对象类, 此过程止于最通用的对象类
'top' (定义见第 2.4.1 节). 从某个对象类向上直至其最高层对象类的有序
超类集合称为该对象类的超类链 (superclass chain).

一个对象类可派生自两个或更多直接超类 (不属于同一超类链的超类).
子类化的这一特性称为多重继承 (multiple inheritance).

每个对象类都标识属于该类的条目中要求存在的属性集合, 以及允许存在的 属性集合. 由于某个类的条目必须满足其所属每个类的要求, 因此可以说, 对象类从其超类继承允许属性集合和要求属性集合. 子类可将其超类允许的 属性标识为要求属性. 如果某个属性同时属于两个集合, 则要求存在该属性.

每个对象类均被定义为以下三种对象类之一: 抽象 (Abstract), 结构化 (Structural) 或辅助 (Auxiliary).

每个对象类由对象标识符 (object identifier, OID) 标识, 并可选地具有一个 或多个短名称 (描述符).

2.4.1. 抽象对象类

顾名思义, 抽象对象类提供一组基础特征, 其他对象类可据此定义并从中 继承. 除非条目属于继承自该抽象类的结构化类或辅助类, 否则该条目不能 属于抽象对象类.

抽象对象类不能派生自结构对象类或辅助对象类.

所有结构对象类都直接或间接派生自 'top' 抽象对象类. 辅助对象类不一定 派生自 'top'.

以下是 'top' 对象类的对象类定义 (见第 4.1.1 节):

  ( 2.5.6.0 NAME 'top' ABSTRACT MUST objectClass )

所有条目都属于 'top' 抽象对象类.

2.4.2. 结构对象类

如 [X.501] 所述:

  为用于 DIT 的结构规范而定义的对象类称为结构对象类. 结构对象类
用于定义合规条目所表示对象的名称结构.

一个对象条目或别名条目恰好由一条结构对象类超类链表征, 该超类链
以一个结构对象类作为最下层对象类. 这个结构对象类称为该条目的
结构对象类.

结构对象类与相关条目之间具有如下关系:

- 符合某个结构对象类的条目应表示受该对象类约束的现实世界对象;

- DIT 结构规则只引用结构对象类; 条目的结构对象类用于规定该
条目在 DIT 中的位置;

- 条目的结构对象类与相关 DIT 内容规则共同用于控制条目的内容.

不得更改条目的结构对象类.

每个结构对象类都是 'top' 抽象对象类的直接或间接子类.

结构对象类不能以辅助对象类为子类化基础.

每个条目既属于其结构对象类, 也属于该结构对象类超类链中的所有类.

2.4.3. 辅助对象类

辅助对象类用于扩充条目的特征. 它们通常用于扩充要求和允许在条目中 存在的属性集合. 它们可用于描述条目或条目类别.

辅助对象类不能以结构对象类为子类化基础.

一个条目可以属于与该条目结构对象类关联的 DIT 内容规则所允许的辅助 对象类集合的任意子集. 如果没有 DIT 内容规则与该条目的结构对象类 关联, 则该条目不能属于任何辅助对象类.

条目所属的辅助对象类集合可随时间变化. 2.5. 属性描述 (Attribute Descriptions)

属性描述由一个属性类型 (见第 2.5.1 节) 和一个包含零个或多个 属性选项 (见第 2.5.2 节) 的集合组成.

属性描述由以下 ABNF 表示:

  attributedescription = attributetype options
attributetype = oid
options = *( SEMI option )
option = 1*keychar

其中, 标识属性类型, 每个

有效属性描述的示例:

  2.5.4.0
cn;lang-de;lang-en
owner

对于属性类型无法识别的属性描述, 应将其视为无法识别. 对于包含无法 识别属性选项的属性描述, 服务器必须 (SHALL) 将其视为无法识别. 客户端可以 (MAY) 将无法识别的属性选项视为标记选项 (tagging option, 见第 2.5.2.1 节).

一个条目的所有属性都必须具有互不相同的属性描述.

2.5.1. 属性类型 (Attribute Types)

属性类型规定属性能否具有多个值, 规定用于构造和比较该属性值的语法与 匹配规则, 还规定其他功能.

如果没有为属性类型指定相等匹配:

  - 该类型的属性不能用于命名;
- 添加属性 (或替换全部值) 时, 任意两个值都不得等价 (见第 2.2 节);
- 多值属性中的单个值不得独立添加或删除;
- 无法使用这种类型的值执行属性值断言 (例如搜索过滤器中的匹配
和比较).

否则, 应使用指定的相等匹配规则来求值与该属性类型有关的属性值断言. 指定的相等规则应具备传递性和交换性.

属性类型指明属性是用户属性还是操作属性. 如果是操作属性, 属性类型还 指明其操作用途以及用户能否修改该属性. 第 3.4 节讨论操作属性.

一个属性类型 (子类型) 可以派生自更通用的属性类型 (直接超类型). 以下限制适用于子类型化:

  - 子类型必须与其直接超类型具有相同的用途,
- 子类型的语法必须与其超类型的语法相同, 或者是后者的细化, 并且
- 如果其超类型是集合属性 (collective), 子类型也必须是集合属性
[RFC3671].

如果一个属性描述仅由某个子类型组成且不含选项, 则称它是另一个属性 描述的直接描述子类型 (direct description subtype); 后者仅由该子类型 的直接超类型组成且不含选项.

每个属性类型均由一个对象标识符 (Object Identifier, OID) 标识, 还可以 由一个或多个短名称 (描述符) 标识.

2.5.2. 属性选项 (Attribute Options)

属性描述选项有多种类别. LDAP 技术规范详细定义了其中一种: 标记选项.

并非所有选项都能与目录中保存的属性关联. 标记选项可以与其关联.

并非所有选项都能与所有属性类型结合使用. 遇到这种情况时, 应将属性 描述视为无法识别.

对于包含互斥选项的属性描述, 应将其视为无法识别. 例如, 如果 "x-foo" 与 "x-bar" 互斥, 则应将 "cn;x-bar;x-foo" 视为无法识别.

未来的文档可以规定其他类别的选项. 这些文档必须详细说明其定义的新 类别选项与标记选项之间的关系. 特别是, 这些文档必须详细说明新类别的 选项能否与目录中保存的属性关联, 新类别的选项如何影响属性值的传输, 以及如何在属性描述层次结构中处理新类别的选项.

选项表示为简短且不区分大小写的文本字符串, 并符合本文档第 2.5 节中 定义的

BCP 64, RFC 4520 [RFC4520] 详细规定了选项的注册过程.

2.5.2.1. 标记选项 (Tagging Options)

目录中保存的属性可以具有包含任意数量标记选项的属性描述. 标记选项 之间绝不互斥.

一个具有 N 个标记选项的属性描述, 是所有具有相同属性类型且只缺少这 N 个选项之一的属性描述的直接 (描述) 子类型. 如果属性类型具有超类型, 则该属性描述也是由该超类型和这 N 个标记选项组成的属性描述的直接 (描述) 子类型. 也就是说, 'cn;lang-de;lang-en' 是 'cn;lang-de', 'cn;lang-en' 和 'name;lang-de;lang-en' 的直接 (描述) 子类型 ('cn' 是 'name' 的子类型; 两者均在 [RFC4519] 中定义).

2.5.3. 属性描述层次结构 (Attribute Description Hierarchies)

根据属性类型的子类型化 (如第 2.5.1 节所述) 或属性标记选项的子类型化 (如第 2.5.2.1 节所述), 一个属性描述可以是零个或多个其他属性描述的 直接子类型. 这些子类型关系用于形成属性描述和属性的层次结构.

以下内容改编自 [X.501]:

  属性层次结构允许以不同粒度访问 DIB. 实现方式是: 既可以使用属性的
特定属性描述 (对属性的直接引用), 也可以使用更通用的属性描述
(间接引用) 来访问属性的值分量.

可以把语义相关的属性置于层次关系中, 其中更专门化的属性从属于更
通用的属性. 引用较通用的属性描述, 可以更容易地搜索或检索属性及其
值; 以这种方式指定的过滤器项既针对被引用的描述求值, 也针对更专门
化的描述求值.

如果选择在搜索结果中返回下级的专门化描述, 则应在其可用时返回这些
描述. 如果选择在搜索结果中返回较通用的描述, 则应在通用描述和专门
化描述可用时同时返回两者. 属性值始终应作为其自身属性描述的值返回.

对用户修改条目内容而言, 属性层次结构中的所有属性描述均被视为彼此
不同且互不相关的描述.

存储在对象条目或别名条目中的属性值只属于一个精确的属性描述. 最初
将该值添加到条目时会指明此描述.

为了管理条目的子模式, 如果条目包含某个属性描述的值, 并且该描述所属 属性层次结构中的属性类型与必需属性的类型相同, 则要求某属性为必需的 规范即得到满足. 也就是说, 'name' 或 'name;x-tag-option' 可以满足 "MUST name" 规范, 但 'CN' 或 'CN;x-tag-option' 不能满足该规范 (即使 'CN' 是 'name' 的子类型). 同样, 条目可以包含某个属性描述的值, 前提 是该描述所属属性层次结构中的属性类型已明确列入该条目所属对象类的 定义, 或者为适用于该条目的 DIT 内容规则所允许. 也就是说, "MAY name" (或 "MUST name") 允许 'name' 和 'name;x-tag-option', 但 "MAY name" (或 "MUST name") 不允许 'CN' 和 'CN;x-tag-option'.

对于其他策略管理, 除非特定管理模型的规范另有说明, 属性层次结构中的 所有属性描述均被视为彼此不同且互不相关的描述.

2.6. 别名条目 (Alias Entries)

以下内容改编自 [X.501]:

  对象的别名或别名名称, 是通过使用别名条目为对象或对象条目提供的
替代名称.

每个别名条目的 'aliasedObjectName' 属性 (在 X.500 中称为
'aliasedEntryName' 属性) 都包含某个对象的名称. 因此, 别名条目的
可分辨名称也是该对象的名称.

注 - 'aliasedObjectName' 中的名称称为该别名所指向的名称.
它不必是任何条目的可分辨名称.

将别名名称转换为对象名称称为 (别名) 解引用 (dereferencing), 其过程
是在声称的名称中找到别名名称时, 系统地以相应
'aliasedObjectName' 属性的值替换这些别名名称. 此过程可能需要检查
多个别名条目.

DIT 中的任一特定条目都可以有零个或多个别名名称. 因此, 多个别名
条目可以指向同一个条目. 别名条目可以指向非叶条目, 也可以指向另一
个别名条目.

别名条目不得有下级条目, 因而别名条目始终是叶条目.

每个别名条目都必须属于 'alias' 对象类.

具有 'alias' 对象类的条目还必须属于允许存在适当命名属性的一个或多个 对象类, 或者受允许存在这些属性的 DIT 内容规则管辖.

示例:

  dn: cn=bar,dc=example,dc=com
objectClass: top
objectClass: alias
objectClass: extensibleObject





cn: bar
aliasedObjectName: cn=foo,dc=example,dc=com

2.6.1. 'alias' 对象类

别名条目属于 'alias' 对象类.

  ( 2.5.6.1 NAME 'alias'
SUP top STRUCTURAL
MUST aliasedObjectName )

2.6.2. 'aliasedObjectName' 属性类型

'aliasedObjectName' 属性保存别名所指向条目的名称. 在 X.500 中, 'aliasedObjectName' 属性称为 'aliasedEntryName' 属性.

  ( 2.5.4.1 NAME 'aliasedObjectName'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE )

'distinguishedNameMatch' 匹配规则和 DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) 语法在 [RFC4517] 中定义. 3. 目录管理和操作信息

本节讨论 X.500 目录管理和操作信息模型 [X.501] 的若干方面.LDAP 实现 MAY 支持该模型的其他方面.

3.1. 子树

如 [X.501] 中所定义:

  子树 (subtree) 是位于一棵树的各顶点上的对象条目和别名条目集合.
子树不包含子条目.subtree 中的前缀 sub 强调该树的基点 (或根顶点)
通常从属于 DIT 的根.

子树起始于某个顶点, 并向下延伸至某个可标识的下边界, 也可能一直
延伸到叶节点. 子树总是在某个上下文中定义, 该上下文隐式地限定子树
的边界. 例如, 定义复制区域的子树, 其顶点和下边界由命名上下文限定.

3.2. 子条目

子条目是"一种目录已知的特殊条目, 用于保存与子树或子树细化相关联的 信息" [X.501]. 子条目在目录中用于保存 [X.501] 所定义的管理和操作用途 信息. 其在 LDAP 中的用法详见 [RFC3672].

本规范中的术语"(子)条目"表示: 实现 X.500(93) 模型的服务器按照 [RFC3672] 所述的 X.500(93) 使用子条目; 其他服务器则使用属于通常与该 子条目配合使用的适当辅助类的对象条目 (例如, 对子模式子条目使用 'subschema'), 以模拟子条目. 该对象条目的 RDN SHALL 由 'cn' (commonName) 属性 [RFC4519] 的一个值构成 (因为所有子条目均以 'cn' 命名).

3.3. 'objectClass' 属性

DIT 中的每个条目都有一个 'objectClass' 属性.

  ( 2.5.4.0 NAME 'objectClass'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )

'objectIdentifierMatch' 匹配规则和 OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) 语法在 [RFC4517] 中定义.

'objectClass' 属性指定条目的对象类; 除其他用途外, 这些对象类与控制模式 配合使用, 以确定条目允许具有的属性. 客户端可以修改该属性的值, 但不能 删除 'objectClass' 属性.

遵循 X.500(93) 模型的服务器 SHALL 限制对该属性的修改, 以防止条目的 基本结构类发生改变. 也就是说, 不能把 'person' 改成 'country'.

创建条目或向条目添加 'objectClass' 值时, 如果指定类的所有超类尚不存在, 则它们也 SHALL 被隐式添加. 也就是说, 如果辅助类 'x-a' 是类 'x-b' 的 子类, 则向 'objectClass' 添加 'x-a' 会使 'x-b' 被隐式添加 (如果尚未 存在).

服务器 SHALL 限制对该属性的修改, 以防止删除其余 'objectClass' 值的 超类. 也就是说, 如果辅助类 'x-a' 是辅助类 'x-b' 的子类, 且 'objectClass' 属性包含 'x-a' 和 'x-b', 则试图只从 'objectClass' 属性中 删除 'x-b' 属于错误.

3.4. 操作属性

某些属性称为操作属性, 由服务器用于或维护以实现管理和操作目的. 如 [X.501] 所述: "操作属性有三种: 目录操作属性, DSA 共享操作属性和 DSA 特定操作属性".

目录操作属性用于表示目录信息模型中的操作和/或管理信息. 其中包括由 服务器维护的操作属性 (例如 'createTimestamp'), 也包括保存由用户管理 的值的操作属性 (例如 'ditContentRules').

DSA 共享操作属性用于表示 DSA 之间共享的 DSA 信息模型信息.

DSA 特定操作属性用于表示特定于该 DSA 的 DSA 信息模型信息 (但在某些 情况下, 这些信息可派生自 DSA 之间共享的信息; 例如 'namingContexts').

DSA 信息模型的操作属性详见 [X.501].

操作属性通常不可见. 除非按名称明确请求, 否则搜索结果不会返回这些属性.

并非所有操作属性都可由用户修改.

条目可以包含以下操作属性以及其他属性:

  - creatorsName: 将此条目添加到目录的用户的可分辨名称;

- createTimestamp: 此条目被添加到目录的时间;

- modifiersName: 最后修改此条目的用户的可分辨名称; 以及

- modifyTimestamp: 此条目最后一次被修改的时间.

服务器 SHOULD 为 DIT 的所有条目维护 'creatorsName', 'createTimestamp', 'modifiersName' 和 'modifyTimestamp' 属性.

3.4.1. 'creatorsName'

此属性出现在使用协议添加的条目中 (例如, 使用 Add 操作). 其值为创建者 的可分辨名称.

  ( 2.5.18.3 NAME 'creatorsName'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'distinguishedNameMatch' 匹配规则和 DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) 语法在 [RFC4517] 中定义.

3.4.2. 'createTimestamp'

此属性出现在使用协议添加的条目中 (例如, 使用 Add 操作). 其值为条目 被添加的时间.

  ( 2.5.18.1 NAME 'createTimestamp'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'generalizedTimeMatch' 和 'generalizedTimeOrderingMatch' 匹配规则以及 GeneralizedTime (1.3.6.1.4.1.1466.115.121.1.24) 语法在 [RFC4517] 中定义.

3.4.3. 'modifiersName'

此属性出现在使用协议修改过的条目中 (例如, 使用 Modify 操作). 其值为 最后修改者的可分辨名称.

  ( 2.5.18.4 NAME 'modifiersName'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'distinguishedNameMatch' 匹配规则和 DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) 语法在 [RFC4517] 中定义.

3.4.4. 'modifyTimestamp'

此属性出现在使用协议修改过的条目中 (例如, 使用 Modify 操作). 其值为 条目最后一次被修改的时间.

  ( 2.5.18.2 NAME 'modifyTimestamp'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'generalizedTimeMatch' 和 'generalizedTimeOrderingMatch' 匹配规则以及 GeneralizedTime (1.3.6.1.4.1.1466.115.121.1.24) 语法在 [RFC4517] 中定义.

3.4.5. 'structuralObjectClass'

此属性指示条目的结构对象类.

  ( 2.5.21.9 NAME 'structuralObjectClass'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'objectIdentifierMatch' 匹配规则和 OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) 语法在 [RFC4517] 中定义.

3.4.6. 'governingStructureRule'

此属性指示管控该条目的结构规则.

  ( 2.5.21.10 NAME 'governingStructureRule'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'integerMatch' 匹配规则和 INTEGER (1.3.6.1.4.1.1466.115.121.1.27) 语法在 [RFC4517] 中定义. 4. 目录模式

如 [X.501] 所定义:

  目录模式是一组定义和约束, 涉及 DIT 的结构, 条目可能的命名方式,
条目中可保存的信息, 用于表示这些信息的属性及其为便于搜索和检索
信息而构成的层次结构, 以及属性值在属性值断言和匹配规则断言中的
匹配方式.

注 1 - 例如, 模式使目录系统能够:

- 防止创建对象类错误的下级条目 (例如, 将国家/地区作为人员的
下级条目);

- 防止向条目添加不适合其对象类的属性类型 (例如, 向人员条目添加
序列号);

- 防止添加其语法与属性类型所定义语法不匹配的属性值 (例如, 向
位串添加可打印字符串).

从形式上讲, 目录模式由以下定义的集合组成:

a) 名称形式定义, 用于定义结构对象类的基本命名关系;

b) DIT 结构规则定义, 用于定义条目可以具有的名称, 以及条目在 DIT
中彼此关联的方式;

c) DIT 内容规则定义, 用于在条目的结构对象类所指明的范围之外,
扩展对条目允许使用的属性的规定;

d) 对象类定义, 用于定义给定类的条目中分别应存在和可以存在的
必需属性与可选属性基本集合, 并指明所定义的对象类种类;











e) 属性类型定义, 用于标识属性所对应的对象标识符, 其语法, 关联的
匹配规则, 它是否为操作属性及其操作属性类型, 它是否为集合属性,
是否允许具有多个值, 以及它是否派生自另一个属性类型;

f) 匹配规则定义, 用于定义匹配规则.

在 LDAP 中还包括:

g) LDAP 语法定义, 用于定义 LDAP 中使用的编码.

4.1. 模式定义

本节中的模式定义使用 ABNF 描述, 并依赖第 1.2 节规定的公共产生式及 下列产生式:

  noidlen = numericoid [ LCURLY len RCURLY ]
len = number

oids = oid / ( LPAREN WSP oidlist WSP RPAREN )
oidlist = oid *( WSP DOLLAR WSP oid )

extensions = *( SP xstring SP qdstrings )
xstring = "X" HYPHEN 1*( ALPHA / HYPHEN / USCORE )

qdescrs = qdescr / ( LPAREN WSP qdescrlist WSP RPAREN )
qdescrlist = [ qdescr *( SP qdescr ) ]
qdescr = SQUOTE descr SQUOTE

qdstrings = qdstring / ( LPAREN WSP qdstringlist WSP RPAREN )
qdstringlist = [ qdstring *( SP qdstring ) ]
qdstring = SQUOTE dstring SQUOTE
dstring = 1*( QS / QQ / QUTF8 ) ; escaped UTF-8 string

QQ = ESC %x32 %x37 ; "\27"
QS = ESC %x35 ( %x43 / %x63 ) ; "\5C" / "\5c"

; Any UTF-8 encoded Unicode character
; except %x27 ("\'") and %x5C ("\")
QUTF8 = QUTF1 / UTFMB

; Any ASCII character except %x27 ("\'") and %x5C ("\")
QUTF1 = %x00-26 / %x28-5B / %x5D-7F

本节中的模式定义还共用若干通用术语.

NAME 字段提供一组短名称 (描述符), 用作 OID 的别名.

DESC 字段可选地允许目录管理员和/或实现者提供描述性字符串. 规范可以 建议使用某个描述性字符串, 但并不要求使用所建议的字符串 (或任何 描述性字符串).

OBSOLETE 字段如果存在, 表示该元素未处于活动状态.

实现者应注意, 本文档的未来版本可能会扩展这些定义以纳入其他术语. 标识符以 "X-" 开头的术语保留用于私有实验, 其后跟有 词法单元.

4.1.1. 对象类定义

对象类定义按照下列 ABNF 编写:

 ObjectClassDescription = LPAREN WSP
numericoid ; object identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
[ SP "SUP" SP oids ] ; superior object classes
[ SP kind ] ; kind of class
[ SP "MUST" SP oids ] ; attribute types
[ SP "MAY" SP oids ] ; attribute types
extensions WSP RPAREN

kind = "ABSTRACT" / "STRUCTURAL" / "AUXILIARY"

其中: 是分配给此对象类的对象标识符; NAME 是标识此对象类的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此对象类未处于活动状态; SUP 指定此对象类的直接超类; 对象类的种类由 ABSTRACT, STRUCTURAL 或 AUXILIARY 之一表示 (默认为 STRUCTURAL); MUST 和 MAY 分别指定必需和允许的属性类型集合; 以及 描述扩展.

4.1.2. 属性类型

属性类型定义按照下列 ABNF 编写:

 AttributeTypeDescription = LPAREN WSP
numericoid ; object identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
[ SP "SUP" SP oid ] ; supertype
[ SP "EQUALITY" SP oid ] ; equality matching rule
[ SP "ORDERING" SP oid ] ; ordering matching rule
[ SP "SUBSTR" SP oid ] ; substrings matching rule
[ SP "SYNTAX" SP noidlen ] ; value syntax
[ SP "SINGLE-VALUE" ] ; single-value
[ SP "COLLECTIVE" ] ; collective
[ SP "NO-USER-MODIFICATION" ] ; not user modifiable
[ SP "USAGE" SP usage ] ; usage
extensions WSP RPAREN ; extensions

usage = "userApplications" / ; user
"directoryOperation" / ; directory operational
"distributedOperation" / ; DSA-shared operational
"dSAOperation" ; DSA-specific operational

其中: 是分配给此属性类型的对象标识符; NAME 是标识此属性类型的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此属性类型未处于活动状态; SUP oid 指定此类型的直接超类型; EQUALITY, ORDERING 和 SUBSTR 分别提供相等匹配规则, 排序匹配规则和 子串匹配规则的 oid; SYNTAX 通过对象标识符标识值语法, 并可以建议最小上限; SINGLE-VALUE 表示此类型的属性仅限单个值; COLLECTIVE 表示此属性类型是集合属性 [X.501][RFC3671]; NO-USER-MODIFICATION 表示此属性类型不可由用户修改; USAGE 表示此属性类型的用途; 以及 描述扩展.

每个属性类型描述必须至少包含 SUP 或 SYNTAX 字段之一. 如果未提供 SYNTAX 字段, 属性类型描述将从超类型取得其值.

如果提供了 SUP 字段, 则 EQUALITY, ORDERING 和 SUBSTRING 字段在未 指定时从超类型取得其值.

默认用途 userApplications 表示此类型的属性代表用户信息. 也就是说, 它们是用户属性.

用途 directoryOperation, distributedOperation 或 dSAOperation 表示 此类型的属性代表操作信息和/或管理信息. 也就是说, 它们是操作属性.

directoryOperation 用途表示此类型的属性是目录操作属性. distributedOperation 用途表示此类型的属性是 DSA 共享用途操作属性. dSAOperation 用途表示此类型的属性是 DSA 特定操作属性.

COLLECTIVE 要求用途为 userApplications.LDAP 中集合属性类型的使用 在 [RFC3671] 中讨论.

NO-USER-MODIFICATION 要求采用操作用途.

请注意, 并未列出可在 extensibleMatch 搜索 过滤器 [RFC4511] 中与该属性类型一起使用的匹配规则. 这通过第 4.1.4 节 所述的 'matchingRuleUse' 属性完成.

本文档细化了 X.501 的模式描述, 要求 中的 SYNTAX 字段是 LDAP 字符串语法定义之对象标识符的字符串表示, 并可选择 指明此属性值的建议最小上限.

对于基于字符串的语法, 可以建议值中字符数的最小上限; 对于所有其他语法, 可以建议值中字节数的最小上限. 指明方式是在属性类型描述中, 将该上限数值 置于花括号内, 并附加到相应语法的 OBJECT IDENTIFIER 之后. 该上限不属于 语法名称本身. 例如, "1.3.6.4.1.1466.0{64}" 表示建议服务器实现允许 字符串达到 64 个字符, 但也可以允许更长的字符串. 请注意, 由于 UTF-8 [RFC3629] 是一种变长编码, Directory String 语法中的单个字符可能编码为多个 八位位组.

4.1.3. 匹配规则

匹配规则用于执行属性值断言, 例如执行 Compare 操作时. 它们还用于评估搜索 过滤器, 确定在执行 Modify 操作期间要添加或删除哪些单独值, 以及比较可分辨 名称.

每条匹配规则由对象标识符 (OID) 以及可选的一个或多个短名称 (描述符) 标识.

匹配规则定义按照下列 ABNF 编写:

 MatchingRuleDescription = LPAREN WSP
numericoid ; object identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
SP "SYNTAX" SP numericoid ; assertion syntax
extensions WSP RPAREN ; extensions

其中: 是分配给此匹配规则的对象标识符; NAME 是标识此匹配规则的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此匹配规则未处于活动状态; SYNTAX 通过对象标识符标识断言语法 (断言值的语法); 以及 描述扩展. 4.1.4. 匹配规则使用 (Matching Rule Uses)

匹配规则使用列出适合与 extensibleMatch 搜索过滤器配合使用的属性类型.

匹配规则使用描述按照以下 ABNF 编写:

 MatchingRuleUseDescription = LPAREN WSP
numericoid ; object identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
SP "APPLIES" SP oids ; attribute types
extensions WSP RPAREN ; extensions

其中: 是与此匹配规则使用描述关联的匹配规则的对象标识符; NAME 是标识此匹配规则使用的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此匹配规则使用不再有效; APPLIES 提供该匹配规则所适用的属性类型列表; 并且 描述扩展.

4.1.5. LDAP 语法

(属性值和断言值的) LDAP 语法以 ASN.1 [X.680] 描述, 并且可以具有一种 称为 LDAP 特定编码的八位字节字符串编码. LDAP 特定编码通常限制为采用 UTF-8 [RFC3629] 形式的 Unicode [Unicode] 字符串.

每种 LDAP 语法均由一个对象标识符 (OID) 标识.

LDAP 语法定义按照以下 ABNF 编写:

 SyntaxDescription = LPAREN WSP
numericoid ; object identifier
[ SP "DESC" SP qdstring ] ; description
extensions WSP RPAREN ; extensions

其中: 是分配给此 LDAP 语法的对象标识符; DESC 是简短的描述性字符串; 并且 描述扩展.

4.1.6. DIT 内容规则

DIT 内容规则是"管辖特定结构对象类条目内容的规则" [X.501].

对于特定结构对象类的 DIT 条目, DIT 内容规则规定条目可以属于哪些辅助 对象类, 以及条目中必须出现, 允许出现或禁止出现哪些额外属性 (按类型).

被排除属性的列表不能包含该规则, 结构对象类或任何允许的辅助对象类中 列为强制的任何属性.

每个内容规则均由其所适用结构对象类的对象标识符以及任何短名称 (描述符) 标识.

条目只能属于管辖它的内容规则中列出的辅助对象类.

条目必须包含其所属对象类要求的所有属性, 还必须包含管辖它的内容规则 要求的所有属性.

条目可以包含其所属对象类允许的任何未被排除的属性, 还可以包含管辖它的 内容规则允许的所有属性.

条目不能包含管辖它的内容规则所排除的任何属性.

条目受适用于其结构对象类的 DIT 内容规则管辖 (如果该规则存在且在子模式 中有效, 见第 2.4.2 节). 如果该条目的结构对象类没有有效规则, 则其内容 由该结构对象类 (以及用户模式和系统模式的其他方面) 管辖. 条目结构对象类 的超类所对应的 DIT 内容规则不适用于该条目.

DIT 内容规则描述按照以下 ABNF 编写:

 DITContentRuleDescription = LPAREN WSP
numericoid ; object identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
[ SP "AUX" SP oids ] ; auxiliary object classes
[ SP "MUST" SP oids ] ; attribute types
[ SP "MAY" SP oids ] ; attribute types
[ SP "NOT" SP oids ] ; attribute types
extensions WSP RPAREN ; extensions

其中: 是与此 DIT 内容规则关联的结构对象类的对象标识符; NAME 是标识此 DIT 内容规则的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此 DIT 内容规则使用不再有效; AUX 指定受此 DIT 内容规则约束的条目可以所属的辅助对象类列表;

 MUST, MAY 和 NOT 分别指定受此 DIT 内容规则约束的条目中要求出现,
允许出现或禁止出现的属性类型列表; 并且
<extensions> 描述扩展.

4.1.7. DIT 结构规则和名称形式

有时需要根据对象条目和别名条目的结构对象类, 约束它们可以置于 DIT 中 的哪些位置以及如何命名.

4.1.7.1. DIT 结构规则

DIT 结构规则是"通过规定允许的上级条目与下级条目关系来管辖 DIT 结构的 规则. 结构规则将名称形式以及相应的结构对象类与上级结构规则相关联. 这使名称形式所标识的结构对象类条目可以作为由指定上级结构规则管辖的 条目的下级而存在于 DIT 中" [X.501].

DIT 结构规则描述按照以下 ABNF 编写:

 DITStructureRuleDescription = LPAREN WSP
ruleid ; rule identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
SP "FORM" SP oid ; NameForm
[ SP "SUP" ruleids ] ; superior rules
extensions WSP RPAREN ; extensions

ruleids = ruleid / ( LPAREN WSP ruleidlist WSP RPAREN )
ruleidlist = ruleid *( SP ruleid )
ruleid = number

其中: 是此 DIT 结构规则的规则标识符; NAME 是标识此 DIT 结构规则的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此 DIT 结构规则使用不再有效; FORM 指定与此 DIT 结构规则关联的名称形式; SUP (通过规则 ID) 标识上级规则; 并且 描述扩展.

如果未标识上级规则, 则 DIT 结构规则适用于自治管理点 (例如, 由子模式 控制的子树的根顶点) [X.501].

4.1.7.2. 名称形式

名称形式"规定特定结构对象类条目所允许的 RDN. 名称形式标识命名对象类 以及用于命名 (即用于 RDN) 的一个或多个属性类型. 名称形式是定义 DIT 结构规则时使用的基本规范构件" [X.501].

每个名称形式指明要命名的结构对象类, 一组必需属性类型和一组允许的属性 类型. 任一特定属性类型不能同时属于这两个集合.

受该形式管辖的条目必须使用每个必需属性类型中的一个值, 以及允许属性 类型中的零个或多个值来命名.

每个名称形式均由一个对象标识符 (OID) 标识, 还可以由一个或多个短名称 (描述符) 标识.

名称形式描述按照以下 ABNF 编写:

 NameFormDescription = LPAREN WSP
numericoid ; object identifier
[ SP "NAME" SP qdescrs ] ; short names (descriptors)
[ SP "DESC" SP qdstring ] ; description
[ SP "OBSOLETE" ] ; not active
SP "OC" SP oid ; structural object class
SP "MUST" SP oids ; attribute types
[ SP "MAY" SP oids ] ; attribute types
extensions WSP RPAREN ; extensions

其中: 是标识此名称形式的对象标识符; NAME 是标识此名称形式的短名称 (描述符); DESC 是简短的描述性字符串; OBSOLETE 表示此名称形式不再有效; OC 标识此规则所适用的结构对象类, MUST 和 MAY 分别指定此名称形式所要求和允许的命名属性集合; 并且 描述扩展.

必需列表 ("MUST") 和允许列表 ("MAY") 中的所有属性类型应各不相同.

4.2. 子模式子条目 (Subschema Subentries)

子模式子条目用于管理目录模式的相关信息. 一个子模式子条目包含 目录树特定部分中的条目所使用的全部模式定义 (见第 4.1 节).

遵循 X.500(93) 模型的服务器应当 (SHOULD) 使用 X.500 子模式机制 (详见 [X.501] 第 12 节) 实现子模式, 因而这些条目不是普通对象条目, 而是子条目 (见第 3.2 节). LDAP 客户端不应当 (SHOULD NOT) 假定服务器实现了 X.500 子模式的任何其他方面.

服务器可以 (MAY) 允许修改子模式. [X.501] 第 14.5 节讨论了修改子模式 的过程.

对条目拥有主控权且允许客户端修改这些条目的服务器必须 (SHALL) 实现并 提供对这些子模式子条目的访问, 包括在每个可修改条目中提供一个 'subschemaSubentry' 属性. 这样, 客户端就可以发现允许存在的属性和对象类. 强烈推荐 (RECOMMENDED) 所有其他服务器也实现此功能.

'subschemaSubentry' 属性的值是保存控制该条目的子模式的子模式子条目 的名称.

  ( 2.5.18.10 NAME 'subschemaSubentry'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )

'distinguishedNameMatch' 匹配规则和 DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) 语法在 [RFC4517] 中定义.

子模式保存在属于 subschema 辅助对象类的 (子)条目中.

  ( 2.5.20.1 NAME 'subschema' AUXILIARY
MAY ( dITStructureRules $ nameForms $ ditContentRules $
objectClasses $ attributeTypes $ matchingRules $
matchingRuleUse ) )

子模式子条目中还可以存在 'ldapSyntaxes' 操作属性.

服务器可以 (MAY) 在子模式子条目中提供 (其他文档所描述的) 附加属性.

服务器应当 (SHOULD) 在子模式子条目中提供 'createTimestamp' 和 'modifyTimestamp' 属性, 以便客户端维护其模式信息缓存.

以下各小节提供每种模式定义属性类型的属性类型定义. 4.2.1. 'objectClasses'

此属性保存对象类的定义.

  ( 2.5.21.6 NAME 'objectClasses'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.37
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 ObjectClassDescription (1.3.6.1.4.1.1466.115.121.1.37) 语法在 [RFC4517] 中定义.

4.2.2. 'attributeTypes'

此属性保存属性类型的定义.

  ( 2.5.21.5 NAME 'attributeTypes'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.3
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 AttributeTypeDescription (1.3.6.1.4.1.1466.115.121.1.3) 语法在 [RFC4517] 中定义.

4.2.3. 'matchingRules'

此属性保存匹配规则的定义.

  ( 2.5.21.4 NAME 'matchingRules'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.30
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 MatchingRuleDescription (1.3.6.1.4.1.1466.115.121.1.30) 语法在 [RFC4517] 中定义.

4.2.4 'matchingRuleUse'

此属性保存匹配规则使用的定义.

  ( 2.5.21.8 NAME 'matchingRuleUse'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.31
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 MatchingRuleUseDescription (1.3.6.1.4.1.1466.115.121.1.31) 语法在 [RFC4517] 中定义.

4.2.5. 'ldapSyntaxes'

此属性保存 LDAP 语法的定义.

  ( 1.3.6.1.4.1.1466.101.120.16 NAME 'ldapSyntaxes'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.54
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 SyntaxDescription (1.3.6.1.4.1.1466.115.121.1.54) 语法在 [RFC4517] 中定义.

4.2.6. 'dITContentRules'

此属性列出子模式中存在的 DIT 内容规则.

  ( 2.5.21.2 NAME 'dITContentRules'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.16
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 DITContentRuleDescription (1.3.6.1.4.1.1466.115.121.1.16) 语法在 [RFC4517] 中定义.

4.2.7. 'dITStructureRules'

此属性列出子模式中存在的 DIT 结构规则.

  ( 2.5.21.1 NAME 'dITStructureRules'
EQUALITY integerFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.17
USAGE directoryOperation )

'integerFirstComponentMatch' 匹配规则和 DITStructureRuleDescription (1.3.6.1.4.1.1466.115.121.1.17) 语法在 [RFC4517] 中定义.

4.2.8 'nameForms'

此属性列出当前生效的名称形式.

  ( 2.5.21.7 NAME 'nameForms'
EQUALITY objectIdentifierFirstComponentMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.35
USAGE directoryOperation )

'objectIdentifierFirstComponentMatch' 匹配规则和 NameFormDescription (1.3.6.1.4.1.1466.115.121.1.35) 语法在 [RFC4517] 中定义.

4.3. 'extensibleObject' 对象类

'extensibleObject' 辅助对象类允许属于该类的条目保存任何用户属性. 该 对象类的允许属性类型集合隐式地等于所有用途为 userApplications 的属性 类型集合.

  ( 1.3.6.1.4.1.1466.101.120.111 NAME 'extensibleObject'
SUP top AUXILIARY )

此条目其他对象类的必需属性仍要求存在, 任何被排除的属性仍不允许存在.

4.4. 子模式发现

为发现保存着控制某个特定条目的子模式的子模式子条目 DN, 客户端读取 该条目的 'subschemaSubentry' 操作属性. 为从子模式子条目读取模式属性, 客户端 MUST 发出 Search 操作 [RFC4511], 其中 baseObject 是子模式子条目 的 DN, scope 为 baseObject, filter 为 "(objectClass=subschema)" [RFC4515], attributes 字段列出所需模式属性的名称 (因为它们是操作属性). 注: "(objectClass=subschema)" 过滤器使充当 X.500 网关的 LDAP 服务器能够检测 到请求的是子条目信息.

客户端 SHOULD NOT 假定已发布的子模式是完整的, 服务器支持其发布的所有 模式元素, 或服务器不支持未发布的元素.

  1. DSA (服务器) 信息模型

LDAP 协议假定存在一个或多个共同提供目录信息树 (DIT) 访问的服务器. 保存原始信息的服务器称为该信息的"主"服务器 (master). 保存原始信息 副本的服务器称为"影子"服务器 (shadowing server) 或"缓存"服务器 (caching server).

如 [X.501] 中所定义:

  上下文前缀 (context prefix): 从 DIT 根到命名上下文初始顶点的 RDN
序列; 对应于该顶点的可分辨名称.

命名上下文 (naming context): 保存在单个主 DSA 中的条目子树.

换言之, 命名上下文是最大的条目集合: 它从由特定服务器控制其主副本的 条目开始, 包含该条目的所有下级及其下级, 直到由不同服务器控制主副本的 条目为止. 上下文前缀是初始条目的名称.

DIT 的根是 DSA 特定条目 (DSA-specific Entry, DSE), 不属于任何命名上下文 (也不属于任何子树); 每个服务器的根 DSE 都具有不同的属性值.

5.1. 服务器特定数据要求

LDAP 服务器 SHALL 提供有关自身的信息以及每台服务器特有的其他信息. 这些信息表示为位于根 DSE 中的一组属性; 根 DSE 以含零个 RDN 的 DN 命名 (其 [RFC4514] 表示形式是零长度字符串).

如果客户端执行 Search 操作 [RFC4511], 其中 baseObject 为空, scope 为 baseObject, filter 为 "(objectClass=*)" [RFC4515], 且 attributes 字段列出 所需属性的名称, 则在访问控制和其他限制允许的情况下可以检索这些属性. 需要注意, 根 DSE 属性是操作属性; 与其他操作属性一样, 除非按名称请求, 否则搜索请求不会返回这些属性.

如果客户端从根开始执行子树搜索, 则根 DSE SHALL NOT 包含在结果中.

在适当情况下, 服务器可以允许客户端修改根 DSE 的属性.

下面定义根 DSE 的下列属性. 其他文档可以定义附加属性.

  - altServer: 备用服务器;
- namingContexts: 命名上下文;
- supportedControl: 可识别的 LDAP 控制;
- supportedExtension: 可识别的 LDAP 扩展操作;
- supportedFeatures: 可识别的 LDAP 特性;
- supportedLDAPVersion: 支持的 LDAP 版本; 以及
- supportedSASLMechanisms: 可识别的简单认证与安全层 (Simple
Authentication and Security Layers, SASL) [RFC4422] 机制.

为这些属性提供的值可能取决于会话特定因素和其他因素. 例如, 支持 SASL EXTERNAL 机制的服务器可能仅在客户端身份已由较低层确立时才列出 "EXTERNAL". 见 [RFC4513].

根 DSE 还可以包含 'subschemaSubentry' 属性. 如果包含, 该属性指向保存着 控制根 DSE 的模式的子模式子条目. 客户端 SHOULD NOT 假定该子模式 (子)条目也控制服务器所保存的其他条目. 第 4.4 节提供一般的子模式发现 过程. 5.1.1. 'altServer'

'altServer' 属性列出指向备用服务器的 URI, 当此服务器不可用时可以联系 这些备用服务器. 实现 LDAP 的服务器 URI 按照 [RFC4516] 编写. 还可以 提供其他类型的 URI. 如果服务器不知道任何其他可用服务器, 则此属性不 存在. 客户端可以缓存此信息, 以备首选服务器日后不可用.

  ( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
USAGE dSAOperation )

IA5String (1.3.6.1.4.1.1466.115.121.1.26) 语法在 [RFC4517] 中定义.

5.1.2. 'namingContexts'

'namingContexts' 属性列出服务器主控或保存其影子副本 (部分或全部) 的 命名上下文的上下文前缀. 如果服务器是一级 DSA [X.501], 则它还应列出 一个空字符串 (表示 DIT 的根). 如果服务器不主控或保存任何信息的影子 副本 (例如, 它是通往公共 X.500 目录的 LDAP 网关), 则此属性不存在. 如果服务器认为自己主控或保存整个目录的影子副本, 则此属性只有一个值, 且该值为空字符串 (表示 DIT 的根).

例如, 此属性可用于为后续针对该服务器的操作选择合适的条目名称.

  ( 1.3.6.1.4.1.1466.101.120.5 NAME 'namingContexts'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
USAGE dSAOperation )

DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) 语法在 [RFC4517] 中定义.

5.1.3. 'supportedControl'

'supportedControl' 属性列出用于标识服务器所支持请求控制 [RFC4511] 的 对象标识符. 如果服务器不支持任何请求控制, 则此属性不存在. 无需列出 用于标识响应控制的对象标识符.

BCP 64, RFC 4520 [RFC4520] 详细规定了用于发现协议机制的对象标识符 注册过程.

  ( 1.3.6.1.4.1.1466.101.120.13 NAME 'supportedControl'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
USAGE dSAOperation )

OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) 语法在 [RFC4517] 中定义.

5.1.4. 'supportedExtension'

'supportedExtension' 属性列出用于标识服务器所支持扩展操作 [RFC4511] 的对象标识符. 如果服务器不支持任何扩展操作, 则此属性不存在.

扩展操作通常由扩展请求和扩展响应组成, 但也可能包含其他协议数据单元 (例如中间响应). 分配给扩展请求的对象标识符用于标识扩展操作. 扩展操作 中使用的其他对象标识符无需列为此属性的值.

BCP 64, RFC 4520 [RFC4520] 详细规定了用于发现协议机制的对象标识符 注册过程.

  ( 1.3.6.1.4.1.1466.101.120.7 NAME 'supportedExtension'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
USAGE dSAOperation )

OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) 语法在 [RFC4517] 中定义.

5.1.5. 'supportedFeatures'

'supportedFeatures' 属性列出用于标识服务器所支持可选特性的对象标识符. 如果服务器不支持任何可发现的可选特性, 则此属性不存在.

  ( 1.3.6.1.4.1.4203.1.3.5 NAME 'supportedFeatures'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
USAGE dSAOperation )

BCP 64, RFC 4520 [RFC4520] 详细规定了用于发现协议机制的对象标识符 注册过程.

OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) 语法和 objectIdentifierMatch 匹配规则在 [RFC4517] 中定义.

5.1.6. 'supportedLDAPVersion'

'supportedLDAPVersion' 属性列出服务器支持的 LDAP 版本.

  ( 1.3.6.1.4.1.1466.101.120.15 NAME 'supportedLDAPVersion'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
USAGE dSAOperation )

INTEGER (1.3.6.1.4.1.1466.115.121.1.27) 语法在 [RFC4517] 中定义.

5.1.7. 'supportedSASLMechanisms'

'supportedSASLMechanisms' 属性列出服务器能够识别和/或支持 [RFC4513] 的 SASL 机制 [RFC4422]. 此属性的内容可能取决于当前会话状态. 如果 服务器不支持任何 SASL 机制, 则此属性不存在.

  ( 1.3.6.1.4.1.1466.101.120.14 NAME 'supportedSASLMechanisms'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
USAGE dSAOperation )

Directory String (1.3.6.1.4.1.1466.115.121.1.15) 语法在 [RFC4517] 中定义.

  1. 其他注意事项 (Other Considerations)

6.1. 用户信息的保留 (Preservation of User Information)

可以定义具有特定值和/或值形式 (表示形式) 保留要求的语法. 例如, 包含 数字签名数据的语法可以要求服务器同时保留所提交的值及其形式, 以确保 签名不会失效.

如果未明确规定此类要求, 服务器应当 (SHOULD) 保留用户信息的值, 但可以 (MAY) 以不同形式返回该值. 如果服务器无法 (或不愿) 保留用户信息的值, 则服务器必须 (SHALL) 确保返回一个等价值 (依据第 2.3 节).

6.2. 短名称 (Short Names)

短名称又称描述符, 用作更易阅读的对象标识符别名, 并用于标识各种模式 元素. 但是, 预计具有人工用户界面的 LDAP 实现不会向用户显示这些短名称 (或它们所指的对象标识符). 相反, 实现很可能会进行转换 (例如以本地某种 民族语言表达短名称). 例如, 短名称 "st" (stateOrProvinceName) 可以向 德语用户显示为 "Land".

同一短名称在不同子模式中可能具有不同含义; 而在一个特定子模式中, 同一 短名称可能指向不同的对象标识符, 每个对象标识符标识不同种类的模式元素.

实现必须 (MUST) 准备好处理同一短名称在一个子模式中用于指向不同种类 模式元素的情况. 也就是说, 一个子模式中可能同时存在对象类 'x-fubar' 和属性类型 'x-fubar'.

实现必须 (MUST) 准备好处理同一短名称在不同子模式中用于指向不同模式 元素的情况. 也就是说, 可能存在两个匹配规则 'x-fubar', 且各自位于不同 的子模式中.

BCP 64, RFC 4520 [RFC4520] 详细规定了短名称 (描述符) 的注册过程.

6.3. 缓存和影子复制 (Cache and Shadowing)

某些服务器可以保存条目的缓存副本或影子副本, 这些副本可用于响应搜索和 比较查询; 但是, 如果请求修改操作, 服务器将返回引用或联系其他服务器. 执行影子复制或缓存的服务器必须 (MUST) 确保不违反源服务器对数据施加的 任何访问控制约束.

  1. 实现指南 (Implementation Guidelines)

7.1. 服务器指南 (Server Guidelines)

服务器必须 (MUST) 识别本文档中定义的属性类型和对象类的所有名称, 但除非 另有说明, 无需支持相关功能. 服务器应当 (SHOULD) 识别 [RFC4519] 第 3 节 和第 4 节中分别定义的属性类型和对象类的所有名称.

服务器必须 (MUST) 确保条目符合用户模式和系统模式规则或其他数据模型约束.

服务器可以 (MAY) 支持 DIT 内容规则. 服务器可以 (MAY) 支持 DIT 结构规则 和名称形式.

服务器可以 (MAY) 支持别名条目.

服务器可以 (MAY) 支持 'extensibleObject' 对象类.

服务器可以 (MAY) 支持子条目. 如果支持, 则必须 (MUST) 按照 [RFC3672] 实现. 不支持子条目的服务器应当 (SHOULD) 按照第 3.2 节的详细说明, 使用 对象条目模拟子条目.

服务器可以 (MAY) 实现其他模式元素. 服务器应当 (SHOULD) 在子模式 (子)条目中提供其支持的所有模式元素的定义.

7.2. 客户端指南 (Client Guidelines)

如果未事先与服务器达成约定, 客户端不应当 (SHOULD NOT) 假定服务器支持 第 7.1 节所引用范围之外的任何特定模式元素. 客户端可以按照第 4.4 节所述 检索子模式信息.

如果值的语法未知, 客户端禁止 (MUST NOT) 将该值显示为 ASN.1 或尝试将其 按 ASN.1 解码. 除非明确规定了此类限制, 客户端禁止 (MUST NOT) 假定 LDAP 特定字符串编码仅限于 Unicode 字符的 UTF-8 编码字符串或 Unicode 的任何特定子集 (例如可打印子集). 客户端不应当 (SHOULD NOT) 在请求中 发送按照为属性定义的语法判定为无效的属性值.

  1. 安全考虑事项

目录条目的属性用于提供有关其所表示的现实世界对象的描述性信息, 这些对象 可以是人员, 组织或设备. 大多数国家/地区都有涉及人员信息发布的隐私法律.

[RFC4511] 和 [RFC4513] 讨论了使用 LDAP 访问目录信息时的一般安全 考虑事项.

  1. IANA 考虑事项

互联网号码分配局 (Internet Assigned Numbers Authority, IANA) 已按照 下列模板更新 LDAP 描述符注册表:

  主题: LDAP 描述符注册更新请求
描述符 (短名称): 见注释
对象标识符: 见注释
联系人及电子邮件地址 (供进一步了解):
Kurt Zeilenga <[email protected]>
用途: 见注释
规范: RFC 4512
作者/变更控制者: IESG
注释:

以下描述符 (短名称) 已添加到注册表.

名称 类型 OID
------------------------ ---- -----------------
governingStructureRule A 2.5.21.10
structuralObjectClass A 2.5.21.9

以下描述符 (短名称) 已更新为引用本 RFC.

名称 类型 OID
------------------------ ---- -----------------
alias O 2.5.6.1
aliasedObjectName A 2.5.4.1
altServer A 1.3.6.1.4.1.1466.101.120.6
attributeTypes A 2.5.21.5
createTimestamp A 2.5.18.1
creatorsName A 2.5.18.3
dITContentRules A 2.5.21.2
dITStructureRules A 2.5.21.1
extensibleObject O 1.3.6.1.4.1.1466.101.120.111
ldapSyntaxes A 1.3.6.1.4.1.1466.101.120.16






matchingRuleUse A 2.5.21.8
matchingRules A 2.5.21.4
modifiersName A 2.5.18.4
modifyTimestamp A 2.5.18.2
nameForms A 2.5.21.7
namingContexts A 1.3.6.1.4.1.1466.101.120.5
objectClass A 2.5.4.0
objectClasses A 2.5.21.6
subschema O 2.5.20.1
subschemaSubentry A 2.5.18.10
supportedControl A 1.3.6.1.4.1.1466.101.120.13
supportedExtension A 1.3.6.1.4.1.1466.101.120.7
supportedFeatures A 1.3.6.1.4.1.4203.1.3.5
supportedLDAPVersion A 1.3.6.1.4.1.1466.101.120.15
supportedSASLMechanisms A 1.3.6.1.4.1.1466.101.120.14
top O 2.5.6.0

10. 致谢

本文档部分基于 M. Wahl, T. Howes 和 S. Kille 编写的 RFC 2251, M. Wahl, A. Coulbeck, T. Howes 和 S. Kille 编写的 RFC 2252, 以及 M. Wahl 编写的 RFC 2556; 这些文档均为 IETF 目录访问, 搜索与索引 (Access, Searching and Indexing of Directories, ASID) 工作组的成果. 本文档还部分基于国际电信联盟 (International Telephone Union, ITU) 的 成果 "The Directory: Models" [X.501]. 此外还借用了 M. Wahl, T. Howes 和 S. Kille 编写的 RFC 2253 中的文字.

本文档是 IETF LDAP 修订 (LDAP Revision, LDAPBIS) 工作组的成果.

  1. 规范性参考文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.

[RFC3671] Zeilenga, K., "Collective Attributes in the Lightweight Directory Access Protocol (LDAP)", RFC 3671, December 2003.

[RFC3672] Zeilenga, K., "Subentries in the Lightweight Directory Access Protocol (LDAP)", RFC 3672, December 2003.

[RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.

[RFC4422] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple Authentication and Security Layer (SASL)", RFC 4422, June 2006.

[RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, June 2006.

[RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access Protocol (LDAP): The Protocol", RFC 4511, June 2006.

[RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms", RFC 4513, June 2006.

[RFC4514] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names", RFC 4514, June 2006.

[RFC4515] Smith, M., Ed. and T. Howes, "Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters", RFC 4515, June 2006.

[RFC4516] Smith, M., Ed. and T. Howes, "Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator", RFC 4516, June 2006.

[RFC4517] Legg, S., Ed., "Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006.

[RFC4519] Sciberras, A., Ed., "Lightweight Directory Access Protocol (LDAP): Schema for User Applications", RFC 4519, June 2006.

[RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.

[Unicode] The Unicode Consortium, "The Unicode Standard, Version 3.2.0" is defined by "The Unicode Standard, Version 3.0" (Reading, MA, Addison-Wesley, 2000. ISBN 0-201- 61633-5), as amended by the "Unicode Standard Annex #27: Unicode 3.1" (http://www.unicode.org/reports/tr27/) and by the "Unicode Standard Annex #28: Unicode 3.2" (http://www.unicode.org/reports/tr28/).

[X.500] International Telecommunication Union - Telecommunication Standardization Sector, "The Directory -- Overview of concepts, models and services," X.500(1993) (also ISO/IEC 9594-1:1994).

[X.501] International Telecommunication Union - Telecommunication Standardization Sector, "The Directory -- Models," X.501(1993) (also ISO/IEC 9594- 2:1994).

[X.680] International Telecommunication Union - Telecommunication Standardization Sector, "Abstract Syntax Notation One (ASN.1) - Specification of Basic Notation", X.680(2002) (also ISO/IEC 8824-1:2002).

附录 A. 变更

本附录不具规范性.

本文档几乎完全重写了 RFC 2251, RFC 2252 和 RFC 2256 的部分内容. 此次 重写旨在提高技术规范的整体清晰度. 本附录概述从这些文档纳入本文档的 部分所作的实质性变更. 有关这些文档其余部分的变更摘要, 读者应参阅 [RFC4510], [RFC4511], [RFC4517] 和 [RFC4519].

A.1. 对 RFC 2251 的变更

本文档纳入了 RFC 2251 的第 3.2 节和第 3.4 节, 以及第 4 节和第 6 节的 部分内容, 摘要如下.

A.1.1. RFC 2251 第 3.2 节

RFC 2251 第 3.2 节简要介绍了 LDAP 所使用的 X.500 数据模型. 先前规范 依赖 [X.501], 但没有清晰说明如何调整 X.500 模型以供 LDAP 使用. 本文档 更详细地描述 LDAP 所使用的 X.500 数据模型, 尤其是需要调整的方面.

RFC 2251 第 3.2.1 节将属性描述为"一个类型及一个或多个关联值". 在 LDAP 中, 将属性描述为属性描述, 一个含零个或多个选项的类型以及一个或多个 关联值更为准确.

RFC 2251 第 3.2.2 节强制要求子模式子条目包含 objectClasses 和 attributeTypes 属性, 但 X.500(93) 将这些属性视为可选. 一般而言, 支持 X.500(93) 子模式机制的所有实现都会提供这两个属性, 但互操作性并不绝对 要求所有服务器都这样做. 为与 X.500(93) 保持一致, 该强制要求已删除. 子模式发现机制也得到澄清: 控制某个条目的子模式, 通过读取该条目 'subschemaSubentry' 属性所引用的 (子)条目获得.

A.1.2. RFC 2251 第 3.4 节

RFC 2251 第 3.4 节规定了"服务器特定数据要求". 该材料经过修改后纳入 本文档第 5.1 节.

变更:

  • 澄清根 DSE 的属性除受访问控制约束外, 还受"其他限制"约束.

  • 澄清只有可识别的扩展请求才需要在 'supportedExtension' 中列举.

  • 澄清只有可识别的请求控制才需要在 'supportedControl' 中列举.

  • 澄清根 DSE 属性是操作属性; 与其他操作属性一样, 除非按名称请求, 否则搜索请求不会返回这些属性.

  • 澄清并非所有根 DSE 属性都可由用户修改.

  • 删除关于根 DSE 内 'subschemaSubentry' 属性处理的不一致文本. 先前规范 称根 DSE 中的 'subschemaSubentry' 属性指向"本服务器已知的子模式子条目 (或子条目)". 这既不符合该属性的预期用途, 也不符合其作为单值属性的 正式定义 [X.501]. 还应注意, 一个简单的 (可能不完整的) 子模式子条目 列表并没有太大用处. 本文档第 5.1 节规定, 根 DSE 的 'subschemaSubentry' 属性指向控制根 DSE 的子模式. 一般子模式发现机制 仍然可用 (见本文档第 4.4 节).

A.1.3. RFC 2251 第 4 节

RFC 2251 第 4 节中详述 LDAP 信息模型各方面的部分内容已纳入本文档, 包括:

  • 将可分辨值限制为描述中不含选项的属性 (来自第 4.1.3 节);

  • 属性类型 (第 4.1.4 节), 属性描述 (第 4.1.5 节), 属性 (第 4.1.8 节) 和匹配规则标识符 (第 4.1.9 节) 的数据模型方面; 以及

  • 用户模式要求 (来自第 4.1.6, 4.5.1 和 4.7 节).

对这些部分的澄清包括:

  • 子类型化以及带选项的 AttributeDescriptions.

A.1.4. RFC 2251 第 6 节

RFC 2251 第 6.1 节和第 6.2 节第二段已纳入本文档.

A.2. 对 RFC 2252 的变更

本文档纳入了 RFC 2252 的第 4, 5 和 7 节.

A.2.1. RFC 2252 第 4 节

规范已更新为使用扩充 BNF (Augmented BNF) [RFC4234].OBJECT IDENTIFIER 的字符串表示得到收紧, 按 RFC 2252 所述禁止前导零.

为与其自然语言规范"descr 是对象描述符的语法表示, 由字母和数字组成, 并以字母开头"保持一致, 语法改为禁止分号 (U+003B) 字符. 作为 相关变更, 删除了"AttributeDescription 可用作 AttributeTypeDescription 中 NAME 部分的值"这一陈述.RFC 2252 没有规定出现在 NAME 字段中的属性 选项的语义.

RFC 2252 规定应优先采用 形式而非 形式 (SHOULD). 但 形式可能有歧义. 为解决此问题, 该命令性要求替换为 第 1.4 节中的陈述: 虽然通常优先采用 形式, 但在没有无歧义的 时应使用 . 第 6.2 节"短名称"还扩展讨论了描述符问题.

引用字符串 (qdstring) 的 ABNF 已更新, 以反映对 RFC 2252 第 4.3 节所述 转义机制的支持.

A.2.2. RFC 2252 第 5 节

RFC 2252 第 5 节提供的操作属性定义已纳入本文档.

'namingContexts' 的描述得到澄清. 第一级 DSA 除其他值外, 还应发布表示 DIT 根的 "".

'altServer' 的描述得到澄清. 它可以保存任何 URI.

'supportedExtension' 的描述得到澄清. 服务器只需列出与其可识别扩展操作 的扩展请求相关联的 OBJECT IDENTIFIER.

'supportedControl' 的描述得到澄清. 服务器只需列出与其可识别请求控制 相关联的 OBJECT IDENTIFIER.

增加了 'structuralObjectClass' 和 'governingStructureRule' 操作属性类型 的描述.

修正了 'subschemaSubentry' 属性定义, 以正确顺序列出术语 SINGLE-VALUE 和 NO-USER-MODIFICATION.

A.2.3. RFC 2252 第 7 节

RFC 2252 第 7 节提供 'subschema' 和 'extensibleObject' 对象类的定义. 这些定义分别整合到本文档第 4.2 节和第 4.3 节.RFC 2252 第 7 节还包含 对象类实现要求, 该要求已纳入本文档第 7 节.

关于 'extensibleObject' 与被排除属性之间的交互, 规范得到澄清.

A.3. 对 RFC 2256 的变更

本文档纳入 RFC 2256 的第 5.1, 5.2, 7.1 和 7.2 节.

RFC 2256 第 5.1 节提供 'objectClass' 属性类型的定义, 该定义已整合到 本文档第 2.4.1 节."其中一个值是 'top' 或 'alias'"这一陈述被替换为 其中一个值是 'top', 因为属于 'alias' 的条目也属于 'top'.

RFC 2256 第 5.2 节提供 'aliasedObjectName' 属性类型的定义, 该定义已 整合到本文档第 2.6.2 节.

RFC 2256 第 7.1 节提供 'top' 对象类的定义, 该定义已整合到本文档 第 2.4.1 节.

RFC 2256 第 7.2 节提供 'alias' 对象类的定义, 该定义已整合到本文档 第 2.6.1 节.

A.4. 对 RFC 3674 的变更

本文档未对 RFC 3674 提供的 'supportedFeatures' 技术规范作任何实质性 变更.

编辑者地址

Kurt D. Zeilenga OpenLDAP Foundation

电子邮件: [email protected]

完整版权声明

版权所有 (C) The Internet Society (2006).

本文档受 BCP 78 中所载权利, 许可和限制的约束; 除该文件另有规定外, 作者保留其全部权利.

本文档及其中所含信息均按"原样"提供. 贡献者, 其代表或受其资助的组织 (如有), THE INTERNET SOCIETY 和 THE INTERNET ENGINEERING TASK FORCE 均不作任何明示或默示保证, 包括但不限于对使用本文信息不会侵犯任何权利 的保证, 或对适销性或特定用途适用性的任何默示保证.

知识产权

对于可能被主张与本文档所述技术的实现或使用相关的任何知识产权或其他 权利的有效性或范围, 以及这些权利项下的任何许可可能可用或不可用的程度, IETF 不持任何立场; IETF 亦不表示其已作出任何独立努力来识别任何此类 权利. 有关 RFC 文档中权利的处理程序, 见 BCP 78 和 BCP 79.

向 IETF 秘书处提交的知识产权披露副本, 任何将提供的许可保证, 或为使本 规范的实现者或用户能够使用此类专有权利而尝试获取一般许可或授权的结果, 可从 IETF 在线知识产权资料库 http://www.ietf.org/ipr 获取.

IETF 邀请任何相关方提请其注意可能涵盖实现本标准所需技术的任何版权, 专利或专利申请, 或其他专有权利. 请将相关信息发送至 IETF: [email protected].

致谢

RFC Editor 职能的经费由 IETF Administrative Support Activity (IASA) 提供.