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