跳到主要内容

3.3. 语法定义 (A-J)

3.3.1. 属性类型描述 (Attribute Type Description)​

Attribute Type Description 语法的值是一个属性类型 (attribute type) 的定义. 该语法值的 LDAP 专用编码由 [RFC4512] 中的 <AttributeTypeDescription> 规则定义.

例如, 下面来自 [RFC4512] 的 createTimestamp 属性类型定义也是 Attribute Type Description 语法的一个值. (注: 为便于阅读添加了换行; 这些换行在协议传输时不是该值的一部分.)

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

Attribute Type Description 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.3 DESC 'Attribute Type Description' )

该语法对应于 [X.501] 中的 AttributeTypeDescription ASN.1 类型.

3.3.2. 位字符串 (Bit String)​

Bit String 语法的值是一串二进制数字. 该语法值的 LDAP 专用编码由以下 ABNF 定义:

BitString    = SQUOTE *binary-digit SQUOTE "B"
binary-digit = "0" / "1"

<SQUOTE> 规则在 [RFC4512] 中定义.

示例: '0101111101'B

Bit String 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.6 DESC 'Bit String' )

该语法对应于 [ASN.1] 中的 BIT STRING ASN.1 类型.

3.3.3. 布尔值 (Boolean)​

Boolean 语法的值是 Boolean 值之一, 即 true 或 false. 该语法值的 LDAP 专用编码由以下 ABNF 定义:

Boolean = "TRUE" / "FALSE"

Boolean 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.7 DESC 'Boolean' )

该语法对应于 [ASN.1] 中的 BOOLEAN ASN.1 类型.

3.3.4. 国家字符串 (Country String)​

Country String 语法的值是 ISO 3166 [ISO3166] 中用于表示国家的两个字符代码之一. 该语法值的 LDAP 专用编码由以下 ABNF 定义:

CountryString  = 2(PrintableCharacter)

<PrintableCharacter> 规则在第 3.2 节中定义.

示例:

US
AU

Country String 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.11 DESC 'Country String' )

该语法对应于 [X.520] 中的以下 ASN.1 类型:

PrintableString (SIZE (2)) -- ISO 3166 codes only

3.3.5. 投递方式 (Delivery Method)​

Delivery Method 语法的值是一串项目, 这些项目按优先顺序指示某个实体愿意和/或能够用来接收消息的服务. 该语法值的 LDAP 专用编码由以下 ABNF 定义:

DeliveryMethod = pdm *( WSP DOLLAR WSP pdm )

pdm = "any" / "mhs" / "physical" / "telex" / "teletex" /
"g3fax" / "g4fax" / "ia5" / "videotex" / "telephone"

<WSP> 和 <DOLLAR> 规则在 [RFC4512] 中定义.

示例: telephone $ videotex

Delivery Method 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.14 DESC 'Delivery Method' )

该语法对应于 [X.520] 中的以下 ASN.1 类型:

SEQUENCE OF INTEGER {
any-delivery-method (0),
mhs-delivery (1),
physical-delivery (2),
telex-delivery (3),
teletex-delivery (4),
g3-facsimile-delivery (5),
g4-facsimile-delivery (6),
ia5-terminal-delivery (7),
videotex-delivery (8),
telephone-delivery (9) }

3.3.6. 目录字符串 (Directory String)​

Directory String 语法的值是来自通用字符集 (Universal Character Set, UCS) [UCS] 的一个或多个任意字符组成的字符串. 不允许零长度字符串. 该语法值的 LDAP 专用编码是该字符串的 UTF-8 编码 [RFC3629]. 此类编码符合以下 ABNF:

DirectoryString = 1*UTF8

<UTF8> 规则在 [RFC4512] 中定义.

示例: This is a value of Directory String containing #!%#@.

服务器和客户端必须准备好接收任意 UCS 码点, 包括可打印 ASCII 范围之外的码点, 以及当前尚未分配给任何字符的码点.

