RFC 3671
Collective Attributes in the Lightweight Directory Access Protocol (LDAP)
RFC 3671: Collective Attributes in LDAP ๐
Okay bestie, let's get the title block out of the way first ๐. This doc is by K. Zeilenga from the OpenLDAP Foundation, dated December 2003, and it's on the Standards Track ๐ฆ. It's an RFC from the Network Working Group, so it's an official Internet standard, not just a suggestion ๐. The title block doesn't list anything it obsoletes or updates.
Status of This Memo โจ
Okay so this bit says it's an Internet standards track protocol for the Internet community, and it wants feedback and ideas for making it better ๐ซถ. If you want to know where it sits in the official standards world, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐. And yes, you're allowed to share it around, distribution is unlimited ๐ .
Copyright Notice ๐ธ
The Internet Society owns the copyright here (2003) and all rights are reserved ๐.
Abstract ๐ง
X.500 collective attributes let a bunch of entries share the same characteristics as a group ๐. This doc sums up the X.500 information model for collective attributes, explains how to use them in LDAP (Lightweight Directory Access Protocol), and gives the schema definitions you'll need for LDAP ๐.
1. Introduction โจ
In X.500 [X.500], a collective attribute is "a user attribute whose values are the same for each member of an entry collection" [X.501] ๐ฆ. This document explains how to use them in the Lightweight Directory Access Protocol (LDAP) [RFC3377] ๐ .
1.1. Entry Collections ๐
An entry collection is a group of object and alias entries that are grouped together because they share some common properties or a relationship, and they share certain attributes ๐ซถ. Basically, the collection is everything inside the scope of a collective attributes subentry [RFC3672] ๐. The really iconic part is that one entry can belong to several entry collections at once ๐ฅ.
1.2. Collective Attributes ๐
The attributes that the entries in an entry collection all share are called collective attributes โจ. Clients who access entries in the collection can see the values, but they can't update them ๐. You change collective attributes through their collective attributes subentry, and that's the only way ๐.
When an entry is in multiple entry collections, its values for each collective attribute get merged together, so clients never see that the values came from different places ๐ง.
An entry can also opt out of a particular collective attribute by listing that attribute as a value of the collectiveExclusions attribute ๐. Like any other user attribute, collective attributes are covered by all sorts of controls, including access, administrative, and content controls ๐.
1.3. Conventions ๐
The schema definitions use LDAPv3 [RFC2251] description formats [RFC2252] ๐. The definitions in this doc are line wrapped so they're easier to read โจ.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] ๐ฆ.
2. System Schema for Collective Attributes ๐
The following operational attributes are used to manage collective attributes ๐ . LDAP servers [RFC3377] MUST act in accordance with the X.500 Directory Models [X.501] when they provide this service ๐ฅ.
2.1. collectiveAttributeSubentry ๐
Subentries of this object class are used to administer collective attributes, and they're called collective attribute subentries ๐ง.
( 2.5.17.2 NAME 'collectiveAttributeSubentry' AUXILIARY )
A collective attribute subentry SHOULD contain at least one collective attribute ๐. The collective attributes inside a subentry can be found, searched, and compared at every entry in the subentry's scope ๐. But they're changed (modified) through the subentry itself ๐ซถ.
Implementations of this specification SHOULD support collective attribute subentries in both collectiveAttributeSpecificArea (2.5.23.5) and collectiveAttributeInnerArea (2.5.23.6) administrative areas [RFC3672][X.501] ๐ธ.
2.2. collectiveAttributeSubentries ๐
The collectiveAttributeSubentries operational attribute lists every collective attribute subentry that affects the entry โจ.
( 2.5.18.12 NAME 'collectiveAttributeSubentries'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
USAGE directoryOperation NO-USER-MODIFICATION )
2.3. collectiveExclusions ๐
The collectiveExclusions operational attribute lets particular collective attributes be excluded from an entry ๐ซ. It MAY appear in any entry and MAY have multiple values ๐
.
( 2.5.18.7 NAME 'collectiveExclusions'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
USAGE directoryOperation )
The descriptor excludeAllCollectiveAttributes goes with the OID 2.5.18.0 ๐ฆ. If that descriptor or OID shows up as a value of collectiveExclusions, then every collective attribute gets excluded from the entry ๐.
3. Collective Attribute Types ๐
An attribute type in userApplications can be defined as COLLECTIVE [RFC2252] ๐. That means the same attribute values show up in the entries of an entry collection, unless collectiveExclusions or other administrative controls step in ๐ง. Those administrative controls MAY include DIT Content Rules, if they're implemented ๐ธ.
Collective attribute types are usually defined as subtypes of non-collective attribute types ๐. By convention, a collective attribute gets named by putting "c-" in front of the name of its non-collective supertype โจ. For example, the collective telephone attribute is named c-TelephoneNumber, after its non-collective supertype telephoneNumber ๐.
Non-collective attribute types SHALL NOT subtype collective attributes ๐ . Collective attributes SHALL NOT be SINGLE-VALUED ๐ . Collective attribute types SHALL NOT appear in the attribute types of an object class definition ๐ .
Operational attributes SHALL NOT be defined as collective ๐ .
The rest of this section summarizes the collective attributes that come from the ones defined in [X.520] ๐ . The SUPerior attribute types are described in [RFC 2256] for use with LDAP ๐ซถ.
Implementations of this specification SHOULD support the following collective attributes, and they MAY support additional collective attributes too ๐ฅ.
3.1. Collective Locality Name ๐ธ
The c-l attribute type gives a locality name for a collection of entries ๐.
( 2.5.4.7.1 NAME 'c-l'
SUP l COLLECTIVE )
3.2. Collective State or Province Name ๐บ๏ธ
The c-st attribute type gives a state or province name for a collection of entries ๐.
( 2.5.4.8.1 NAME 'c-st'
SUP st COLLECTIVE )
3.3. Collective Street Address ๐ก
The c-street attribute type gives a street address for a collection of entries ๐.
( 2.5.4.9.1 NAME 'c-street'
SUP street COLLECTIVE )
3.4. Collective Organization Name ๐ข
The c-o attribute type gives an organization name for a collection of entries ๐.
( 2.5.4.10.1 NAME 'c-o'
SUP o COLLECTIVE )
3.5. Collective Organizational Unit Name ๐งฉ
The c-ou attribute type gives an organizational unit name for a collection of entries ๐.
( 2.5.4.11.1 NAME 'c-ou'
SUP ou COLLECTIVE )
3.6. Collective Postal Address โ๏ธ
The c-PostalAddress attribute type gives a postal address for a collection of entries ๐.
( 2.5.4.16.1 NAME 'c-PostalAddress'
SUP postalAddress COLLECTIVE )
3.7. Collective Postal Code ๐ฎ
The c-PostalCode attribute type gives a postal code for a collection of entries ๐ธ.
( 2.5.4.17.1 NAME 'c-PostalCode'
SUP postalCode COLLECTIVE )
3.8. Collective Post Office Box ๐ซ
The c-PostOfficeBox attribute type gives a post office box for a collection of entries ๐ฆ.
( 2.5.4.18.1 NAME 'c-PostOfficeBox'
SUP postOfficeBox COLLECTIVE )
3.9. Collective Physical Delivery Office Name ๐ฃ
The c-PhysicalDeliveryOfficeName attribute type gives a physical delivery office name for a collection of entries โจ.
( 2.5.4.19.1 NAME 'c-PhysicalDeliveryOfficeName'
SUP physicalDeliveryOfficeName COLLECTIVE )
3.10. Collective Telephone Number โ๏ธ
The c-TelephoneNumber attribute type gives a telephone number for a collection of entries ๐.
( 2.5.4.20.1 NAME 'c-TelephoneNumber'
SUP telephoneNumber COLLECTIVE )
3.11. Collective Telex Number ๐
The c-TelexNumber attribute type gives a telex number for a collection of entries ๐ง.
( 2.5.4.21.1 NAME 'c-TelexNumber'
SUP telexNumber COLLECTIVE )
3.13. Collective Facsimile Telephone Number ๐
The c-FacsimileTelephoneNumber attribute type gives a facsimile telephone number for a collection of entries ๐.
( 2.5.4.23.1 NAME 'c-FacsimileTelephoneNumber'
SUP facsimileTelephoneNumber COLLECTIVE )
3.14. Collective International ISDN Number ๐
The c-InternationalISDNNumber attribute type gives an international ISDN number for a collection of entries ๐.
( 2.5.4.25.1 NAME 'c-InternationalISDNNumber'
SUP internationalISDNNumber COLLECTIVE )
4. Security Considerations ๐
Collective attributes are just like other attributes: they're subject to access control restrictions and other administrative policy, and this is a big deal ๐จ. Generally speaking, collective attributes you get through an entry in a collection are governed by the same rules that restrict access to that entry's attributes ๐. Collective attributes you get through a subentry are governed by the rules that restrict access to that subentry's attributes ๐๏ธ. But LDAP doesn't have a standard access model, so the details of each server's access control system may be different ๐.
General LDAP security considerations [RFC3377] also apply, so don't skip them ๐.
5. IANA Considerations ๐ฆ
The IANA has registered the LDAP descriptors [RFC3383] defined in this technical specification ๐. The following registration template is suggested ๐ :
Subject: Request for LDAP Descriptor Registration
Descriptor see comments
Object Identifier: see comment
Person & email address to contact for further information:
Kurt Zeilenga <kurt@OpenLDAP.org>
Usage: see comment
Specification: RFC3671
Author/Change Controller: IESG
Comments:
NAME Type OID
------------------------ ---- -----------------
c-FacsimileTelephoneNumber A 2.5.4.23.1
c-InternationalISDNNumber A 2.5.4.25.1
c-PhysicalDeliveryOffice A 2.5.4.19.1
c-PostOfficeBox A 2.5.4.18.1
c-PostalAddress A 2.5.4.16.1
c-PostalCode A 2.5.4.17.1
c-TelephoneNumber A 2.5.4.20.1
c-TelexNumber A 2.5.4.21.1
c-l A 2.5.4.7.1
c-o A 2.5.4.10.1
c-ou A 2.5.4.11.1
c-st A 2.5.4.8.1
c-street A 2.5.4.9.1
collectiveAttributeSubentries A 2.5.18.12
collectiveAttributeSubentry O 2.5.17.2
collectiveExclusions A 2.5.18.7
where Type A is Attribute and Type O is ObjectClass.
The Object Identifiers used in this document were assigned by the ISO/IEC Joint Technical Committee 1 - Subcommittee 6 to identify elements of X.500 schema [X.520] ๐ธ. This document makes no OID assignments. It only provides LDAP schema descriptions using existing elements of the X.500 schema ๐.
6. Intellectual Property Statement ๐
okay bestie, the IETF is basically saying "we are NOT picking sides on who owns what" ๐ โโ๏ธโจ They take no position on whether any intellectual property or other rights someone claims over the tech in this doc are valid, or how far any license under those rights might extend (or whether one exists at all). They also don't claim they went looking for any such rights. ๐ต๏ธโโ๏ธ
If you want the procedures for rights in standards-track and standards-related documents, check out BCP-11 ๐ฆ And if you need copies of claimed rights that were submitted for publication, any assurances that licenses will be made available, or the outcome of an attempt to get a general license or permission for implementers or users of this spec to use those proprietary rights, you can request them from the IETF Secretariat ๐
The IETF also invites any interested party to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology required to practice this standard. Send that info to the IETF Executive Director ๐ซถ
7. Acknowledgments ๐ธ
This document is built on the ITU Recommendations for the Directory, [X.501][X.520]. Big thanks to those folks! ๐
8. References ๐
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2251] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
Access Protocol (v3)", RFC 2251, December 1997.
[RFC2252] Wahl, M., Coulbeck, A., Howes, T. and S. Kille,
"Lightweight Directory Access Protocol (v3): Attribute
Syntax Definitions", RFC 2252, December 1997.
[RFC2256] Wahl, M., "A Summary of the X.500(96) User Schema for use
with LDAPv3", RFC 2256, December 1997.
[RFC3377] Hodges, J. and R. L. Morgan, "Lightweight Directory Access
Protocol (v3): Technical Specification", RFC 3377,
September 2002.
[RFC3383] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
Considerations for the Lightweight Directory Access
Protocol (LDAP)", BCP 64, RFC 3383, September 2002.
[RFC3672] Zeilenga, K. and S. Legg, "Subentries in Lightweight
Directory Access Protocol (LDAP)", RFC 3672, December
2003.
[X.501] "The Directory: Models", ITU-T Recommendation X.501, 1993.
8.2. Informative References
[X.500] "The Directory: Overview of Concepts, Models", ITU-T
Recommendation X.500, 1993.
[X.520] "The Directory: Selected Attribute Types", ITU-T
Recommendation X.520, 1993.
9. Author's Address โ๏ธ
Kurt D. Zeilenga
OpenLDAP Foundation
EMail: Kurt@OpenLDAP.org
10. Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others ๐ Derivative works that comment on or explain it, or help with implementing it, may be prepared, copied, published and distributed, in whole or in part, with no restrictions of any kind, as long as the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way (no deleting the copyright notice or the references to the Internet Society or other Internet organizations). The exception is when needed to develop Internet standards, in which case the copyright procedures in the Internet Standards process must be followed, or when translating it into languages other than English ๐
The limited permissions above are perpetual and will not be revoked by the Internet Society or its successors or assignees. โพ๏ธ
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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.
Acknowledgement ๐ท
Funding for the RFC Editor function is currently provided by the Internet Society. Thank you, Internet Society! ๐ซถโจ
๐ฆ where this page comes from
- ietf: rfc3671 2003-12
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms