跳到主要内容

4.2. 匹配规则定义 (A-G) (Matching Rule Definitions)

在求值以下匹配规则时, 断言值和属性值中指定的字符串会按照 LDAP 的字符串准备算法 [RFC4518] 进行准备:

numericStringMatch,
numericStringSubstringsMatch,
caseExactMatch,
caseExactOrderingMatch,
caseExactSubstringsMatch,
caseExactIA5Match,
caseIgnoreIA5Match,
caseIgnoreIA5SubstringsMatch,
caseIgnoreListMatch,
caseIgnoreListSubstringsMatch,
caseIgnoreMatch,
caseIgnoreOrderingMatch,
caseIgnoreSubstringsMatch,
directoryStringFirstComponentMatch,
telephoneNumberMatch,
telephoneNumberSubstringsMatch and
wordMatch.

Transcode,Normalize,Prohibit 和 Check bidi 步骤对每个匹配规则都是相同的. 但是, Map 和 Insignificant Character Handling 步骤取决于具体规则, 详见以下各节中对这些匹配规则的说明.

4.2.1. bitStringMatch

bitStringMatch 规则将 Bit String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 BIT STRING, 例如 Bit String 语法.

如果属性语法对应的 ASN.1 类型没有命名位列表 (named bit list) [ASN.1] (Bit String 语法就是这种情况), 则当且仅当属性值与断言值具有相同的位数, 且各位按位匹配时, 该规则求值为 TRUE.

如果对应的 ASN.1 类型确实具有命名位列表, 则 bitStringMatch 按上述方式运行, 但属性值和断言值中的尾随零位会被视为不存在.

bitStringMatch 规则的 LDAP 定义为:

( 2.5.13.16 NAME 'bitStringMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )

bitStringMatch 规则是相等匹配规则.

4.2.2. booleanMatch

booleanMatch 规则将 Boolean 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 BOOLEAN, 例如 Boolean 语法.

当且仅当属性值和断言值均为 TRUE 或均为 FALSE 时, 该规则求值为 TRUE.

booleanMatch 规则的 LDAP 定义为:

( 2.5.13.13 NAME 'booleanMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )

booleanMatch 规则是相等匹配规则.

4.2.3. caseExactIA5Match

caseExactIA5Match 规则将 IA5 String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 IA5String, 例如 IA5 String 语法.

当且仅当准备后的属性值字符串与准备后的断言值字符串具有相同的字符数, 且对应字符具有相同码点时, 该规则求值为 TRUE.

在准备属性值和断言值以便比较时, Map 准备步骤不会对字符进行大小写折叠 (case folded), 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseExactIA5Match 规则的 LDAP 定义为:

( 1.3.6.1.4.1.1466.109.114.1 NAME 'caseExactIA5Match'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

caseExactIA5Match 规则是相等匹配规则.

4.2.4. caseExactMatch

caseExactMatch 规则将 Directory String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString 或 DirectoryString 的某个替代字符串类型, 例如 Directory String,Printable String,Country String 或 Telephone Number 语法; PrintableString 就是这样的替代类型之一 (其他替代类型不对应本文档中定义的任何语法).

当且仅当准备后的属性值字符串与准备后的断言值字符串具有相同的字符数, 且对应字符具有相同码点时, 该规则求值为 TRUE.

在准备属性值和断言值以便比较时, Map 准备步骤不会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseExactMatch 规则的 LDAP 定义为:

( 2.5.13.5 NAME 'caseExactMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

caseExactMatch 规则是相等匹配规则.

4.2.5. caseExactOrderingMatch

caseExactOrderingMatch 规则将 Directory String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString 或其替代字符串类型之一, 例如 Directory String,Printable String,Country String 或 Telephone Number 语法.

当且仅当按码点排序顺序 (code point collation order), 准备后的属性值字符串早于准备后的断言值字符串时, 该规则求值为 TRUE; 即, 属性值 "小于" 断言值.

在准备属性值和断言值以便比较时, Map 准备步骤不会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseExactOrderingMatch 规则的 LDAP 定义为:

( 2.5.13.6 NAME 'caseExactOrderingMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

caseExactOrderingMatch 规则是排序匹配规则 (ordering matching rule).

4.2.6. caseExactSubstringsMatch

caseExactSubstringsMatch 规则将 Substring Assertion 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString 或其替代字符串类型之一, 例如 Directory String,Printable String,Country String 或 Telephone Number 语法.

当且仅当满足以下条件时, 该规则求值为 TRUE: (1) 断言值中准备后的各子串按照其在断言值中的顺序, 匹配准备后的属性值字符串中互不重叠的部分, (2) 如果存在 <initial> 子串, 它匹配准备后的属性值字符串的开头, 且 (3) 如果存在 <final> 子串, 它匹配准备后的属性值字符串的结尾. 如果对应字符具有相同码点, 则准备后的子串匹配准备后的属性值字符串的一部分.

在准备属性值和断言值子串以便比较时, Map 准备步骤不会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseExactSubstringsMatch 规则的 LDAP 定义为:

( 2.5.13.7 NAME 'caseExactSubstringsMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )

caseExactSubstringsMatch 规则是子串匹配规则.

4.2.7. caseIgnoreIA5Match

caseIgnoreIA5Match 规则将 IA5 String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 IA5String, 例如 IA5 String 语法.

当且仅当准备后的属性值字符串与准备后的断言值字符串具有相同的字符数, 且对应字符具有相同码点时, 该规则求值为 TRUE.

在准备属性值和断言值以便比较时, Map 准备步骤会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseIgnoreIA5Match 规则的 LDAP 定义为:

( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

caseIgnoreIA5Match 规则是相等匹配规则.

4.2.8. caseIgnoreIA5SubstringsMatch

caseIgnoreIA5SubstringsMatch 规则将 Substring Assertion 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 IA5String, 例如 IA5 String 语法.

当且仅当满足以下条件时, 该规则求值为 TRUE: (1) 断言值中准备后的各子串按照其在断言值中的顺序, 匹配准备后的属性值字符串中互不重叠的部分, (2) 如果存在 <initial> 子串, 它匹配准备后的属性值字符串的开头, 且 (3) 如果存在 <final> 子串, 它匹配准备后的属性值字符串的结尾. 如果对应字符具有相同码点, 则准备后的子串匹配准备后的属性值字符串的一部分.

在准备属性值和断言值子串以便比较时, Map 准备步骤会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

( 1.3.6.1.4.1.1466.109.114.3 NAME 'caseIgnoreIA5SubstringsMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )

caseIgnoreIA5SubstringsMatch 规则是子串匹配规则.

4.2.9. caseIgnoreListMatch

caseIgnoreListMatch 规则将由字符串序列构成的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString ASN.1 类型的 SEQUENCE OF, 例如 Postal Address 语法.

当且仅当属性值和断言值具有相同数量的字符串, 且对应字符串 (按位置) 根据 caseIgnoreMatch 匹配规则相匹配时, 该规则求值为 TRUE.

在 [X.520] 中, 此匹配规则的断言语法定义为:

SEQUENCE OF DirectoryString {ub-match}

也就是说, 它不同于 Postal Address 语法的对应类型. 在 LDAP 中为 caseIgnoreListMatch 的断言语法选择 Postal Address 语法, 不应被理解为将该匹配规则限制为只能应用到具有 Postal Address 语法的属性.

caseIgnoreListMatch 规则的 LDAP 定义为:

( 2.5.13.11 NAME 'caseIgnoreListMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )

caseIgnoreListMatch 规则是相等匹配规则.

4.2.10. caseIgnoreListSubstringsMatch

caseIgnoreListSubstringsMatch 规则将 Substring Assertion 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString ASN.1 类型的 SEQUENCE OF, 例如 Postal Address 语法.

当且仅当断言值按照 caseIgnoreSubstringsMatch 规则, 匹配由属性值各字符串串接形成的字符串时, 该规则求值为 TRUE; 但断言值的 <initial>,<any><final> 子串均不被视为匹配跨越属性值中多个原始字符串的串接字符串子串.

注意, 从 Postal Address 语法的 LDAP 特定编码来看, 串接字符串省略了 <DOLLAR> 行分隔符, 以及 "" 和 "$" 字符的转义.

caseIgnoreListSubstringsMatch 规则的 LDAP 定义为:

( 2.5.13.12 NAME 'caseIgnoreListSubstringsMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )

caseIgnoreListSubstringsMatch 规则是子串匹配规则.

4.2.11. caseIgnoreMatch

caseIgnoreMatch 规则将 Directory String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString 或其替代字符串类型之一, 例如 Directory String,Printable String,Country String 或 Telephone Number 语法.

当且仅当准备后的属性值字符串与准备后的断言值字符串具有相同的字符数, 且对应字符具有相同码点时, 该规则求值为 TRUE.

在准备属性值和断言值以便比较时, Map 准备步骤会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseIgnoreMatch 规则的 LDAP 定义为:

( 2.5.13.2 NAME 'caseIgnoreMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

caseIgnoreMatch 规则是相等匹配规则.

4.2.12. caseIgnoreOrderingMatch

caseIgnoreOrderingMatch 规则将 Directory String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString 或其替代字符串类型之一, 例如 Directory String,Printable String,Country String 或 Telephone Number 语法.

当且仅当按码点排序顺序, 准备后的属性值字符串早于准备后的断言值字符串时, 该规则求值为 TRUE; 即, 属性值 "小于" 断言值.

在准备属性值和断言值以便比较时, Map 准备步骤会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseIgnoreOrderingMatch 规则的 LDAP 定义为:

( 2.5.13.3 NAME 'caseIgnoreOrderingMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

caseIgnoreOrderingMatch 规则是排序匹配规则.

4.2.13. caseIgnoreSubstringsMatch

caseIgnoreSubstringsMatch 规则将 Substring Assertion 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DirectoryString 或其替代字符串类型之一, 例如 Directory String,Printable String,Country String 或 Telephone Number 语法.

当且仅当满足以下条件时, 该规则求值为 TRUE: (1) 断言值中准备后的各子串按照其在断言值中的顺序, 匹配准备后的属性值字符串中互不重叠的部分, (2) 如果存在 <initial> 子串, 它匹配准备后的属性值字符串的开头, 且 (3) 如果存在 <final> 子串, 它匹配准备后的属性值字符串的结尾. 如果对应字符具有相同码点, 则准备后的子串匹配准备后的属性值字符串的一部分.

在准备属性值和断言值子串以便比较时, Map 准备步骤会对字符进行大小写折叠, 并且 Insignificant Character Handling 步骤仅应用 Insignificant Space Handling.

caseIgnoreSubstringsMatch 规则的 LDAP 定义为:

( 2.5.13.4 NAME 'caseIgnoreSubstringsMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )

caseIgnoreSubstringsMatch 规则是子串匹配规则.

4.2.14. directoryStringFirstComponentMatch

directoryStringFirstComponentMatch 规则将 Directory String 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型是一个 SEQUENCE, 且其必选第一组件为 DirectoryString ASN.1 类型.

注意, 此匹配规则的断言语法不同于以该规则作为相等匹配规则的属性的属性语法.

当且仅当断言值使用 caseIgnoreMatch 的规则匹配属性值的第一组件时, 该规则求值为 TRUE.

directoryStringFirstComponentMatch 匹配规则的 LDAP 定义为:

( 2.5.13.31 NAME 'directoryStringFirstComponentMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

directoryStringFirstComponentMatch 规则是相等匹配规则. 使用 directoryStringFirstComponentMatch 比较两个属性值 (其语法适用该规则) 时, 必须先从其中一个属性值派生出一个断言值. 可以通过取得该属性值的第一组件来派生断言值.

4.2.15. distinguishedNameMatch

distinguishedNameMatch 规则将 DN 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 DistinguishedName, 例如 DN 语法.

当且仅当属性值和断言值具有相同数量的相对可分辨名称 (relative distinguished names, RDN), 且对应的相对可分辨名称 (按位置) 相同时, 该规则求值为 TRUE. 当且仅当断言值中的某个 RDN 与属性值中的某个 RDN 具有相同数量的属性值断言 (attribute value assertions, AVA), 并且第一个 RDN 中的每个 AVA 都与第二个 RDN 中具有相同属性类型的 AVA 相同时, 这两个 RDN 相同. AVA 的顺序不重要. 还需注意, 特定属性类型在一个 RDN 中最多只能出现在一个 AVA 中. 具有相同属性类型的两个 AVA, 如果其值根据该属性类型的相等匹配规则相等, 则二者相同. 如果一个或多个 AVA 比较求值为 Undefined, 且其余 AVA 比较返回 TRUE, 则 distinguishedNameMatch 规则求值为 Undefined.

distinguishedNameMatch 规则的 LDAP 定义为:

( 2.5.13.1 NAME 'distinguishedNameMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

distinguishedNameMatch 规则是相等匹配规则.

4.2.16. generalizedTimeMatch

generalizedTimeMatch 规则将 Generalized Time 语法的断言值与某一语法的属性值进行比较, 该语法对应的 ASN.1 类型为 GeneralizedTime, 例如 Generalized Time 语法.

当且仅当属性值表示的协调世界时 (universal coordinated time) 与断言值相同时, 该规则求值为 TRUE. 如果指定时间时省略了分钟或秒, 则分钟数或秒数 (分别地) 假定为零.

generalizedTimeMatch 规则的 LDAP 定义为:

( 2.5.13.27 NAME 'generalizedTimeMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )

generalizedTimeMatch 规则是相等匹配规则.