Network Working Group Tim Howes INTERNET DRAFT University of Michigan 19 December, 1995 A String Representation of LDAP Search Filters 1. Status of this Memo This document is an Internet-Draft. Internet-Drafts are working docu- ments of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as ``work in progress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet- Drafts Shadow Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). 2. 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. 3. 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 Howes [Page 1] RFC DRAFT December 1995 } SubstringFilter ::= SEQUENCE { type AttributeType, SEQUENCE OF CHOICE { initial [0] LDAPString, any [1] LDAPString, final [2] LDAPString } } 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]. 4. String Search Filter Definition The string representation of an LDAP search filter is defined by the following grammar. It uses a prefix format. ::= '(' ')' ::= | | | ::= '&' ::= '|' ::= '!' ::= | ::= | | ::= ::= | | | ::= '=' ::= '~=' ::= '>=' ::= '<=' ::= '=*' Howes [Page 2] RFC DRAFT December 1995 ::= '=' ::= NULL | ::= '*' ::= NULL | '*' ::= NULL | is a string representing an AttributeType, and has the format defined in [1]. is a string representing an AttributeValue, or part of one, and has the form defined in [2]. If a must contain one of the characters '*' or '(' or ')', these characters should be escaped by preceding them with the backslash '\' character. Note that although both the and productions can produce the 'attr=*' construct, this construct is used only to denote a presence filter. 5. 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*) 6. Security Considerations Security considerations are not discussed in this document. 7. Bibliography [1] Lightweight Directory Access Protocol. Wengyik Yeong, Tim Howes, Steve Kille, Request for Comment (RFC) 1777, March 1995 [2] The String Representation of Standard Attribute Syntaxes. T. Howes, S. Kille, W. Yeong, C.J. Robbins; Request for Comment (RFC) 1778, March 1995 [3] Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1). CCITT Recommendation X.209, 1988. 8. Author's Address Tim Howes University of Michigan ITD Research Systems 535 W William St. Ann Arbor, MI 48103-4943 Howes [Page 3] RFC DRAFT December 1995 USA +1 313 747-4454 tim@umich.edu Howes [Page 4]