使用 Directory String 语法的属性类型定义不应限制 Directory String 值的格式, 例如不应要求字符串符合由 ABNF 描述的特定模式. 在这种情况下应定义新的语法.

Directory String 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.15 DESC 'Directory String' )

该语法对应于 [X.520] 中的 DirectoryString 参数化 ASN.1 类型.

DirectoryString ASN.1 类型允许在 [ASN.1] 中的 TeletexString, PrintableString 或 UniversalString ASN.1 类型之间选择. 但是需要注意, 在 Directory String 值的 LDAP 专用编码中不会指示所选择的替代类型.

将 Directory String 值从 LDAP 专用编码转换为 X.500 使用的 BER 编码的实现, 必须选择一种允许该字符串中特定字符的替代类型, 并且必须将字符从 UTF-8 编码转换为所选替代类型的字符编码. 将 Directory String 值从 BER 编码转换为 LDAP 专用编码时, 必须将字符从所选替代类型的字符编码转换为 UTF-8 编码. 这些转换应该以与 LDAP 字符串准备算法 [RFC4518] 的 Transcode 步骤一致的方式完成.

3.3.7. DIT Content Rule Description​

DIT Content Rule Description 语法的值是 DIT (Directory Information Tree) 内容规则的定义. 该语法值的 LDAP 专用编码由 [RFC4512] 中的 <DITContentRuleDescription> 规则定义.

示例:

( 2.5.6.4 DESC 'content rule for organization'
NOT ( x121Address $ telexNumber ) )

注: 为便于阅读添加了一个换行; 它不是该值的一部分.

DIT Content Rule Description 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.16
DESC 'DIT Content Rule Description' )

该语法对应于 [X.501] 中的 DITContentRuleDescription ASN.1 类型.

3.3.8. DIT Structure Rule Description​

DIT Structure Rule Description 语法的值是 DIT 结构规则的定义. 该语法值的 LDAP 专用编码由 [RFC4512] 中的 <DITStructureRuleDescription> 规则定义.

示例: ( 2 DESC 'organization structure rule' FORM 2.5.15.3 )

DIT Structure Rule Description 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.17
DESC 'DIT Structure Rule Description' )

该语法对应于 [X.501] 中的 DITStructureRuleDescription ASN.1 类型.

3.3.9. DN​

DN 语法的值是条目的 (声称的) 可分辨名称 (distinguished name, DN) [RFC4512]. 该语法值的 LDAP 专用编码由可分辨名称字符串表示 [RFC4514] 中的 <distinguishedName> 规则定义.

示例 (来自 [RFC4514]):

UID=jsmith,DC=example,DC=net
OU=Sales+CN=J. Smith,DC=example,DC=net
CN=John Smith\, III,DC=example,DC=net
CN=Before\0dAfter,DC=example,DC=net
1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com
CN=Lu\C4\8Di\C4\87

DN 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.12 DESC 'DN' )

DN 语法对应于 [X.501] 中的 DistinguishedName ASN.1 类型. 注意, BER 编码的可分辨名称 (如 X.500 所使用的) 重新编码为 LDAP 专用编码后, 不一定能够还原为原始 BER 编码, 因为可分辨名称中任何 DirectoryString 组件所选的字符串类型不会在该可分辨名称的 LDAP 专用编码中指示 (见第 3.3.6 节).

3.3.10. Enhanced Guide​

Enhanced Guide 语法的值用于建议准则, 这些准则由属性类型与过滤器运算符的组合构成, 用于构造过滤器以搜索特定对象类的条目. Enhanced Guide 语法相对于 Guide 语法的改进在于, 它允许指定建议的搜索深度.

该语法值的 LDAP 专用编码由以下 ABNF 定义:

EnhancedGuide = object-class SHARP WSP criteria WSP
SHARP WSP subset
object-class = WSP oid WSP
subset = "baseobject" / "oneLevel" / "wholeSubtree"

criteria = and-term *( BAR and-term )
and-term = term *( AMPERSAND term )
term = EXCLAIM term /
attributetype DOLLAR match-type /
LPAREN criteria RPAREN /
true /
false
match-type = "EQ" / "SUBSTR" / "GE" / "LE" / "APPROX"
true = "?true"
false = "?false"
BAR = %x7C ; vertical bar ("|")
AMPERSAND = %x26 ; ampersand ("&")
EXCLAIM = %x21 ; exclamation mark ("!")

<SHARP>, <WSP>, <oid>, <LPAREN>, <RPAREN>, <attributetype> 和 <DOLLAR> 规则在 [RFC4512] 中定义.

Enhanced Guide 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.21 DESC 'Enhanced Guide' )

示例: person#(sn$EQ)#oneLevel

Enhanced Guide 语法对应于 [X.520] 中的 EnhancedGuide ASN.1 类型. EnhancedGuide 类型引用了同样来自 [X.520] 的 Criteria ASN.1 类型. 上面的 <true> 规则表示 Criteria 类型值中的空 "and" 表达式. 上面的 <false> 规则表示 Criteria 类型值中的空 "or" 表达式.

3.3.11. Facsimile Telephone Number​

Facsimile Telephone Number 语法的值是公共交换电话网上传真设备的用户号码. 该语法值的 LDAP 专用编码由以下 ABNF 定义:

fax-number       = telephone-number *( DOLLAR fax-parameter )
telephone-number = PrintableString
fax-parameter = "twoDimensional" /
"fineResolution" /
"unlimitedLength" /
"b4Length" /
"a3Width" /
"b4Width" /
"uncompressed"

<telephone-number> 是由可打印字符组成的字符串, 符合国际上约定的国际电话号码表示格式 [E.123]. <PrintableString> 规则在第 3.2 节中定义. <DOLLAR> 规则在 [RFC4512] 中定义.

Facsimile Telephone Number 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.22 DESC 'Facsimile Telephone Number')

Facsimile Telephone Number 语法对应于 [X.520] 中的 FacsimileTelephoneNumber ASN.1 类型.

3.3.12. Fax​

Fax 语法的值是使用 Group 3 传真过程 [FAX] 生成的图像, 用于复制某个对象, 例如备忘录. 该语法值的 LDAP 专用编码是 [FAX] 中定义的 Group 3 Fax 图像的八位位组 (octet) 字符串.

Fax 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.23 DESC 'Fax' )

假定使用 EXPLICIT TAGS, 与 Fax 语法对应的 ASN.1 类型定义如下:

Fax ::= CHOICE {
g3-facsimile [3] G3FacsimileBodyPart
}

G3FacsimileBodyPart ASN.1 类型在 [X.420] 中定义.

3.3.13. 通用时间 (Generalized Time)​

Generalized Time 语法的值是表示日期和时间的字符串. 该语法值的 LDAP 专用编码是 [ISO8601] 中所定义格式的一个受限形式, 并由以下 ABNF 描述:

GeneralizedTime = century year month day hour
[ minute [ second / leap-second ] ]
[ fraction ]
g-time-zone

century = 2(%x30-39) ; "00" to "99"
year = 2(%x30-39) ; "00" to "99"
month = ( %x30 %x31-39 ) ; "01" (January) to "09"
/ ( %x31 %x30-32 ) ; "10" to "12"
day = ( %x30 %x31-39 ) ; "01" to "09"
/ ( %x31-32 %x30-39 ) ; "10" to "29"
/ ( %x33 %x30-31 ) ; "30" to "31"
hour = ( %x30-31 %x30-39 ) / ( %x32 %x30-33 ) ; "00" to "23"
minute = %x30-35 %x30-39 ; "00" to "59"

second = ( %x30-35 %x30-39 ) ; "00" to "59"
leap-second = ( %x36 %x30 ) ; "60"

