RFC 4519
Lightweight Directory Access Protocol (LDAP): Schema for User Applications
Lightweight Directory Access Protocol (LDAP): Schema for User Applications ๐
okay bestie, this is RFC 4519 ๐ It's a Standards Track doc from June 2006, written by A. Sciberras, Ed. of eB2Bcom. It obsoletes RFC 2256 and updates RFC 2247, RFC 2798, and RFC 2377 ๐ฆ It's the schema part of the LDAP spec, the list of user-info attribute types and object classes that lots of directories (like White Pages) use. Let's go โจ
Status of This Memo ๐
ok so this doc is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐ซถ If you want to check where it stands, look at the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited, so share it with everyone ๐
Copyright Notice โ๏ธ
Copyright (C) The Internet Society (2006). ๐
Abstract โจ
this document is an integral part of the Lightweight Directory Access Protocol (LDAP) technical spec, and it's giving attribute types and object classes for LDAP directory clients, used across many directory services like White Pages ๐ Lots of LDAP directories use these as their schema basis, which is iconic ๐ It does not cover attributes for administering directory servers, and it doesn't include directory objects made for specific uses in other documents. Not in scope, bestie ๐
Table of Contents ๐๏ธ
1. Introduction ....................................................3
1.1. Relationship with Other Specifications .....................3
1.2. Conventions ................................................4
1.3. General Issues .............................................4
2. Attribute Types .................................................4
2.1. 'businessCategory' .........................................5
2.2. 'c' ........................................................5
2.3. 'cn' .......................................................5
2.4. 'dc' .......................................................6
2.5. 'description' ..............................................6
2.6. 'destinationIndicator' .....................................7
2.7. 'distinguishedName' ........................................7
2.8. 'dnQualifier' ..............................................8
2.9. 'enhancedSearchGuide' ......................................8
2.10. 'facsimileTelephoneNumber' ................................9
2.11. 'generationQualifier' .....................................9
2.12. 'givenName' ...............................................9
2.13. 'houseIdentifier' .........................................9
2.14. 'initials' ...............................................10
2.15. 'internationalISDNNumber' ................................10
2.16. 'l' ......................................................10
2.17. 'member' .................................................11
2.18. 'name' ...................................................11
2.19. 'o' ......................................................11
2.20. 'ou' .....................................................12
2.21. 'owner' ..................................................12
2.22. 'physicalDeliveryOfficeName' .............................12
2.23. 'postalAddress' ..........................................13
2.24. 'postalCode' .............................................13
2.25. 'postOfficeBox' ..........................................14
2.26. 'preferredDeliveryMethod' ................................14
2.27. 'registeredAddress' ......................................14
2.28. 'roleOccupant' ...........................................15
2.29. 'searchGuide' ............................................15
2.30. 'seeAlso' ................................................15
2.31. 'serialNumber' ...........................................16
2.32. 'sn' .....................................................16
2.33. 'st' .....................................................16
2.34. 'street' .................................................17
2.35. 'telephoneNumber' ........................................17
2.36. 'teletexTerminalIdentifier' ..............................17
2.37. 'telexNumber' ............................................18
2.38. 'title' ..................................................18
2.39. 'uid' ....................................................18
2.40. 'uniqueMember' ...........................................19
2.41. 'userPassword' ...........................................19
2.42. 'x121Address' ............................................20
2.43. 'x500UniqueIdentifier' ...................................20
3. Object Classes .................................................20
3.1. 'applicationProcess' ......................................21
3.2. 'country' .................................................21
3.3. 'dcObject' ................................................21
3.4. 'device' ..................................................21
3.5. 'groupOfNames' ............................................22
3.6. 'groupOfUniqueNames' ......................................22
3.7. 'locality' ................................................23
3.8. 'organization' ............................................23
3.9. 'organizationalPerson' ....................................24
3.10. 'organizationalRole' .....................................24
3.11. 'organizationalUnit' .....................................24
3.12. 'person' .................................................25
3.13. 'residentialPerson' ......................................25
3.14. 'uidObject' ..............................................26
4. IANA Considerations ............................................26
5. Security Considerations ........................................28
6. Acknowledgements ...............................................28
7. References .....................................................29
7.1. Normative References ......................................29
7.2. Informative References ....................................30
Appendix A Changes Made Since RFC 2256 ...........................32
1. Introduction ๐ธ
okay so this doc gives you an overview of attribute types and object classes meant for LDAP directory clients across lots of directory services, like White Pages ๐ They were first specified in the X.500 [X.500] documents, and now they're the basis for the schema in tons of LDAP directories, which is so iconic ๐ฅ Again, no admin-of-the-server attributes here, and no objects for specific uses from other docs ๐
1.1. Relationship with Other Specifications ๐ฆ
this doc is an integral part of the LDAP technical spec [RFC4510]. That spec obsoletes the earlier LDAP technical spec, RFC 3377, completely ๐ Now for RFC 2256, which is the one this doc obsoletes. Sections 6 and 8 of RFC 2256 are obsoleted by [RFC4517]. Sections 5.1, 5.2, 7.1, and 7.2 of RFC 2256 are obsoleted by [RFC4512]. Everything else from RFC 2256 is obsoleted by this document โจ
The 'dc' attribute type and 'dcObject' object class from RFC 2247 are superseded by sections 2.4 and 3.3 of this document. The rest of RFC 2247 stays in force, so it's not all gone ๐ซถ
This document updates RFC 2798 by swapping out the informative description of the 'uid' attribute type for the definitive one in Section 2.39 of this document ๐
This document also updates RFC 2377 by replacing the informative description of the 'uidObject' object class with the definitive description in Section 3.14 of this document ๐
Some schema elements from the previous LDAP Technical Specification aren't in this revision. PKI-related schema elements are now specified in [RFC4523] ๐ Unless they get brought back in future technical specs, the rest are considered Historic ๐ฐ๏ธ
the descriptions in this document SHALL be considered definitive for use in LDAP. No debate, bestie ๐
1.2. Conventions ๐
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 RFC 2119 [RFC2119] ๐ง
1.3. General Issues ๐
this doc references Syntaxes defined in Section 3 of [RFC4517], and Matching Rules defined in Section 4 of [RFC4517] ๐
The definitions of Attribute Types and Object Classes are written using the Augmented Backus-Naur Form (ABNF) [RFC4234] of AttributeTypeDescription and ObjectClassDescription given in [RFC4512]. Lines have been folded for readability ๐ When these values get transferred as attribute values in the LDAP Protocol, they won't contain line breaks, so no surprises ๐ญ
2. Attribute Types ๐
the attribute types in this section hold user information ๐งธ
There is no requirement that servers implement the 'searchGuide' and 'teletexTerminalIdentifier' attribute types. Honestly, their use is greatly discouraged ๐
An LDAP server implementation SHOULD recognize the rest of the attribute types described in this section โจ
2.1. 'businessCategory' ๐ผ
the 'businessCategory' attribute type describes the kinds of business an organization does. Each kind is one value of this multi-valued attribute ๐ข (Source: X.520 [X.520])
( 2.5.4.15 NAME 'businessCategory'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐ค
Examples: "banking", "transportation", and "real estate" ๐ฆ๐๐ก
2.2. 'c' ๐
the 'c' ('countryName' in X.500) attribute type holds a two-letter ISO 3166 [ISO3166] country code ๐บ๏ธ (Source: X.520 [X.520])
( 2.5.4.6 NAME 'c'
SUP name
SYNTAX 1.3.6.1.4.1.1466.115.121.1.11
SINGLE-VALUE )
1.3.6.1.4.1.1466.115.121.1.11 refers to the Country String syntax [RFC4517] ๐
Examples: "DE", "AU" and "FR" ๐ฉ๐ช๐ฆ๐บ๐ซ๐ท
2.3. 'cn' ๐งโ๐คโ๐ง
the 'cn' ('commonName' in X.500) attribute type holds names of an object. Each name is one value of this multi-valued attribute ๐ท๏ธ If the object is a person, it's usually the person's full name, so yes, it's giving main character energy ๐ (Source: X.520 [X.520])
( 2.5.4.3 NAME 'cn'
SUP name )
Examples: "Martin K Smith", "Marty Smith" and "printer12" ๐จ๏ธ๐
2.4. 'dc' ๐
Okay bestie, so 'dc' (that's 'domainComponent' from RFC 1274 ๐ฆ) holds one label of a DNS domain name [RFC1034][RFC2181] that names a host [RFC1123]. Think one chunk, not the whole name โจ. A value is an ASCII string that follows this ABNF [RFC4234]:
label = (ALPHA / DIGIT) [*61(ALPHA / DIGIT / HYPHEN) (ALPHA / DIGIT)]
ALPHA = %x41-5A / %x61-7A ; "A"-"Z" / "a"-"z"
DIGIT = %x30-39 ; "0"-"9"
HYPHEN = %x2D ; hyphen ("-")
For LDAP, the IA5String encoding is literally just the characters of the ASCII label, no extra steps ๐ . Equality matching is case insensitive, same as DNS is today ๐ธ. (Source: RFC 2247 [RFC2247] and RFC 1274 [RFC 1274])
( 0.9.2342.19200300.100.1.25 NAME 'dc'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE )
1.3.6.1.4.1.1466.115.121.1.26 is the IA5 String syntax [RFC4517], so it's giving standard vibes ๐ง
Examples: "example" and "com" are valid ๐ but "example.com" is NOT, because it has multiple domain components. One label per value, periodt ๐ญ
Heads up: the directory service will NOT check that values follow the host label restrictions [RFC1123] in the <label> production above. Keeping those labels properly restricted is the directory client's job ๐ซถ
Directory applications that support International Domain Names SHALL use the ToASCII method [RFC3490] to produce the domain component label ๐ฅ. The special considerations in Section 4 of RFC 3490 [RFC3490] should be taken, depending on whether the domain component is used for "stored" or "query" purposes ๐ฆ.
2.5. 'description' ๐
The 'description' attribute type holds human-readable descriptive phrases about the object ๐. Each description is one value of this multi-valued attribute โจ. (Source: X.520 [X.520])
( 2.5.4.13 NAME 'description'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Examples: "a color printer", "Maintenance is done every Monday, at 1pm.", and "distribution list for all technical staff" ๐
2.6. 'destinationIndicator' ๐ฉ๏ธ
The 'destinationIndicator' attribute type holds country and city strings tied to the object (the addressee) so the Public Telegram Service can get the message where it needs to go ๐ฎ. The strings are built following CCITT Recommendations F.1 [F.1] and F.31 [F.31]. Each string is one value of this multi-valued attribute ๐ . (Source: X.520 [X.520])
( 2.5.4.27 NAME 'destinationIndicator'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
1.3.6.1.4.1.1466.115.121.1.44 refers to the Printable String syntax [RFC4517] โจ
Examples: "AASD" as a destination indicator for Sydney, Australia ๐ฆ and "GBLD" as a destination indicator for London, United Kingdom ๐ฌ๐ง.
It's noted that the directory will NOT make sure values of this attribute follow the F.1 and F.31 CCITT Recommendations ๐. Making sure the destination indicators it stores here are properly built is the application's responsibility.
2.7. 'distinguishedName' ๐๏ธ
The 'distinguishedName' attribute type is NOT used as the name of the object itself. Instead, it's a base type that some user attribute types with a DN syntax can inherit from ๐งฌ.
Values of this type itself are unlikely to show up in an entry. LDAP server implementations that don't support attribute subtyping need not recognize this attribute in requests. Client implementations MUST NOT assume that LDAP servers are capable of performing attribute subtyping. Bestie, do not assume that ๐ (Source: X.520 [X.520])
( 2.5.4.49 NAME 'distinguishedName'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
1.3.6.1.4.1.1466.115.121.1.12 refers to the DN syntax [RFC4517] ๐ธ
2.8. 'dnQualifier' ๐ซง
The 'dnQualifier' attribute type holds disambiguating information strings that get added to the relative distinguished name of an entry ๐. It's for when you merge data from multiple sources, so entries that would otherwise share a name don't clash ๐ฅ. Each string is one value of this multi-valued attribute. It is recommended that a value of the 'dnQualifier' attribute be the same for all entries from a particular source ๐ฆ. (Source: X.520 [X.520])
( 2.5.4.46 NAME 'dnQualifier'
EQUALITY caseIgnoreMatch
ORDERING caseIgnoreOrderingMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
1.3.6.1.4.1.1466.115.121.1.44 refers to the Printable String syntax [RFC4517] ๐
Examples: "20050322123345Z", where timestamps can be used to disambiguate information โฐ, and "123456A", where serial numbers can be used to disambiguate information ๐ข.
2.9. 'enhancedSearchGuide' ๐
The 'enhancedSearchGuide' attribute type holds sets of information that directory clients use when building search filters ๐งญ. Each set is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.47 NAME 'enhancedSearchGuide'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
1.3.6.1.4.1.1466.115.121.1.21 refers to the Enhanced Guide syntax [RFC4517] โจ
Examples: "person#(sn$APPROX)#wholeSubtree" and "organizationalUnit#(ou$SUBSTR)#oneLevel" ๐
2.10. 'facsimileTelephoneNumber' ๐
The 'facsimileTelephoneNumber' attribute type holds telephone numbers (and, optionally, the parameters) for facsimile terminals ๐จ๏ธ. Each telephone number is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.23 NAME 'facsimileTelephoneNumber'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
1.3.6.1.4.1.1466.115.121.1.22 refers to the Facsimile Telephone Number syntax [RFC4517] ๐
Examples: "+61 3 9896 7801" and "+81 3 347 7418$fineResolution" ๐
2.11. 'generationQualifier' ๐
The 'generationQualifier' attribute type holds name strings that are typically the suffix part of a person's name ๐ . Each string is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.44 NAME 'generationQualifier'
SUP name )
Examples: "III", "3rd", and "Jr." ๐
2.12. 'givenName' ๐ท
The 'givenName' attribute type holds name strings that are the part of a person's name that is NOT their surname ๐. Each string is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.42 NAME 'givenName'
SUP name )
Examples: "Andrew", "Charles", and "Joanne" ๐ซถ
2.13. 'houseIdentifier' ๐ก
The 'houseIdentifier' attribute type holds identifiers for a building within a location ๐๏ธ. Each identifier is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.51 NAME 'houseIdentifier'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Example: "20" to represent the house number 20 ๐
2.14. 'initials' ๐๏ธ
The 'initials' attribute type holds strings of initials for some or all of an individual's names, EXCEPT the surname(s) ๐ฆ. Each string is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.43 NAME 'initials'
SUP name )
Examples: "K. A." and "K" โจ
2.15. 'internationalISDNNumber' ๐
The 'internationalISDNNumber' attribute type holds Integrated Services Digital Network (ISDN) addresses, as defined in the International Telecommunication Union (ITU) Recommendation E.164 [E.164] ๐. Each address is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.25 NAME 'internationalISDNNumber'
EQUALITY numericStringMatch
SUBSTR numericStringSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )
1.3.6.1.4.1.1466.115.121.1.36 refers to the Numeric String syntax [RFC4517] ๐ข
Example: "0198 333 333" ๐ซ
2.16. 'l' ๐๏ธ
The 'l' attribute type ('localityName' in X.500) holds names of a locality or place, such as a city, county, or other geographic region ๐บ๏ธ. Each name is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.7 NAME 'l'
SUP name )
Examples: "Geneva", "Paris", and "Edinburgh" โ๏ธ
2.17. 'member' ๐ฏ
The 'member' attribute type holds the distinguished names of objects that are on a list or in a group ๐. Each name is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.31 NAME 'member'
SUP distinguishedName )
Examples: "cn=James Clarke,ou=Finance,o=Widget\, Inc." and "cn=John Xerri,ou=Finance,o=Widget\, Inc." may be two members of the financial team (group) at Widget, Inc., in which case, both of these distinguished names would be present as individual values of the member attribute ๐ง.
2.18. 'name' ๐ท๏ธ
The 'name' attribute type is the attribute supertype that user attribute types with the name syntax inherit from ๐ณ. Such attribute types are typically used for naming. The attribute type is multi-valued.
Values of this type itself are unlikely to show up in an entry. LDAP server implementations that don't support attribute subtyping need not recognize this attribute in requests. Client implementations MUST NOT assume that LDAP servers are capable of performing attribute subtyping ๐ (Source: X.520 [X.520])
( 2.5.4.41 NAME 'name'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
2.19. 'o' ๐ข
The 'o' attribute type ('organizationName' in X.500) holds the names of an organization ๐ผ. Each name is one value of this multi-valued attribute.
(Source: X.520 [X.520])
( 2.5.4.10 NAME 'o'
SUP name )
Examples: "Widget", "Widget, Inc.", and "Widget, Incorporated." ๐ธ
2.20. 'ou' ๐งฉ
The 'ou' attribute type ('organizationalUnitName' in X.500) holds the names of an organizational unit ๐๏ธ. Each name is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.11 NAME 'ou'
SUP name )
Examples: "Finance", "Human Resources", and "Research and Development" ๐
2.21. 'owner' ๐
The 'owner' attribute type holds the distinguished names of objects that have an ownership responsibility for the object that is owned ๐. Each owner's name is one value of this multi-valued attribute. (Source: X.520 [X.520])
( 2.5.4.32 NAME 'owner'
SUP distinguishedName )
Example: The mailing list object, whose DN is "cn=All Employees,ou=Mailing List,o=Widget\, Inc.", is owned by the Human Resources Director ๐ฌ.
Therefore, the value of the 'owner' attribute within the mailing list object would be the DN of the director (role): "cn=Human Resources Director,ou=employee,o=Widget\, Inc." ๐ฆ
2.22. 'physicalDeliveryOfficeName' ๐
okay so the physicalDeliveryOfficeName attribute type holds the names a Postal Service uses to identify a post office ๐ฎ (Source: X.520 [X.520])
( 2.5.4.19 NAME 'physicalDeliveryOfficeName'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Examples: "Bremerhaven, Main" and "Bremerhaven, Bonnstrasse" ๐ธ
2.23. 'postalAddress' ๐
the postalAddress attribute type holds the addresses a Postal Service uses to take care of things for the object ๐ฌ each address is its own value in this multi-valued attribute, so you can stack as many as you want ๐ซถ (Source: X.520 [X.520])
( 2.5.4.16 NAME 'postalAddress'
EQUALITY caseIgnoreListMatch
SUBSTR caseIgnoreListSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
1.3.6.1.4.1.1466.115.121.1.41 refers to the Postal Address syntax [RFC4517] โจ
Example: "15 Main St.$Ottawa$Canada" ๐
2.24. 'postalCode' ๐ฆ
the postalCode attribute type holds the codes a Postal Service uses to identify its postal service zones ๐บ๏ธ each code is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.17 NAME 'postalCode'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Example: "22180", to identify Vienna, VA, in the USA ๐บ๐ธ
2.25. 'postOfficeBox' ๐ซ
the postOfficeBox attribute type holds the postal box identifiers a Postal Service uses when a customer sets up mail at a box on the Postal Service's own premises ๐ข each postal box identifier is a single value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.18 NAME 'postOfficeBox'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Example: "Box 45" ๐
2.26. 'preferredDeliveryMethod' ๐
the preferredDeliveryMethod attribute type says how the object would most like to get a message ๐ (Source: X.520 [X.520])
( 2.5.4.28 NAME 'preferredDeliveryMethod'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
SINGLE-VALUE )
1.3.6.1.4.1.1466.115.121.1.14 refers to the Delivery Method syntax [RFC4517] ๐ง
Example: if the mhs-delivery Delivery Method is preferred over telephone-delivery, and telephone-delivery is preferred over all the other methods, the value would be: "mhs $ telephone" ๐ that's a whole ranking situation, honestly iconic ๐
2.27. 'registeredAddress' ๐ฎ
the registeredAddress attribute type holds postal addresses that are good for telegrams or expedited documents, where the recipient has to accept delivery ๐จ each address is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.26 NAME 'registeredAddress'
SUP postalAddress
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
1.3.6.1.4.1.1466.115.121.1.41 refers to the Postal Address syntax [RFC4517] ๐
Example: "Receptionist$Widget, Inc.$15 Main St.$Ottawa$Canada" ๐ข
2.28. 'roleOccupant' ๐
the roleOccupant attribute type holds the distinguished names of objects (usually people) who do the job of a role object ๐ผ each distinguished name is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.33 NAME 'roleOccupant'
SUP distinguishedName )
Example: the role object "cn=Human Resources Director,ou=Position,o=Widget\, Inc." is filled by two people, whose object names are "cn=Mary Smith,ou=employee,o=Widget\, Inc." and "cn=James Brown,ou=employee,o=Widget\, Inc.". So the roleOccupant attribute will hold both of those distinguished names, because they're the occupants of that role ๐
2.29. 'searchGuide' ๐
the searchGuide attribute type holds sets of info that clients use when they build search filters ๐ ๏ธ it's been superseded by enhancedSearchGuide, which I covered above in Section 2.9 ๐ฆ each set is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.14 NAME 'searchGuide'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
1.3.6.1.4.1.1466.115.121.1.25 refers to the Guide syntax [RFC4517] โจ
Example: "person#sn$EQ" ๐ธ
2.30. 'seeAlso' ๐
the seeAlso attribute type holds the distinguished names of objects that are related to the subject object ๐ each related object name is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.34 NAME 'seeAlso'
SUP distinguishedName )
Example: the person object "cn=James Brown,ou=employee,o=Widget\, Inc." is related to the role objects "cn=Football Team Captain,ou=sponsored activities,o=Widget\, Inc." and "cn=Chess Team,ou=sponsored activities,o=Widget\, Inc.". Since the role objects are related to the person object, the seeAlso attribute will contain the distinguished name of each role object as its own separate value ๐ซถ
2.31. 'serialNumber' ๐ข
the serialNumber attribute type holds the serial numbers of devices ๐จ๏ธ each serial number is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.5 NAME 'serialNumber'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
1.3.6.1.4.1.1466.115.121.1.44 refers to the Printable String syntax [RFC4517] ๐
Examples: "WI-3005" and "XF551426" ๐
2.32. 'sn' ๐ท
the sn (that's surname in X.500) attribute type holds name strings for a person's family names ๐ each string is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.4 NAME 'sn'
SUP name )
Example: "Smith" ๐
2.33. 'st' ๐บ๏ธ
the st (that's stateOrProvinceName in X.500) attribute type holds the full names of states or provinces ๐บ๐ธ each name is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.8 NAME 'st'
SUP name )
Example: "California" โ๏ธ
2.34. 'street' ๐ก
the street (that's streetAddress in X.500) attribute type holds the site info from a postal address, like the street name, the place, the avenue, and the house number ๐ each street is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.9 NAME 'street'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Example: "15 Main St." ๐
2.35. 'telephoneNumber' ๐ฑ
the telephoneNumber attribute type holds telephone numbers that follow the ITU Recommendation E.123 [E.123] ๐ each number is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.20 NAME 'telephoneNumber'
EQUALITY telephoneNumberMatch
SUBSTR telephoneNumberSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
1.3.6.1.4.1.1466.115.121.1.50 refers to the Telephone Number syntax [RFC4517] โจ
Example: "+1 234 567 8901" ๐ฆ
2.36. 'teletexTerminalIdentifier' ๐ฅ
ngl this one is kind of sad ๐ญ the withdrawal of Recommendation F.200 means this attribute got withdrawn too (Source: X.520 [X.520])
( 2.5.4.22 NAME 'teletexTerminalIdentifier'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
1.3.6.1.4.1.1466.115.121.1.51 refers to the Teletex Terminal Identifier syntax [RFC4517] ๐ฐ๏ธ
2.37. 'telexNumber' ๐
the telexNumber attribute type holds sets of strings that make up a telex number, a country code, and an answerback code for a telex terminal ๐งพ each set is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.21 NAME 'telexNumber'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
1.3.6.1.4.1.1466.115.121.1.52 refers to the Telex Number syntax [RFC4517] ๐
Example: "12345$023$ABCDE" ๐ธ
2.38. 'title' ๐
the title attribute type holds a person's title in their organizational context, so like, their job title in the company ๐ผ each title is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.12 NAME 'title'
SUP name )
Examples: "Vice President", "Software Engineer", and "CEO" ๐
โจ
2.39. 'uid' ๐
the uid (that's userid in RFC 1274) attribute type holds the computer system login names that go with the object ๐ each name is one value of this multi-valued attribute (Source: RFC 2798 [RFC2798] and RFC 1274 [RFC1274])
( 0.9.2342.19200300.100.1.1 NAME 'uid'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
1.3.6.1.4.1.1466.115.121.1.15 refers to the Directory String syntax [RFC4517] ๐
Examples: "s9709015", "admin", and "Administrator" ๐ง
2.40. 'uniqueMember' ๐งฉ
the uniqueMember attribute type holds the distinguished names of an object that's on a list or in a group ๐ซ the object's relative distinguished names include a value that tells it apart from other objects when a distinguished name has been reused ๐ each distinguished name is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.50 NAME 'uniqueMember'
EQUALITY uniqueMemberMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
1.3.6.1.4.1.1466.115.121.1.34 refers to the Name and Optional UID syntax [RFC4517] โจ
Example: if "ou=1st Battalion,o=Defense,c=US" was a battalion that got disbanded, and then a new battalion came along with the "same" name, the new one would get a unique identifier value added, so it becomes "ou=1st Battalion, o=Defense,c=US#'010101'B" ๐๏ธ the glow-up is real ๐
2.41. 'userPassword' ๐
the userPassword attribute holds octet strings that are known only to the user and to the system the user has access to ๐คซ each string is one value of this multi-valued attribute (Source: X.509 [X.509])
( 2.5.4.35 NAME 'userPassword'
EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
1.3.6.1.4.1.1466.115.121.1.40 refers to the Octet String syntax [RFC4517] ๐
The application SHOULD prepare textual strings used as passwords by transcoding them to Unicode, applying SASLprep [RFC4013], and encoding them as UTF-8 ๐ซถ whether a password counts as textual is a local client matter, so that's up to the client ๐ฆ
Passwords are stored using an Octet String syntax and are not encrypted. Sending cleartext passwords is strongly discouraged wherever the underlying transport service can't guarantee confidentiality, because it may result in the password being disclosed to unauthorized parties ๐ญ๐จ
An example of needing multiple values in the userPassword attribute is an environment where the user has to use a different password every month, generated by some automated system ๐
during transitional periods, like the last and first day of the periods, it may be necessary to let two passwords for the two consecutive periods be valid in the system ๐โ๏ธ
2.42. 'x121Address' ๐
the x121Address attribute type holds data network addresses as defined by ITU Recommendation X.121 [X.121] ๐ก each address is one value of this multi-valued attribute (Source: X.520 [X.520])
( 2.5.4.24 NAME 'x121Address'
EQUALITY numericStringMatch
SUBSTR numericStringSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )
1.3.6.1.4.1.1466.115.121.1.36 refers to the Numeric String syntax [RFC4517] ๐ธ
Example: "36111222333444555" ๐
2.43. 'x500UniqueIdentifier' ๐
okay so the 'x500UniqueIdentifier' attribute type holds binary strings ๐ซถ they're there to tell objects apart when a distinguished name has been reused ๐ each string is one value of this multi-valued attribute โจ
in X.520 [X.520], this one is called 'uniqueIdentifier' ๐ and it's a totally different attribute type from both the 'uid' and 'uniqueIdentifier' LDAP attribute types ๐ the 'uniqueIdentifier' attribute type is defined in [RFC4524] ๐ธ (Source: X.520 [X.520])
( 2.5.4.45 NAME 'x500UniqueIdentifier'
EQUALITY bitStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
1.3.6.1.4.1.1466.115.121.1.6 is the Bit String syntax [RFC4517] ๐ฆ
3. Object Classes ๐ง
LDAP servers SHOULD recognize all the Object Classes listed here as values of the 'objectClass' attribute (see [RFC4512]) ๐ฅ
3.1. 'applicationProcess' ๐ป
the 'applicationProcess' object class is the basis of an entry that represents an application running in a computer system ๐ซง (Source: X.521 [X.521])
( 2.5.6.11 NAME 'applicationProcess'
SUP top
STRUCTURAL
MUST cn
MAY ( seeAlso $
ou $
l $
description ) )
3.2. 'country' ๐
the 'country' object class is the basis of an entry that represents a country ๐ (Source: X.521 [X.521])
( 2.5.6.2 NAME 'country'
SUP top
STRUCTURAL
MUST c
MAY ( searchGuide $
description ) )
3.3. 'dcObject' ๐
the 'dcObject' object class lets an entry contain domain component information โจ it's defined as auxiliary because it gets used alongside an existing structural object class, which is so clever ๐ง (Source: RFC 2247 [RFC2247])
( 1.3.6.1.4.1.1466.344 NAME 'dcObject'
SUP top
AUXILIARY
MUST dc )
3.4. 'device' ๐ฅ๏ธ
the 'device' object class is the basis of an entry that represents an appliance, computer, or network element ๐ (Source: X.521 [X.521])
( 2.5.6.14 NAME 'device'
SUP top
STRUCTURAL
MUST cn
MAY ( serialNumber $
seeAlso $
owner $
ou $
o $
l $
description ) )
3.5. 'groupOfNames' ๐ฏ
the 'groupOfNames' object class is the basis of an entry that represents a set of named objects, plus info about why the set exists or who looks after it ๐ซถ (Source: X.521 [X.521])
( 2.5.6.9 NAME 'groupOfNames'
SUP top
STRUCTURAL
MUST ( member $
cn )
MAY ( businessCategory $
seeAlso $
owner $
ou $
o $
description ) )
3.6. 'groupOfUniqueNames' ๐
the 'groupOfUniqueNames' object class is the same as 'groupOfNames' except the object names are never repeated or reassigned within a set scope ๐ (Source: X.521 [X.521])
( 2.5.6.17 NAME 'groupOfUniqueNames'
SUP top
STRUCTURAL
MUST ( uniqueMember $
cn )
MAY ( businessCategory $
seeAlso $
owner $
ou $
o $
description ) )
3.7. 'locality' ๐ก
the 'locality' object class is the basis of an entry that represents a place in the physical world ๐บ๏ธ (Source: X.521 [X.521])
( 2.5.6.3 NAME 'locality'
SUP top
STRUCTURAL
MAY ( street $
seeAlso $
searchGuide $
st $
l $
description ) )
3.8. 'organization' ๐ข
the 'organization' object class is the basis of an entry that represents a structured group of people ๐ (Source: X.521 [X.521])
( 2.5.6.4 NAME 'organization'
SUP top
STRUCTURAL
MUST o
MAY ( userPassword $ searchGuide $ seeAlso $
businessCategory $ x121Address $ registeredAddress $
destinationIndicator $ preferredDeliveryMethod $
telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationalISDNNumber $
facsimileTelephoneNumber $ street $ postOfficeBox $
postalCode $ postalAddress $ physicalDeliveryOfficeName $
st $ l $ description ) )
3.9. 'organizationalPerson' ๐ฉโ๐ผ
the 'organizationalPerson' object class is the basis of an entry that represents a person in relation to an organization ๐ผ (Source: X.521 [X.521])
( 2.5.6.7 NAME 'organizationalPerson'
SUP person
STRUCTURAL
MAY ( title $ x121Address $ registeredAddress $
destinationIndicator $ preferredDeliveryMethod $
telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationalISDNNumber $
facsimileTelephoneNumber $ street $ postOfficeBox $
postalCode $ postalAddress $ physicalDeliveryOfficeName $
ou $ st $ l ) )
3.10. 'organizationalRole' ๐ญ
the 'organizationalRole' object class is the basis of an entry that represents a job, function, or position in an organization ๐ (Source: X.521 [X.521])
( 2.5.6.8 NAME 'organizationalRole'
SUP top
STRUCTURAL
MUST cn
MAY ( x121Address $ registeredAddress $ destinationIndicator $
preferredDeliveryMethod $ telexNumber $
teletexTerminalIdentifier $ telephoneNumber $
internationalISDNNumber $ facsimileTelephoneNumber $
seeAlso $ roleOccupant $ preferredDeliveryMethod $
street $ postOfficeBox $ postalCode $ postalAddress $
physicalDeliveryOfficeName $ ou $ st $ l $
description ) )
3.11. 'organizationalUnit' ๐งฉ
the 'organizationalUnit' object class is the basis of an entry that represents a piece of an organization ๐ฐ (Source: X.521 [X.521])
( 2.5.6.5 NAME 'organizationalUnit'
SUP top
STRUCTURAL
MUST ou
MAY ( businessCategory $ description $ destinationIndicator $
facsimileTelephoneNumber $ internationalISDNNumber $ l $
physicalDeliveryOfficeName $ postalAddress $ postalCode $
postOfficeBox $ preferredDeliveryMethod $
registeredAddress $ searchGuide $ seeAlso $ st $ street $
telephoneNumber $ teletexTerminalIdentifier $
telexNumber $ userPassword $ x121Address ) )
3.12 'person' ๐ง
the 'person' object class is the basis of an entry that represents a human being ๐ (Source: X.521 [X.521])
( 2.5.6.6 NAME 'person'
SUP top
STRUCTURAL
MUST ( sn $
cn )
MAY ( userPassword $
telephoneNumber $
seeAlso $ description ) )
3.13. 'residentialPerson' ๐
the 'residentialPerson' object class is the basis of an entry that includes a person's residence as part of how the person is represented ๐ท (Source: X.521 [X.521])
( 2.5.6.10 NAME 'residentialPerson'
SUP person
STRUCTURAL
MUST l
MAY ( businessCategory $ x121Address $ registeredAddress $
destinationIndicator $ preferredDeliveryMethod $
telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationalISDNNumber $
facsimileTelephoneNumber $ preferredDeliveryMethod $
street $ postOfficeBox $ postalCode $ postalAddress $
physicalDeliveryOfficeName $ st $ l ) )
3.14. 'uidObject' ๐ชช
the 'uidObject' object class lets an entry contain user identification info ๐ซง it's defined as auxiliary because it gets used alongside an existing structural object class, iykyk ๐ (Source: RFC 2377 [RFC2377])
( 1.3.6.1.1.3.1 NAME 'uidObject'
SUP top
AUXILIARY
MUST uid )
4. IANA Considerations โจ
okay so IANA (the Internet Assigned Numbers Authority) updated the LDAP descriptors registry, and this is the template they used for it ๐
Subject: Request for LDAP Descriptor Registration Update
Descriptor (short name): see comments
Object Identifier: see comments
Person & email address to contact for further information:
Andrew Sciberras <andrew.sciberras@eb2bcom.com>
Usage: (A = attribute type, O = Object Class) see comment
Specification: RFC 4519
Author/Change Controller: IESG
bestie, the comments section is the main event ๐ Every descriptor (short name) listed below now refers to RFC 4519. If a name needs to be reserved instead of being assigned an Object Identifier, its OID shows up as RESERVED ๐ธ
NAME Type OID
------------------------ ---- ----------------------------
applicationProcess O 2.5.6.11
businessCategory A 2.5.4.15
c A 2.5.4.6
cn A 2.5.4.3
commonName A 2.5.4.3
country O 2.5.6.2
countryName A 2.5.4.6
dc A 0.9.2342.19200300.100.1.25
dcObject O 1.3.6.1.4.1.1466.344
description A 2.5.4.13
destinationIndicator A 2.5.4.27
device O 2.5.6.14
NAME Type OID
------------------------ ---- ----------------------------
distinguishedName A 2.5.4.49
dnQualifier A 2.5.4.46
domainComponent A 0.9.2342.19200300.100.1.25
enhancedSearchGuide A 2.5.4.47
facsimileTelephoneNumber A 2.5.4.23
generationQualifier A 2.5.4.44
givenName A 2.5.4.42
gn A RESERVED
groupOfNames O 2.5.6.9
groupOfUniqueNames O 2.5.6.17
houseIdentifier A 2.5.4.51
initials A 2.5.4.43
internationalISDNNumber A 2.5.4.25
l A 2.5.4.7
locality O 2.5.6.3
localityName A 2.5.4.7
member A 2.5.4.31
name A 2.5.4.41
o A 2.5.4.10
organization O 2.5.6.4
organizationName A 2.5.4.10
organizationalPerson O 2.5.6.7
organizationalRole O 2.5.6.8
organizationalUnit O 2.5.6.5
organizationalUnitName A 2.5.4.11
ou A 2.5.4.11
owner A 2.5.4.32
person O 2.5.6.6
physicalDeliveryOfficeName A 2.5.4.19
postalAddress A 2.5.4.16
postalCode A 2.5.4.17
postOfficeBox A 2.5.4.18
preferredDeliveryMethod A 2.5.4.28
registeredAddress A 2.5.4.26
residentialPerson O 2.5.6.10
roleOccupant A 2.5.4.33
searchGuide A 2.5.4.14
seeAlso A 2.5.4.34
serialNumber A 2.5.4.5
sn A 2.5.4.4
st A 2.5.4.8
street A 2.5.4.9
surname A 2.5.4.4
telephoneNumber A 2.5.4.20
teletexTerminalIdentifier A 2.5.4.22
telexNumber A 2.5.4.21
NAME Type OID
------------------------ ---- ----------------------------
title A 2.5.4.12
uid A 0.9.2342.19200300.100.1.1
uidObject O 1.3.6.1.1.3.1
uniqueMember A 2.5.4.50
userid A 0.9.2342.19200300.100.1.1
userPassword A 2.5.4.35
x121Address A 2.5.4.24
x500UniqueIdentifier A 2.5.4.45
5. Security Considerations ๐ฅ
okay bestie, this part is serious, so let's get into it ๐ซถ Attributes in directory entries describe the real-world things they represent, and those can be people, organizations, or devices. Most countries have privacy laws about publishing info on people, so that matters a LOT ๐ญ
Sending cleartext passwords is strongly discouraged when the transport underneath can't guarantee confidentiality and integrity. The reason is simple: the password could end up in the hands of someone who isn't supposed to have it ๐
Having multiple values for the 'userPassword' attribute is kind of a vibe-check situation, so be careful ๐ Resetting or deleting a password as an administrator, without knowing the old one, gets tricky or even impossible when there are several values for different applications.
Applications that want to swap out the 'userPassword' value(s) for new ones should use modify/replaceValues (or modify/deleteAttribute+addAttribute). Server implementations are also encouraged to offer administrative controls that, when turned on, limit the 'userPassword' attribute to one value ๐
Last thing, and it's an important one ๐ When this is used for authentication purposes [RFC4513], the user only has to prove they know one of the values, not all of them.
6. Acknowledgements ๐ธ
The definitions this document is built on were developed by committees for telecommunications and international standards, which is very impressive ngl ๐ง
This document is an update of RFC 2256 by Mark Wahl. RFC 2256 came out of the IETF ASID Working Group ๐
The 'dc' attribute type definition and the 'dcObject' object class definition in this document supersede the specification in RFC 2247 by S. Kille, M. Wahl, A. Grimstad, R. Huber, and S. Sataluri ๐ฆ
The 'uid' attribute type definition in this document supersedes the specification of the 'userid' in RFC 1274 by P. Barker and S. Kille, and the uid in RFC 2798 by M. Smith โจ
The 'uidObject' object class definition in this document supersedes the specification of the 'uidObject' in RFC 2377 by A. Grimstad, R. Huber, S. Sataluri, and M. Wahl ๐
This document is based on input from the IETF LDAPBIS working group. The author would like to thank S. Legg and K. Zeilenga for their significant contribution to this update, and also Kathy Dally, who edited early versions of this document ๐ซถ
7. References ๐
7.1. Normative References
- [E.123] Notation for national and international telephone numbers, ITU-T Recommendation E.123, 1988
- [E.164] The international public telecommunication numbering plan, ITU-T Recommendation E.164, 1997
- [F.1] Operational Provisions For The International Public Telegram Service Transmission System, CCITT Recommendation F.1, 1992
- [F.31] Telegram Retransmission System, CCITT Recommendation F.31, 1988
- [ISO3166] ISO 3166, "Codes for the representation of names of countries".
- [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987.
- [RFC1123] Braden, R., "Requirements for Internet Hosts - Application and Support", STD 3, RFC 1123, October 1989.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS Specification", RFC 2181, July 1997.
- [RFC3490] Faltstrom, P., Hoffman, P., and A. Costello, "Internationalizing Domain Names in Applications (IDNA)", RFC 3490, March 2003.
- [RFC4013] Zeilenga, K., "SASLprep: Stringprep Profile for User Names and Passwords", RFC 4013, February 2005.
- [RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.
- [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, June 2006.
- [RFC4512] Zeilenga, K., "Lightweight Directory Access Protocol (LDAP): Directory Information Models", RFC 4512, June 2006.
- [RFC4517] Legg, S., Ed., "Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006.
- [X.121] International numbering plan for public data networks, ITU-T Recommendation X.121, 1996
- [X.509] The Directory: Authentication Framework, ITU-T Recommendation X.509, 1993
- [X.520] The Directory: Selected Attribute Types, ITU-T Recommendation X.520, 1993
- [X.521] The Directory: Selected Object Classes. ITU-T Recommendation X.521, 1993
7.2. Informative References
- [RFC1274] Barker, P. and S. Kille, "The COSINE and Internet X.500 Schema", RFC 1274, November 1991.
- [RFC2247] Kille, S., Wahl, M., Grimstad, A., Huber, R., and S. Sataluri, "Using Domains in LDAP/X.500 Distinguished Names", RFC 2247, January 1998.
- [RFC2377] Grimstad, A., Huber, R., Sataluri, S., and M. Wahl, "Naming Plan for Internet Directory-Enabled Applications", RFC 2377, September 1998.
- [RFC2798] Smith, M., "Definition of the inetOrgPerson LDAP Object Class", RFC 2798, April 2000.
- [RFC4513] Harrison R., Ed., "Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms", RFC 4513, June 2006.
- [RFC4523] Zeilenga, K., "Lightweight Directory Access Protocol (LDAP) Schema Definitions for X.509 Certificates", RFC 4523, June 2006.
- [RFC4524] Zeilenga, E., Ed., "COSINE LDAP/X.500 Schema", RFC 4524, June 2006.
- [X.500] ITU-T Recommendations X.500 (1993) | ISO/IEC 9594-1:1994, Information Technology - Open Systems Interconnection - The Directory: Overview of concepts, models and services.
Appendix A. Changes Made Since RFC 2256 ๐ง
okay so this appendix is the glow-up log ๐ It lists everything that changed between RFC 2256 and RFC 4519. Quick reminder that it's informational only and not a normative part of the spec ๐ซถ
- Replaced the document title โจ
- Removed the IESG Note ๐งน
- Dependencies on RFC 1274 have been eliminated ๐
- Added a Security Considerations section and an IANA Considerations section ๐
- Deleted the conformance requirement for subschema object classes in favor of a statement in [RFC4517] ๐
- Added explanation to attribute types and to each object class ๐ง
- Removed Section 4, Syntaxes, and Section 6, Matching Rules, (moved to [RFC4517]) ๐
- Removed the certificate-related attribute types:
authorityRevocationList,cACertificate,certificateRevocationList,crossCertificatePair,deltaRevocationList,supportedAlgorithms, anduserCertificate. Also removed the certificate-related Object Classes:certificationAuthority,certificationAuthority-V2,cRLDistributionPoint,strongAuthenticationUser, anduserSecurityInformation. LDAP PKI is now discussed in [RFC4523] ๐ - Removed the
dmdName,knowledgeInformation,presentationAddress,protocolInformation, andsupportedApplicationContextattribute types and thedmd,applicationEntity, anddSAobject classes ๐๏ธ - Deleted the
aliasedObjectNameandobjectClassattribute type definitions. Deleted thealiasandtopobject class definitions. They are included in [RFC4512] ๐ฆ - Added the
dcattribute type from RFC 2247, making the distinction between 'stored' and 'query' values when preparing IDN strings ๐ - Numerous editorial changes ๐
- Removed upper bound after the SYNTAX oid in all attribute definitions where it appeared โ๏ธ
- Added text about Unicode, SASLprep [RFC4013], and UTF-8 for
userPassword๐ค - Included definitions, comments and references for
dcObjectanduidObject๐ - Replaced PKI schema references to use RFC 4523 ๐
- Spelt out and referenced ABNF on first usage ๐
- Removed Section 2.4 (Source). Replaced the source table with explicit references for each definition ๐๏ธ
- All references to an attribute type or object class are enclosed in single quotes ๐ฌ
- The layout of attribute type definitions has been changed to provide consistency throughout the document. The new layout is:
> Section Heading
> Description of Attribute type
> Multivalued description
> Source Information
> Definition
> Example
> Additional Comments
Adding this consistent output included the addition of examples to some definitions ๐ช
- References to alternate names for attributes types are provided with a reference to where they were originally specified ๐ท๏ธ
- Clarification of the description of
distinguishedNameandname, in regards to these attribute types being supertypes ๐งฉ - Spelt out ISDN on first usage ๐
- Inserted a reference to [RFC4517] for the
teletexTerminalIdentifierdefinition's SYNTAX OID ๐ - Additional names were added to the IANA Considerations. Names include
commonName,dcObject,domainComponent,GN,localityName,organizationName,organizationUnitName,surname,uidObjectanduserid๐ - Renamed all instances of supercede to supersede โ๏ธ
- Moved [F.1], [F.31] and [RFC4013] from informative to normative references ๐
- Changed the
cdefinition to be consistent with X.500 ๐
Author's Address ๐๏ธ
Here's where the author lives, bestie ๐ฆ
Andrew Sciberras
eB2Bcom
Suite 3, Woodhouse Corporate Centre,
935 Station Street,
Box Hill North, Victoria 3129
AUSTRALIA
Phone: +61 3 9896 7833
EMail: andrew.sciberras@eb2bcom.com
Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (2006). ๐
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and 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 regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line 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 that may be required to implement this standard. Please address the 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). ๐ซถโจ
๐ฆ where this page comes from
- ietf: rfc4519 2006-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms