RFC 4526

Lightweight Directory Access Protocol (LDAP) Absolute True and False Filters

πŸ“… published June 2006, from ietf

Lightweight Directory Access Protocol (LDAP) Absolute True and False Filters πŸŽ€

Okay bestie, this is RFC 4526 from the Network Working Group 🌸 It's a Standards Track document, which means it's an actual Internet standard, not just a vibe. Kurt D. Zeilenga wrote it for the OpenLDAP Foundation, and it's dated June 2006. The header doesn't list anything it obsoletes or updates, so it's not replacing or patching any other RFC. It's a fresh add-on. ✨


Status of This Memo πŸ“œ

This document specifies an Internet standards track protocol for the Internet community, and it's asking everyone to talk about it and suggest improvements πŸ’¬ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited, so share it with everyone πŸ¦‹

Copyright (C) The Internet Society (2006).

Abstract πŸ’œ

This document extends the Lightweight Directory Access Protocol (LDAP) so it can do absolute True and False filters πŸ”₯ These are based on similar capabilities that already exist in X.500 directory systems. It also extends the String Representation of LDAP Search Filters so those filters can be written as strings too πŸ’…

Table of Contents πŸ—‚οΈ

   1. Background ......................................................1
   2. Absolute True and False Filters .................................2
   3. Security Considerations .........................................2
   4. IANA Considerations .............................................3
   5. References ......................................................3
      5.1. Normative References .......................................3
      5.2. Informative References .....................................3

1. Background 🧚

Okay so the X.500 Directory Access Protocol (DAP) [X.511] already supports absolute True and False assertions πŸ‘‘ An 'and' filter with zero elements always evaluates to True. An 'or' filter with zero elements always evaluates to False. These come up a lot when you're asking for DSA-specific Entries (DSEs), which don't necessarily have 'objectClass' attributes. That's why "(objectClass=*)" might evaluate to False in those cases πŸ™ˆ

LDAPv2 [RFC1777][RFC3494] put no limit on how many elements 'and' and 'or' filter sets could have, but the LDAPv2 string representation [RFC1960][RFC3494] couldn't represent empty 'and' and 'or' filter sets at all. Because of that, absolute True or False filters were (unfortunately) dropped from LDAPv3 [RFC4510] 😭

This document fixes that by extending LDAPv3 to support absolute True and False assertions. It lets empty 'and' and 'or' show up in Search filters [RFC4511], and it extends the filter string representation [RFC4515] so empty filter lists are allowed πŸ’–

Heads up: certain search operations, like the ones used to retrieve subschema information [RFC4512], need particular filters. This document doesn't change those requirements πŸ‘€

This feature is meant to give a more direct mapping between DAP and LDAP, which is what you'd need if you're building DAP-to-LDAP gateways 🌈

In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in BCP 14 [RFC2119]. ⭐

2. Absolute True and False Filters πŸ’…

Implementations of this extension SHALL allow 'and' and 'or' choices with zero filter elements. ✨

An 'and' filter consisting of an empty set of filters SHALL evaluate to True. This filter is represented by the string "(&)". πŸ”₯

An 'or' filter consisting of an empty set of filters SHALL evaluate to False. This filter is represented by the string "(|)". πŸ“

Servers supporting this feature SHOULD publish the Object Identifier 1.3.6.1.4.1.4203.1.5.3 as a value of the 'supportedFeatures' [RFC4512] attribute in the root DSE 🧚

Clients supporting this feature SHOULD NOT use the feature unless they know that the server supports it. Don't be that friend who assumes things πŸ™…β€β™€οΈ

3. Security Considerations πŸ”

The (re)introduction of absolute True and False filters is not believed to raise any new security considerations. Phew 😌

Implementors of this (or any) LDAPv3 extension should be familiar with general LDAPv3 security considerations [RFC4510]. Read those before you ship anything πŸ’€

4. IANA Considerations πŸŽ€

Registration of this feature has been completed by the IANA [RFC4520]. It's official, bestie πŸ‘‘

The registration template looks like this:

   Subject: Request for LDAP Protocol Mechanism Registration Object
   Identifier: 1.3.6.1.4.1.4203.1.5.3 Description: True/False filters
   Person & email address to contact for further information:
        Kurt Zeilenga <kurt@openldap.org> Usage: Feature Specification:
   RFC 4526 Author/Change Controller: IESG Comments: none

This OID was assigned [ASSIGN] by OpenLDAP Foundation, under its IANA-assigned private enterprise allocation [PRIVATE], for use in this specification πŸ¦‹

5. References πŸ“š

5.1. Normative References

   [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
                 Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC4510]     Zeilenga, K., Ed, "Lightweight Directory Access
                 Protocol (LDAP): Technical Specification Road Map", RFC
                 4510, June 2006.

   [RFC4511]     Sermersheim, J., Ed., "Lightweight Directory Access
                 Protocol (LDAP): The Protocol", RFC 4511, June 2006.

   [RFC4512]     Zeilenga, K., "Lightweight Directory Access Protocol
                 (LDAP): Directory Information Models", RFC 4512, June
                 2006.

   [RFC4515]     Smith, M., Ed. and T. Howes, "Lightweight Directory
                 Access Protocol (LDAP): String Representation of Search
                 Filters", RFC 4515, June 2006.

5.2. Informative References

   [RFC1777]     Yeong, W., Howes, T., and S. Kille, "Lightweight
                 Directory Access Protocol", RFC 1777, March 1995.

   [RFC1960]     Howes, T., "A String Representation of LDAP Search
                 Filters", RFC 1960, June 1996.

   [RFC3494]     Zeilenga, K., "Lightweight Directory Access Protocol
                 version 2 (LDAPv2) to Historic Status", RFC 3494, March
                 2003.

   [RFC4520]     Zeilenga, K., "Internet Assigned Numbers Authority
                 (IANA) Considerations for the Lightweight Directory
                 Access Protocol (LDAP)", BCP 64, RFC 4520, June 2006.

   [X.500]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The
                 Directory -- Overview of concepts, models and
                 services," X.500(1993) (also ISO/IEC 9594-1:1994).

   [X.501]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The
                 Directory -- Models," X.501(1993) (also ISO/IEC 9594-
                 2:1994).

   [X.511]       International Telecommunication Union -
                 Telecommunication Standardization Sector, "The
                 Directory: Abstract Service Definition", X.511(1993)
                 (also ISO/IEC 9594-3:1993).

   [ASSIGN]      OpenLDAP Foundation, "OpenLDAP OID Delegations",
                 http://www.openldap.org/foundation/oid-delegate.txt.

   [PRIVATE]     IANA, "Private Enterprise Numbers",
                 http://www.iana.org/assignments/enterprise-numbers.

Author's Address πŸ–ŠοΈ

   Kurt D. Zeilenga
   OpenLDAP Foundation

   EMail: Kurt@OpenLDAP.org

Copyright (C) The Internet Society (2006).

This document is subject to the rights, licenses and restrictions contained in BCP 78. Except as BCP 78 says otherwise, the authors keep all their rights 🫢

This document and the information in it are provided on an "AS IS" basis. THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS, OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property 🧾

The IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that someone might claim cover the implementation or use of the technology described here. It also doesn't say whether any license under those rights is or isn't available, and it hasn't independently tried to find any such rights. You can find information about how rights work for RFC documents in BCP 78 and BCP 79 βš–οΈ

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of attempts to get a general license or permission to use proprietary rights for implementers or users of this specification can be found in the IETF's online IPR repository at http://www.ietf.org/ipr πŸ’Œ

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology needed to implement this standard. Send that information to the IETF at ietf-ipr@ietf.org πŸ“¬

Acknowledgement 🌷

Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA). Thank you, IASA 🫢

πŸ“¦ where this page comes from