fraction = ( DOT / COMMA ) 1*(%x30-39)
g-time-zone = %x5A ; "Z"
/ g-differential
g-differential = ( MINUS / PLUS ) hour [ minute ]
MINUS = %x2D ; minus sign ("-")

<DOT>, <COMMA> 和 <PLUS> 规则在 [RFC4512] 中定义.

上述 ABNF 允许一些不表示有效日期 (在公历中) 和/或有效时间的字符串 (例如 1994 年 2 月 31 日). 此类字符串应该被视为对此语法无效.

如果使用 <g-time-zone> 的 "Z" 形式, 时间值表示协调世界时 (coordinated universal time, 等同于格林威治标准时间); 否则, 该值表示由 <g-differential> 指示的时区中的本地时间. 在后一种情况下, 可以通过从本地时间中减去差值来计算协调世界时. <g-time-zone> 的 "Z" 形式应该优先于 <g-differential> 使用.

如果省略 <minute>, 则 <fraction> 表示小时的小数部分; 否则, 如果省略 <second> 和 <leap-second>, 则 <fraction> 表示分钟的小数部分; 否则, <fraction> 表示秒的小数部分.

示例:

199412161032Z
199412160532-0500

两个示例值表示同一个协调世界时: 1994 年 12 月 16 日上午 10:32.

Generalized Time 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.24 DESC 'Generalized Time' )

该语法对应于 [ASN.1] 中的 GeneralizedTime ASN.1 类型, 约束条件是 SHALL NOT 使用不带差值的本地时间.

3.3.14. Guide​

Guide 语法的值用于建议准则, 这些准则由属性类型与过滤器运算符的组合构成, 用于构造过滤器以搜索特定对象类的条目. Guide 语法已经过时, 不应再用于定义新的属性类型.

该语法值的 LDAP 专用编码由以下 ABNF 定义:

Guide = [ object-class SHARP ] criteria

<object-class> 和 <criteria> 规则在第 3.3.10 节中定义. <SHARP> 规则在 [RFC4512] 中定义.

Guide 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.25 DESC 'Guide' )

Guide 语法对应于 [X.520] 中的 Guide ASN.1 类型.

3.3.15. IA5 String​

IA5 String 语法的值是来自 International Alphabet 5 (IA5) [T.50] 的零个, 一个或多个字符组成的字符串; IA5 是 ASCII 字符集的国际版本. 该语法值的 LDAP 专用编码是未经转换的字符字符串, 符合第 3.2 节中的 <IA5String> 规则.

IA5 String 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.26 DESC 'IA5 String' )

该语法对应于 [ASN.1] 中的 IA5String ASN.1 类型.

3.3.16. Integer​

Integer 语法的值是大小不受限制的整数. 该语法值的 LDAP 专用编码是该数字的可选带符号十进制数字字符串表示 (例如, 数字 1321 表示为字符串 "1321"). 该编码由以下 ABNF 定义:

Integer = ( HYPHEN LDIGIT *DIGIT ) / number

<HYPHEN>, <LDIGIT>, <DIGIT> 和 <number> 规则在 [RFC4512] 中定义.

Integer 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'INTEGER' )

该语法对应于 [ASN.1] 中的 INTEGER ASN.1 类型.

3.3.17. JPEG​

JPEG 语法的值是 JPEG File Interchange Format (JFIF) 格式的图像, 如 [JPEG] 中所述. 该语法值的 LDAP 专用编码是该图像 JFIF 编码的八位位组序列.

JPEG 语法的 LDAP 定义为:

( 1.3.6.1.4.1.1466.115.121.1.28 DESC 'JPEG' )

JPEG 语法对应于以下 ASN.1 类型:

JPEG ::= OCTET STRING (CONSTRAINED BY
{ -- contents octets are an image in the --
-- JPEG File Interchange Format -- })