5. 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] 中定义.