3.3. 语法定义 (Syntax Definitions) (L-U)
3.3.18. LDAP 语法描述 (LDAP Syntax Description)
LDAP Syntax Description 语法的值是对某个 LDAP 语法的描述. 此语法值的 LDAP 专用编码由 [RFC4512] 中的 <SyntaxDescription> 规则定义.
LDAP Syntax Description 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.54 DESC 'LDAP Syntax Description' )
以上 LDAP Syntax Description 语法的 LDAP 定义本身也是 LDAP Syntax Description 语法的合法值.
与 LDAP Syntax Description 语法对应的 ASN.1 类型定义如下, 假定使用 EXPLICIT TAGS:
LDAPSyntaxDescription ::= SEQUENCE {
identifier OBJECT IDENTIFIER,
description DirectoryString { ub-schema } OPTIONAL }
DirectoryString 参数化 ASN.1 类型在 [X.520] 中定义.
ub-schema 的值 (一个整数) 由实现定义. 非规范性定义见 [X.520].
3.3.19. 匹配规则描述 (Matching Rule Description)
Matching Rule Description 语法的值是匹配规则 (matching rule) 的定义. 此语法值的 LDAP 专用编码由 [RFC4512] 中的 <MatchingRuleDescription> 规则定义.
示例:
( 2.5.13.2 NAME 'caseIgnoreMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
注: 为便于阅读, 这里添加了换行; 它不是语法的一部分.
Matching Rule Description 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.30 DESC 'Matching Rule Description' )
此语法对应 [X.501] 中的 MatchingRuleDescription ASN.1 类型.
3.3.20. 匹配规则使用描述 (Matching Rule Use Description)
Matching Rule Use Description 语法的值指明某个匹配规则可应用到哪些属性类型, 用于 extensibleMatch 搜索过滤器 [RFC4511]. 此语法值的 LDAP 专用编码由 [RFC4512] 中的 <MatchingRuleUseDescription> 规则定义.
示例:
( 2.5.13.16 APPLIES ( givenName $ surname ) )
Matching Rule Use Description 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.31
DESC 'Matching Rule Use Description' )
此语法对应 [X.501] 中的 MatchingRuleUseDescription ASN.1 类型.
3.3.21. 名称和可选 UID (Name and Optional UID)
Name and Optional UID 语法的值是某个实体的可分辨名称 (distinguished name) [RFC4512], 并且可选地附带一个唯一标识符, 用于将该实体与具有相同可分辨名称的其他实体区分开.
此语法值的 LDAP 专用编码由以下 ABNF 定义:
NameAndOptionalUID = distinguishedName [ SHARP BitString ]
<BitString> 规则在 Section 3.3.2 中定义. <distinguishedName> 规则在 [RFC4514] 中定义. <SHARP> 规则在 [RFC4512] 中定义.
注意, 虽然 '#' 字符可以出现在可分辨名称的字符串表示中, 但当 <distinguishedName> 编码到 <NameAndOptionalUID> 中时, 不会对该字符执行额外转义.
示例:
1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B
Name and Optional UID 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.34 DESC 'Name And Optional UID' )
此语法对应 [X.520] 中的 NameAndOptionalUID ASN.1 类型.
3.3.22. 名称形式描述 (Name Form Description)
Name Form Description 语法的值是名称形式 (name form) 的定义, 它规定条目可如何命名. 此语法值的 LDAP 专用编码由 [RFC4512] 中的 <NameFormDescription> 规则定义.
示例:
( 2.5.15.3 NAME 'orgNameForm' OC organization MUST o )
Name Form Description 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.35 DESC 'Name Form Description' )
此语法对应 [X.501] 中的 NameFormDescription ASN.1 类型.
3.3.23. 数字字符串 (Numeric String)
Numeric String 语法的值是由一个或多个数字和空格组成的序列. 此语法值的 LDAP 专用编码是不经转换的字符串, 它符合以下 ABNF:
NumericString = 1*(DIGIT / SPACE)
<DIGIT> 和 <SPACE> 规则在 [RFC4512] 中定义.
示例:
15 079 672 281
Numeric String 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.36 DESC 'Numeric String' )
此语法对应 [ASN.1] 中的 NumericString ASN.1 类型.
3.3.24. 对象类描述 (Object Class Description)
Object Class Description 语法的值是对象类 (object class) 的定义. 此语法值的 LDAP 专用编码由 [RFC4512] 中的 <ObjectClassDescription> 规则定义.
示例:
( 2.5.6.2 NAME 'country' SUP top STRUCTURAL MUST c
MAY ( searchGuide $ description ) )
注: 为便于阅读, 这里添加了换行; 它不是语法的一部分.
Object Class Description 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.37 DESC 'Object Class Description' )
此语法对应 [X.501] 中的 ObjectClassDescription ASN.1 类型.
3.3.25. 八位组字符串 (Octet String)
Octet String 语法的值是零个, 一个或多个任意八位组 (octet) 的序列. 此语法值的 LDAP 专用编码是不经转换的八位组序列, 它符合以下 ABNF:
OctetString = *OCTET
<OCTET> 规则在 [RFC4512] 中定义. 此语法的值通常不是人类可读的.
Octet String 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.40 DESC 'Octet String' )
此语法对应 [ASN.1] 中的 OCTET STRING ASN.1 类型.
3.3.26. OID
OID 语法的值是对象标识符 (object identifier): 由两个或更多非负整数组成的序列, 用于唯一标识某个对象或规范项.LDAP 中使用的许多对象标识符也有 IANA 注册名称 [RFC4520].
此语法值的 LDAP 专用编码由 [RFC4512] 中的 <oid> 规则定义.
示例:
1.2.3.4
cn
OID 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.38 DESC 'OID' )
此语法对应 [ASN.1] 中的 OBJECT IDENTIFIER ASN.1 类型.
3.3.27. 其他邮箱 (Other Mailbox)
Other Mailbox 语法的值用于标识某个特定命名邮件系统中的电子邮箱. 此语法值的 LDAP 专用编码由以下 ABNF 定义:
OtherMailbox = mailbox-type DOLLAR mailbox
mailbox-type = PrintableString
mailbox = IA5String
<mailbox-type> 规则表示邮箱所在邮件系统的类型 (例如 "MCIMail"), <mailbox> 是 <mailbox-type> 所描述邮件系统中的实际邮箱. <PrintableString> 和 <IA5String> 规则在 Section 3.2 中定义. <DOLLAR> 规则在 [RFC4512] 中定义.
Other Mailbox 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.39 DESC 'Other Mailbox' )
与 Other Mailbox 语法对应的 ASN.1 类型定义如下, 假定使用 EXPLICIT TAGS:
OtherMailbox ::= SEQUENCE {
mailboxType PrintableString,
mailbox IA5String
}
3.3.28. 邮政地址 (Postal Address)
Postal Address 语法的值是一个字符串序列, 每个字符串由一个或多个任意 UCS 字符组成, 共同构成物理邮件系统中的地址.
此语法值的 LDAP 专用编码由以下 ABNF 定义:
PostalAddress = line *( DOLLAR line )
line = 1*line-char
line-char = %x00-23
/ (%x5C "24") ; escaped "$"
/ %x25-5B
/ (%x5C "5C") ; escaped "\"
/ %x5D-7F
/ UTFMB
邮政地址值中的每个字符串 (即 <line>) 编码为 UTF-8 [RFC3629] 字符串, 但如果字符串中出现 "" 和 "$" 字符, 则用 "" 字符后跟该字符的两位十六进制数字代码进行转义. <DOLLAR> 和 <UTFMB> 规则在 [RFC4512] 中定义.
许多服务器将邮政地址限制为不超过六行, 且每行不超过三十个字符.
示例:
1234 Main St.$Anytown, CA 12345$USA
\241,000,000 Sweepstakes$PO Box 1000000$Anytown, CA 12345$USA
Postal Address 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.41 DESC 'Postal Address' )
此语法对应 [X.520] 中的 PostalAddress ASN.1 类型; 即:
PostalAddress ::= SEQUENCE SIZE(1..ub-postal-line) OF
DirectoryString { ub-postal-string }
ub-postal-line 和 ub-postal-string 的值 (二者均为整数) 由实现定义. 非规范性定义见 [X.520].
3.3.29. 可打印字符串 (Printable String)
Printable String 语法的值是一个或多个拉丁字母, 数字以及选定标点字符组成的字符串, 具体由 Section 3.2 中的 <PrintableCharacter> 规则规定.
此语法值的 LDAP 专用编码是不经转换的字符串, 它符合 Section 3.2 中的 <PrintableString> 规则.
示例:
This is a PrintableString.
PrintableString 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.44 DESC 'Printable String' )
此语法对应 [ASN.1] 中的 PrintableString ASN.1 类型.
3.3.30. 子串断言 (Substring Assertion)
Substring Assertion 语法的值是零个, 一个或多个字符子串组成的序列, 用作字符字符串属性值的子串可扩展匹配 (substring extensible matching) 的参数; 即, 作为 MatchingRuleAssertion [RFC4511] 的 matchValue. 每个子串是由通用字符集 (Universal Character Set, UCS) [UCS] 中一个或多个任意字符组成的字符串. 不允许零长度子串.
此语法值的 LDAP 专用编码由以下 ABNF 定义:
SubstringAssertion = [ initial ] any [ final ]
initial = substring
any = ASTERISK *(substring ASTERISK)
final = substring
ASTERISK = %x2A ; asterisk ("*")
substring = 1*substring-character
substring-character = %x00-29
/ (%x5C "2A") ; escaped "*"
/ %x2B-5B
/ (%x5C "5C") ; escaped "\"
/ %x5D-7F
/ UTFMB
Substring Assertion 值中的每个 <substring> 编码为 UTF-8 [RFC3629] 字符串, 但如果子串中出现 "" 和 "*" 字符, 则用 "" 字符后跟该字符的两位十六进制数字代码进行转义.
Substring Assertion 语法仅用作 extensible match 中断言值的语法. 它不用作属性语法, 也不用于 SubstringFilter [RFC4511].
Substring Assertion 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.58 DESC 'Substring Assertion' )
此语法对应 [X.520] 中的 SubstringAssertion ASN.1 类型.
3.3.31. 电话号码 (Telephone Number)
Telephone Number 语法的值是一个可打印字符组成的字符串, 符合国际上约定的国际电话号码表示格式 [E.123].
此语法值的 LDAP 专用编码是不经转换的字符串, 它符合 Section 3.2 中的 <PrintableString> 规则.
示例:
+1 512 315 0280
+1-512-315-0280
+61 3 9896 7830
Telephone Number 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.50 DESC 'Telephone Number' )
Telephone Number 语法对应 [X.520] 中的以下 ASN.1 类型:
PrintableString (SIZE(1..ub-telephone-number))
ub-telephone-number 的值 (一个整数) 由实现定义. 非规范性定义见 [X.520].
3.3.32. Teletex 终端标识符 (Teletex Terminal Identifier)
此语法的值指定 teletex 终端的标识符以及 (可选的) 参数.
此语法值的 LDAP 专用编码由以下 ABNF 定义:
teletex-id = ttx-term *(DOLLAR ttx-param)
ttx-term = PrintableString ; terminal identifier
ttx-param = ttx-key COLON ttx-value ; parameter
ttx-key = "graphic" / "control" / "misc" / "page" / "private"
ttx-value = *ttx-value-octet
ttx-value-octet = %x00-23
/ (%x5C "24") ; escaped "$"
/ %x25-5B
/ (%x5C "5C") ; escaped "\"
/ %x5D-FF
<PrintableString> 和 <COLON> 规则在 Section 3.2 中定义. <DOLLAR> 规则在 [RFC4512] 中定义.
Teletex Terminal Identifier 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.51
DESC 'Teletex Terminal Identifier' )
此语法对应 [X.520] 中的 TeletexTerminalIdentifier ASN.1 类型.
3.3.33. Telex 号码 (Telex Number)
Telex Number 语法的值指定 telex 终端的 telex 号码, 国家代码和应答码.
此语法值的 LDAP 专用编码由以下 ABNF 定义:
telex-number = actual-number DOLLAR country-code
DOLLAR answerback
actual-number = PrintableString
country-code = PrintableString
answerback = PrintableString
<PrintableString> 规则在 Section 3.2 中定义. <DOLLAR> 规则在 [RFC4512] 中定义.
Telex Number 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.52 DESC 'Telex Number' )
此语法对应 [X.520] 中的 TelexNumber ASN.1 类型.
3.3.34. UTC 时间 (UTC Time)
UTC Time 语法的值是表示日期和时间的字符串, 精度为一分钟或一秒. 年份以两位数字给出. 此语法值的 LDAP 专用编码遵循 [ASN.1] 中为 UTCTime 类型定义的格式, 并由以下 ABNF 描述:
UTCTime = year month day hour minute [ second ]
[ u-time-zone ]
u-time-zone = %x5A ; "Z"
/ u-differential
u-differential = ( MINUS / PLUS ) hour minute
<year>, <month>, <day>, <hour>, <minute>, <second> 和 <MINUS> 规则在 Section 3.3.13 中定义. <PLUS> 规则在 [RFC4512] 中定义.
上述 ABNF 允许不表示有效日期 (在公历中) 和/或有效时间的字符串. 此类字符串对于该语法应该被视为无效.
如果使用 <u-time-zone> 的 "Z" 形式, 时间值表示协调世界时 (coordinated universal time); 否则, 该值表示本地时间. 在后一种情况下, 如果提供了 <u-differential>, 则可以从本地时间中减去该差值来计算协调世界时. <u-time-zone> 应该出现在时间值中, 并且 <u-time-zone> 的 "Z" 形式应该优先于 <u-differential> 使用.
UTC Time 语法的 LDAP 定义为:
( 1.3.6.1.4.1.1466.115.121.1.53 DESC 'UTC Time' )
注: 此语法已弃用, 推荐使用 Generalized Time 语法.
UTC Time 语法对应 [ASN.1] 中的 UTCTime ASN.1 类型.