RFC 2256
A Summary of the X.500(96) User Schema for use with LDAPv3
RFC 2256 ๐๐ (Part 1 of 3)
Title: A Summary of the X.500(96) User Schema for use with LDAPv3 ๐ Author: M. Wahl, Critical Angle Inc. ๐งโ๐ป Stream: Network Working Group Category: Standards Track ๐ Date: December 1997 ๐๏ธ Obsoletes / Updates: This title block doesn't list anything it obsoletes or updates ๐คทโโ๏ธ
1. Status of this Memo โจ
okay so this one is an Internet standards track protocol for the Internet community ๐, and it's literally asking everyone to chime in with discussion and suggestions for improvements ๐ฌ. For the standardization state and status of this protocol, go check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐. And distribution of this memo is unlimited, so share it with everyone bestie ๐ซถ.
Copyright Notice
Copyright (C) The Internet Society (1997). All Rights Reserved. ยฉ๏ธ๐ธ
IESG Note
ok this part is SO important, read it twice ๐โ ๏ธ. This document describes a directory access protocol that gives you both read and update access ๐โ๏ธ. Update access needs secure authentication, but this document does not mandate implementation of any satisfactory authentication mechanisms ๐ฌ.
Even with that gap, the IESG approved this as a Proposed Standard, per RFC 2026, section 4.4.1 ๐๏ธ. They gave three reasons, iykyk:
- ๐ฆ to encourage implementation and interoperability testing of these protocols (with or without update access) before they are deployed, and
- ๐ท to encourage deployment and use of these protocols in read-only applications. (e.g. applications where LDAPv3 is used as a query language for directories which are updated by some secure mechanism other than LDAP), and
- ๐ง to avoid delaying the advancement and deployment of other Internet standards-track protocols which require the ability to query, but not update, LDAPv3 directory servers.
๐จ Readers are hereby warned that until mandatory authentication mechanisms are standardized, clients and servers written according to this specification which make use of update functionality are UNLIKELY TO INTEROPERATE, or MAY INTEROPERATE ONLY IF AUTHENTICATION IS REDUCED TO AN UNACCEPTABLY WEAK LEVEL. ๐ That is not it, that is a whole vibe check on update mode.
Implementors are hereby discouraged from deploying LDAPv3 clients or servers which implement the update functionality, until a Proposed Standard for mandatory authentication in LDAPv3 has been approved and published as an RFC ๐ โโ๏ธ๐. Not me being the one to ignore this ๐ค.
2. Abstract ๐
So this document gives you an overview of the attribute types and object classes that the ISO and ITU-T committees defined in the X.500 documents ๐งพ, especially the ones meant for directory clients ๐ฉโ๐ป. It's the most widely used schema for LDAP/X.500 directories ๐, and tons of other schema definitions for white pages objects are built on top of it ๐๏ธ. It does not cover attributes used for administering X.500 directory servers, and it also leaves out attributes defined by other ISO/ITU-T documents ๐ โโ๏ธ.
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 [6] ๐. Those words are the official BCP 14 vocab, so read them carefully, bestie ๐.
3. General Issues ๐งฉ
This document references syntaxes given in section 6 of this document and section 6 of [1] ๐. Matching rules are listed in section 8 of this document and section 8 of [1] ๐ฏ.
The attribute type and object class definitions are written using the BNF form of AttributeTypeDescription and ObjectClassDescription given in [1] ๐. Lines have been folded for readability, so don't freak out if a line looks chopped up ๐.
4. Source ๐
The schema definitions in this document are based on those found in X.500 [2],[3],[4],[5], and updates to these documents ๐. Here's the breakdown of which section comes from which source, no cap ๐ :
Sections Source
============ ============
5.1 - 5.2 X.501(93)
5.3 - 5.36 X.520(88)
5.37 - 5.41 X.509(93)
5.42 - 5.52 X.520(93)
5.53 - 5.54 X.509(96)
5.55 X.520(96)
6.1 RFC 1274
6.2 (new syntax)
6.3 - 6.6 RFC 1274
7.1 - 7.2 X.501(93)
7.3 - 7.18 X.521(93)
7.19 - 7.21 X.509(96)
7.22 X.521(96)
Some attribute names are different from those found in X.520(93) ๐, so watch out for that ๐.
Three new attributes, supportedAlgorithms, deltaRevocationList and dmdName, plus the objectClass dmd, are defined in the X.500(96) documents ๐โจ.
5. Attribute Types ๐
An LDAP server implementation SHOULD recognize the attribute types described in this section ๐ฏ. This is the core stuff, so pay attention ๐.
5.1. objectClass ๐ท๏ธ
The values of the objectClass attribute describe the kind of object which an entry represents ๐งธ. The objectClass attribute is present in every entry, with at least two values ๐. One of those values is either "top" or "alias" ๐ช.
( 2.5.4.0 NAME 'objectClass' EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
5.2. aliasedObjectName ๐
The aliasedObjectName attribute is used by the directory service if the entry containing this attribute is an alias ๐ช.
( 2.5.4.1 NAME 'aliasedObjectName' EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
5.3. knowledgeInformation ๐ฐ๏ธ
This attribute is no longer used ๐.
( 2.5.4.2 NAME 'knowledgeInformation' EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
5.4. cn ๐ซง
This is the X.500 commonName attribute, which contains a name of an object ๐ท๏ธ. If the object corresponds to a person, it's typically the person's full name ๐ง.
( 2.5.4.3 NAME 'cn' SUP name )
5.5. sn ๐ฉโ๐ง
This is the X.500 surname attribute, which contains the family name of a person ๐.
( 2.5.4.4 NAME 'sn' SUP name )
5.6. serialNumber ๐ข
This attribute contains the serial number of a device ๐จ๏ธ.
( 2.5.4.5 NAME 'serialNumber' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
5.7. c ๐
This attribute contains a two-letter ISO 3166 country code (countryName) ๐บ๏ธ.
( 2.5.4.6 NAME 'c' SUP name SINGLE-VALUE )
5.8. l ๐๏ธ
This attribute contains the name of a locality, such as a city, county or other geographic region (localityName) ๐.
( 2.5.4.7 NAME 'l' SUP name )
5.9. st ๐
This attribute contains the full name of a state or province (stateOrProvinceName) ๐พ.
( 2.5.4.8 NAME 'st' SUP name )
5.10. street ๐ฃ๏ธ
This attribute contains the physical address of the object the entry corresponds to, such as an address for package delivery (streetAddress) ๐ฆ.
( 2.5.4.9 NAME 'street' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
5.11. o ๐ข
This attribute contains the name of an organization (organizationName) ๐ผ.
( 2.5.4.10 NAME 'o' SUP name )
5.12. ou ๐งโ๐คโ๐ง
This attribute contains the name of an organizational unit (organizationalUnitName) ๐๏ธ.
( 2.5.4.11 NAME 'ou' SUP name )
5.13. title ๐
This attribute contains the title, such as "Vice President", of a person in their organizational context ๐ผ. The "personalTitle" attribute would be used for a person's title independent of their job function ๐โโ๏ธ.
( 2.5.4.12 NAME 'title' SUP name )
5.14. description ๐
This attribute contains a human-readable description of the object ๐ฌ.
( 2.5.4.13 NAME 'description' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
5.15. searchGuide ๐งญ
This attribute is for use by X.500 clients in constructing search filters ๐. It is obsoleted by enhancedSearchGuide, described below in 5.48 ๐ โโ๏ธ.
( 2.5.4.14 NAME 'searchGuide'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
5.16. businessCategory ๐ผ
This attribute describes the kind of business performed by an organization ๐ช.
( 2.5.4.15 NAME 'businessCategory' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
5.17. postalAddress ๐ฎ
( 2.5.4.16 NAME 'postalAddress' EQUALITY caseIgnoreListMatch
SUBSTR caseIgnoreListSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
5.18. postalCode ๐ซ
( 2.5.4.17 NAME 'postalCode' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
5.19. postOfficeBox ๐ญ
( 2.5.4.18 NAME 'postOfficeBox' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
5.20. physicalDeliveryOfficeName ๐ฌ
( 2.5.4.19 NAME 'physicalDeliveryOfficeName' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
5.21. telephoneNumber ๐
( 2.5.4.20 NAME 'telephoneNumber' EQUALITY telephoneNumberMatch
SUBSTR telephoneNumberSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )
5.22. telexNumber ๐
( 2.5.4.21 NAME 'telexNumber'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
5.23. teletexTerminalIdentifier ๐ฅ๏ธ
( 2.5.4.22 NAME 'teletexTerminalIdentifier'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
5.24. facsimileTelephoneNumber ๐
( 2.5.4.23 NAME 'facsimileTelephoneNumber'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
5.25. x121Address ๐ข
( 2.5.4.24 NAME 'x121Address' EQUALITY numericStringMatch
SUBSTR numericStringSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} )
5.26. internationaliSDNNumber ๐ข
( 2.5.4.25 NAME 'internationaliSDNNumber' EQUALITY numericStringMatch
SUBSTR numericStringSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )
5.27. registeredAddress โ๏ธ
This attribute holds a postal address suitable for reception of telegrams or expedited documents, where it is necessary to have the recipient accept delivery ๐.
( 2.5.4.26 NAME 'registeredAddress' SUP postalAddress
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
5.28. destinationIndicator ๐ก
This attribute is used for the telegram service ๐จ.
( 2.5.4.27 NAME 'destinationIndicator' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )
5.29. preferredDeliveryMethod ๐๏ธ
( 2.5.4.28 NAME 'preferredDeliveryMethod'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
SINGLE-VALUE )
5.30. presentationAddress ๐
This attribute contains an OSI presentation address ๐ฐ๏ธ.
( 2.5.4.29 NAME 'presentationAddress'
EQUALITY presentationAddressMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.43
SINGLE-VALUE )
5.31. supportedApplicationContext ๐งฉ
This attribute contains the identifiers of OSI application contexts ๐.
( 2.5.4.30 NAME 'supportedApplicationContext'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
5.32. member ๐ซ
( 2.5.4.31 NAME 'member' SUP distinguishedName )
5.33. owner ๐
( 2.5.4.32 NAME 'owner' SUP distinguishedName )
5.34. roleOccupant ๐ญ
( 2.5.4.33 NAME 'roleOccupant' SUP distinguishedName )
5.35. seeAlso ๐
( 2.5.4.34 NAME 'seeAlso' SUP distinguishedName )
5.36. userPassword ๐
( 2.5.4.35 NAME 'userPassword' EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )
๐จ Passwords are stored using an Octet String syntax and are not encrypted ๐ฑ. Transfer of cleartext passwords are strongly discouraged where the underlying transport service cannot guarantee confidentiality and may result in disclosure of the password to unauthorized parties ๐. Keep your passwords locked down, bestie ๐.
5.37. userCertificate ๐
This attribute is to be stored and requested in the binary form, as 'userCertificate;binary' ๐งพ.
( 2.5.4.36 NAME 'userCertificate'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
5.38. cACertificate ๐
This attribute is to be stored and requested in the binary form, as 'cACertificate;binary' ๐พ.
( 2.5.4.37 NAME 'cACertificate'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
5.39. authorityRevocationList ๐
Okay so this one has to be stored and requested in binary form, bestie. You write it as authorityRevocationList;binary and that's the whole vibe ๐
( 2.5.4.38 NAME 'authorityRevocationList'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
5.40. certificateRevocationList ๐
Same energy here! This one also has to be stored and requested in binary form, as certificateRevocationList;binary. Binary all the way ๐ฆ
( 2.5.4.39 NAME 'certificateRevocationList'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
5.41. crossCertificatePair ๐
Also binary, obviously. You store and request it as crossCertificatePair;binary ๐ซถ
( 2.5.4.40 NAME 'crossCertificatePair'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
5.42. name ๐
Okay this one is the supertype, the OG attribute. String attribute types that are typically used for naming can be built from it ๐ง It's super unlikely that you'll actually find a value of name itself sitting in an entry, so don't expect to see it just floating around โจ
LDAP server implementations that don't support attribute subtyping don't have to recognize this attribute in requests, which is totally fine ๐ธ
Client implementations MUST NOT assume that LDAP servers are capable of performing attribute subtyping. Don't assume your server is a subtyping queen unless you've checked ๐
( 2.5.4.41 NAME 'name' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
5.43. givenName ๐
givenName holds the part of a person's name that's neither their surname nor their middle name. Your first name, basically ๐
( 2.5.4.42 NAME 'givenName' SUP name )
5.44. initials โจ
initials contains the initials of some or all of a person's names, but not the surname(s). So it's the little letters, not the whole family crest ๐
( 2.5.4.43 NAME 'initials' SUP name )
5.45. generationQualifier ๐
This is the suffix bit of the name, the stuff like "IIIrd". Very royal energy ๐
( 2.5.4.44 NAME 'generationQualifier' SUP name )
5.46. x500UniqueIdentifier ๐ฆ
x500UniqueIdentifier is how you tell objects apart when a distinguished name has been reused. It's a totally different attribute type from both "uid" and "uniqueIdentifier", so don't mix them up, bestie ๐
( 2.5.4.45 NAME 'x500UniqueIdentifier' EQUALITY bitStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
5.47. dnQualifier ๐
dnQualifier adds disambiguating info to the relative distinguished name of an entry. It's for when you're merging data from multiple sources and want to stop entries that would otherwise have the same name from clashing ๐ซถ It's recommended that the value of dnQualifier be the same for all entries from a particular source, which is a super smart move โจ
( 2.5.4.46 NAME 'dnQualifier' EQUALITY caseIgnoreMatch
ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
5.48. enhancedSearchGuide ๐ฅ
This one is for X.500 clients to use when they're building search filters. Client-side search wizardry ๐ง
( 2.5.4.47 NAME 'enhancedSearchGuide'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
5.49. protocolInformation ๐ธ
protocolInformation gets used alongside presentationAddress to give extra info to the OSI network service. It's the plus-one at the party ๐
( 2.5.4.48 NAME 'protocolInformation'
EQUALITY protocolInformationMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )
5.50. distinguishedName ๐
This one isn't used as the name of the object itself. It's a base type that attributes with DN syntax inherit from, so it's the parent figure โจ
It's unlikely that values of this type itself will occur in an entry. LDAP server implementations that don't support attribute subtyping don't need to recognize this attribute in requests, and that's valid ๐
Client implementations MUST NOT assume that LDAP servers are capable of performing attribute subtyping. Same rule, bestie, don't just assume ๐
( 2.5.4.49 NAME 'distinguishedName' EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
5.51. uniqueMember ๐ฆ
Quick and clean. uniqueMember has its own equality matching rule and syntax, and that's the whole story ๐
( 2.5.4.50 NAME 'uniqueMember' EQUALITY uniqueMemberMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
5.52. houseIdentifier ๐ก
houseIdentifier is how you identify a building within a location. Address-core energy ๐
( 2.5.4.51 NAME 'houseIdentifier' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
5.53. supportedAlgorithms ๐
Binary again, sorry not sorry. You store and request it as supportedAlgorithms;binary ๐ซถ
( 2.5.4.52 NAME 'supportedAlgorithms'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
5.54. deltaRevocationList โจ
Yep, binary, same as the other revocation lists. You write it as deltaRevocationList;binary ๐
( 2.5.4.53 NAME 'deltaRevocationList'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
5.55. dmdName ๐
dmdName specifies a directory management domain (DMD), which is the administrative authority that runs the directory server. The boss of the server, iykyk ๐ง
( 2.5.4.54 NAME 'dmdName' SUP name )
6. Syntaxes ๐
Servers SHOULD recognize the syntaxes defined in this section. Each syntax starts with a sample value of the ldapSyntaxes attribute, which defines the OBJECT IDENTIFIER of that syntax. Syntax names aren't carried in protocol and aren't guaranteed to be unique, so don't rely on the names alone ๐
6.1. Delivery Method ๐ฎ
( 1.3.6.1.4.1.1466.115.121.1.14 DESC 'Delivery Method' )
Values in this syntax are encoded according to the following BNF:
delivery-value = pdm / ( pdm whsp "$" whsp delivery-value )
pdm = "any" / "mhs" / "physical" / "telex" / "teletex" /
"g3fax" / "g4fax" / "ia5" / "videotex" / "telephone"
Example:
telephone
6.2. Enhanced Guide ๐งญ
( 1.3.6.1.4.1.1466.115.121.1.21 DESC 'Enhanced Guide' )
Values in this syntax are encoded according to the following BNF:
EnhancedGuide = woid whsp "#" whsp criteria whsp "#" whsp subset
subset = "baseobject" / "oneLevel" / "wholeSubtree"
The criteria production is defined in the Guide syntax below. This syntax got added after RFC 1778, so it's the newer kid on the block ๐
Example:
person#(sn)#oneLevel
6.3. Guide ๐บ๏ธ
( 1.3.6.1.4.1.1466.115.121.1.25 DESC 'Guide' )
Values in this syntax are encoded according to the following BNF:
guide-value = [ object-class "#" ] criteria
object-class = woid
criteria = criteria-item / criteria-set / ( "!" criteria )
criteria-set = ( [ "(" ] criteria "&" criteria-set [ ")" ] ) /
( [ "(" ] criteria "|" criteria-set [ ")" ] )
criteria-item = [ "(" ] attributetype "$" match-type [ ")" ]
match-type = "EQ" / "SUBSTR" / "GE" / "LE" / "APPROX"
This syntax should not be used for defining new attributes ๐ โโ๏ธ
6.4. Octet String ๐ข
( 1.3.6.1.4.1.1466.115.121.1.40 DESC 'Octet String' )
Values in this syntax are encoded as octet strings.
Example:
secret
6.5. Teletex Terminal Identifier ๐
( 1.3.6.1.4.1.1466.115.121.1.51 DESC 'Teletex Terminal Identifier' )
Values in this syntax are encoded according to the following BNF:
teletex-id = ttx-term 0*("$" ttx-param)
ttx-term = printablestring
ttx-param = ttx-key ":" ttx-value
ttx-key = "graphic" / "control" / "misc" / "page" / "private"
ttx-value = octetstring
In the above, the first printablestring is the encoding of the first portion of the teletex terminal identifier to be encoded, and the subsequent 0 or more octetstrings are subsequent portions of the teletex terminal identifier ๐
6.6. Telex Number โ๏ธ
( 1.3.6.1.4.1.1466.115.121.1.52 DESC 'Telex Number' )
Values in this syntax are encoded according to the following BNF:
telex-number = actual-number "$" country "$" answerback
actual-number = printablestring
country = printablestring
answerback = printablestring
In the above, actual-number is the syntactic representation of the number portion of the TELEX number being encoded, country is the TELEX country code, and answerback is the answerback code of a TELEX terminal ๐ง
6.7. Supported Algorithm ๐
( 1.3.6.1.4.1.1466.115.121.1.49 DESC 'Supported Algorithm' )
No printable representation of values of the supportedAlgorithms attribute is defined in this document. Clients that want to store and retrieve this attribute MUST use "supportedAlgorithms;binary", where the value is transferred as a binary encoding ๐ซถ
7. Object Classes ๐ฆ
LDAP servers MUST recognize the object classes "top" and "subschema". LDAP servers SHOULD recognize all the other object classes listed here as values of the objectClass attribute ๐
7.1. top ๐
( 2.5.6.0 NAME 'top' ABSTRACT MUST objectClass )
7.2. alias ๐ญ
( 2.5.6.1 NAME 'alias' SUP top STRUCTURAL MUST aliasedObjectName )
7.3. country ๐
( 2.5.6.2 NAME 'country' SUP top STRUCTURAL MUST c
MAY ( searchGuide $ description ) )
7.4. locality ๐๏ธ
( 2.5.6.3 NAME 'locality' SUP top STRUCTURAL
MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) )
7.5. organization ๐ข
( 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 ) )
7.6. organizationalUnit ๐ง
( 2.5.6.5 NAME 'organizationalUnit' SUP top STRUCTURAL MUST ou
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
x121Address $ registeredAddress $ destinationIndicator $
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationaliSDNNumber $
facsimileTelephoneNumber $
street $ postOfficeBox $ postalCode $ postalAddress $
physicalDeliveryOfficeName $ st $ l $ description ) )
7.7. person ๐งโโ๏ธ
( 2.5.6.6 NAME 'person' SUP top STRUCTURAL MUST ( sn $ cn )
MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
7.8. organizationalPerson ๐ผ
( 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 ) )
7.9. organizationalRole ๐
( 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 ) )
7.10. groupOfNames ๐ฏโโ๏ธ
( 2.5.6.9 NAME 'groupOfNames' SUP top STRUCTURAL MUST ( member $ cn )
MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
7.11. residentialPerson ๐
( 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 ) )
7.12. applicationProcess โ๏ธ
( 2.5.6.11 NAME 'applicationProcess' SUP top STRUCTURAL MUST cn
MAY ( seeAlso $ ou $ l $ description ) )
7.13. applicationEntity ๐
okay so this one is the object class for application entities, and it's giving structure ๐ฆ
( 2.5.6.12 NAME 'applicationEntity' SUP top STRUCTURAL
MUST ( presentationAddress $ cn )
MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $
description ) )
7.14. dSA โจ
the dSA class is a little sibling of applicationEntity, bestie ๐ธ
( 2.5.6.13 NAME 'dSA' SUP applicationEntity STRUCTURAL
MAY knowledgeInformation )
7.15. device ๐
( 2.5.6.14 NAME 'device' SUP top STRUCTURAL MUST cn
MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) )
7.16. strongAuthenticationUser ๐
this one is AUXILIARY, so it gets tacked onto other entries, and it MUST carry a userCertificate ๐
( 2.5.6.15 NAME 'strongAuthenticationUser' SUP top AUXILIARY
MUST userCertificate )
7.17. certificationAuthority ๐
another AUXILIARY class, with a few must-haves and one optional extra ๐ง
( 2.5.6.16 NAME 'certificationAuthority' SUP top AUXILIARY
MUST ( authorityRevocationList $ certificateRevocationList $
cACertificate ) MAY crossCertificatePair )
7.18. groupOfUniqueNames ๐ซถ
( 2.5.6.17 NAME 'groupOfUniqueNames' SUP top STRUCTURAL
MUST ( uniqueMember $ cn )
MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
7.19. userSecurityInformation ๐ฅ
( 2.5.6.18 NAME 'userSecurityInformation' SUP top AUXILIARY
MAY ( supportedAlgorithms ) )
7.20. certificationAuthority-V2 ๐
this is the V2 glow-up of certificationAuthority, and it's AUXILIARY with an optional deltaRevocationList ๐ฆ
( 2.5.6.16.2 NAME 'certificationAuthority-V2' SUP
certificationAuthority
AUXILIARY MAY ( deltaRevocationList ) )
7.21. cRLDistributionPoint ๐
( 2.5.6.19 NAME 'cRLDistributionPoint' SUP top STRUCTURAL
MUST ( cn ) MAY ( certificateRevocationList $
authorityRevocationList $
deltaRevocationList ) )
7.22. dmd โญ
the dmd class is the biggest one here, with a whole lot of optional attributes ๐
( 2.5.6.20 NAME 'dmd' SUP top STRUCTURAL MUST ( dmdName )
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
x121Address $ registeredAddress $ destinationIndicator $
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationaliSDNNumber $
facsimileTelephoneNumber $
street $ postOfficeBox $ postalCode $ postalAddress $
physicalDeliveryOfficeName $ st $ l $ description ) )
8. Matching Rules โจ
okay so servers MAY implement additional matching rules, and that's the vibe ๐ง
8.1. octetStringMatch ๐ฆ
servers that implement the extensibleMatch filter SHOULD allow the matching rule in this section to be used in extensibleMatch. ngl, in general these servers SHOULD also allow matching rules to be used with every attribute type the server knows about, as long as the assertion syntax of the matching rule matches the value syntax of the attribute ๐
( 2.5.13.17 NAME 'octetStringMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
9. Security Considerations ๐
this section is serious, bestie, so listen up ๐ญ
Attributes of directory entries give descriptive info about the real-world objects they represent, and those objects can be people, organizations or devices. Most countries have privacy laws about publishing information about people, so please be careful ๐ซถ
Transfer of cleartext passwords is strongly discouraged where the underlying transport service cannot guarantee confidentiality. It may disclose the password to unauthorized parties, and that is a huge no ๐
10. Acknowledgements ๐ธ
the definitions here were developed by committees for telecommunications and international standards, and no new attribute definitions were added. The syntax definitions are based on the ISODE "QUIPU" implementation of X.500 ๐
11. Bibliography ๐
- [1] Wahl, M., Coulbeck, A., Howes, T., and S. Kille, "Lightweight X.500 Directory Access Protocol (v3): Attribute Syntax Definitions", RFC 2252, December 1997.
- [2] The Directory: Models. ITU-T Recommendation X.501, 1996.
- [3] The Directory: Authentication Framework. ITU-T Recommendation X.509, 1996.
- [4] The Directory: Selected Attribute Types. ITU-T Recommendation X.520, 1996.
- [5] The Directory: Selected Object Classes. ITU-T Recommendation X.521, 1996.
- [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, March 1997.
12. Author's Address ๐
Mark Wahl Critical Angle Inc. 4815 West Braker Lane #502-385 Austin, TX 78759 USA
Phone: +1 512 372 3160 EMail: M.Wahl@critical-angle.com
13. Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (1997). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that 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, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
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. ๐
๐ฆ where this page comes from
- ietf: rfc2256 1997-12
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms