1998-10-28 13:32:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Network Working Group T. Howes
|
|
|
|
|
Request for Comments: 1960 University of Michigan
|
|
|
|
|
Obsoletes: 1558 June 1996
|
|
|
|
|
Category: Standards Track
|
|
|
|
|
|
|
|
|
|
A String Representation of LDAP Search Filters
|
|
|
|
|
|
|
|
|
|
Status of this Memo
|
|
|
|
|
|
|
|
|
|
This document specifies an Internet standards track protocol for the
|
|
|
|
|
Internet community, and requests discussion and suggestions for
|
|
|
|
|
improvements. Please refer to the current edition of the "Internet
|
|
|
|
|
Official Protocol Standards" (STD 1) for the standardization state
|
|
|
|
|
and status of this protocol. Distribution of this memo is unlimited.
|
|
|
|
|
|
|
|
|
|
1. Abstract
|
|
|
|
|
|
|
|
|
|
The Lightweight Directory Access Protocol (LDAP) [1] defines a
|
|
|
|
|
network representation of a search filter transmitted to an LDAP
|
|
|
|
|
server. Some applications may find it useful to have a common way of
|
|
|
|
|
representing these search filters in a human-readable form. This
|
|
|
|
|
document defines a human-readable string format for representing LDAP
|
|
|
|
|
search filters.
|
|
|
|
|
|
|
|
|
|
2. LDAP Search Filter Definition
|
|
|
|
|
|
|
|
|
|
An LDAP search filter is defined in [1] as follows:
|
|
|
|
|
|
|
|
|
|
Filter ::= CHOICE {
|
|
|
|
|
and [0] SET OF Filter,
|
|
|
|
|
or [1] SET OF Filter,
|
|
|
|
|
not [2] Filter,
|
|
|
|
|
equalityMatch [3] AttributeValueAssertion,
|
|
|
|
|
substrings [4] SubstringFilter,
|
|
|
|
|
greaterOrEqual [5] AttributeValueAssertion,
|
|
|
|
|
lessOrEqual [6] AttributeValueAssertion,
|
|
|
|
|
present [7] AttributeType,
|
|
|
|
|
approxMatch [8] AttributeValueAssertion
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SubstringFilter ::= SEQUENCE {
|
|
|
|
|
type AttributeType,
|
|
|
|
|
SEQUENCE OF CHOICE {
|
|
|
|
|
initial [0] LDAPString,
|
|
|
|
|
any [1] LDAPString,
|
|
|
|
|
final [2] LDAPString
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Howes Standards Track [Page 1]
|
|
|
|
|
|
|
|
|
|
RFC 1960 LDAP Search Filters June 1996
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AttributeValueAssertion ::= SEQUENCE {
|
|
|
|
|
attributeType AttributeType,
|
|
|
|
|
attributeValue AttributeValue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AttributeType ::= LDAPString
|
|
|
|
|
|
|
|
|
|
AttributeValue ::= OCTET STRING
|
|
|
|
|
|
|
|
|
|
LDAPString ::= OCTET STRING
|
|
|
|
|
|
|
|
|
|
where the LDAPString above is limited to the IA5 character set. The
|
|
|
|
|
AttributeType is a string representation of the attribute type name
|
|
|
|
|
and is defined in [1]. The AttributeValue OCTET STRING has the form
|
|
|
|
|
defined in [2]. The Filter is encoded for transmission over a
|
|
|
|
|
network using the Basic Encoding Rules defined in [3], with
|
|
|
|
|
simplifications described in [1].
|
|
|
|
|
|
|
|
|
|
3. String Search Filter Definition
|
|
|
|
|
|
|
|
|
|
The string representation of an LDAP search filter is defined by the
|
|
|
|
|
following grammar. It uses a prefix format.
|
|
|
|
|
|
|
|
|
|
<filter> ::= '(' <filtercomp> ')'
|
|
|
|
|
<filtercomp> ::= <and> | <or> | <not> | <item>
|
|
|
|
|
<and> ::= '&' <filterlist>
|
|
|
|
|
<or> ::= '|' <filterlist>
|
|
|
|
|
<not> ::= '!' <filter>
|
|
|
|
|
<filterlist> ::= <filter> | <filter> <filterlist>
|
|
|
|
|
<item> ::= <simple> | <present> | <substring>
|
|
|
|
|
<simple> ::= <attr> <filtertype> <value>
|
|
|
|
|
<filtertype> ::= <equal> | <approx> | <greater> | <less>
|
|
|
|
|
<equal> ::= '='
|
|
|
|
|
<approx> ::= '~='
|
|
|
|
|
<greater> ::= '>='
|
|
|
|
|
<less> ::= '<='
|
|
|
|
|
<present> ::= <attr> '=*'
|
|
|
|
|
<substring> ::= <attr> '=' <initial> <any> <final>
|
|
|
|
|
<initial> ::= NULL | <value>
|
|
|
|
|
<any> ::= '*' <starval>
|
|
|
|
|
<starval> ::= NULL | <value> '*' <starval>
|
|
|
|
|
<final> ::= NULL | <value>
|
|
|
|
|
|
|
|
|
|
<attr> is a string representing an AttributeType, and has the format
|
|
|
|
|
defined in [1]. <value> is a string representing an AttributeValue,
|
|
|
|
|
or part of one, and has the form defined in [2]. If a <value> must
|
|
|
|
|
contain one of the characters '*' or '(' or ')', these characters
|
|
|
|
|
should be escaped by preceding them with the backslash '\' character.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Howes Standards Track [Page 2]
|
|
|
|
|
|
|
|
|
|
RFC 1960 LDAP Search Filters June 1996
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note that although both the <substring> and <present> productions can
|
|
|
|
|
produce the 'attr=*' construct, this construct is used only to denote
|
|
|
|
|
a presence filter.
|
|
|
|
|
|
|
|
|
|
4. Examples
|
|
|
|
|
|
|
|
|
|
This section gives a few examples of search filters written using
|
|
|
|
|
this notation.
|
|
|
|
|
|
|
|
|
|
(cn=Babs Jensen)
|
|
|
|
|
(!(cn=Tim Howes))
|
|
|
|
|
(&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))
|
|
|
|
|
(o=univ*of*mich*)
|
|
|
|
|
|
|
|
|
|
5. Security Considerations
|
|
|
|
|
|
|
|
|
|
Security considerations are not discussed in this memo.
|
|
|
|
|
|
|
|
|
|
6. Bibliography
|
|
|
|
|
|
|
|
|
|
[1] Yeong, W., Howes, T., and S. Kille, "Lightweight
|
|
|
|
|
Directory Access Protocol", RFC 1777, March 1995.
|
|
|
|
|
|
|
|
|
|
[2] Howes, R., Kille, S., Yeong, W., and C. Robbins, "The String
|
|
|
|
|
Representation of Standard Attribute Syntaxes", RFC 1778,
|
|
|
|
|
March 1995.
|
|
|
|
|
|
|
|
|
|
[3] Specification of Basic Encoding Rules for Abstract Syntax
|
|
|
|
|
Notation One (ASN.1). CCITT Recommendation X.209, 1988.
|
|
|
|
|
|
|
|
|
|
7. Author's Address
|
|
|
|
|
|
|
|
|
|
Tim Howes
|
|
|
|
|
University of Michigan
|
|
|
|
|
ITD Research Systems
|
|
|
|
|
535 W William St.
|
|
|
|
|
Ann Arbor, MI 48103-4943
|
|
|
|
|
USA
|
|
|
|
|
|
|
|
|
|
Phone: +1 313 747-4454
|
|
|
|
|
EMail: tim@umich.edu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Howes Standards Track [Page 3]
|
|
|
|
|
|