Internet DRAFT - draft-greenblatt-dn-type
draft-greenblatt-dn-type
LDAPEXT Working Group B. Greenblatt
Internet Draft Directory Tools and
Application
Services, Inc.
Document: <draft-greenblatt-dn-type-00.txt> May 2001
Category: Standards Track
Control for requesting DN object class in LDAP
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026 [1].
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts. Internet-Drafts are draft documents valid for a maximum of
six months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet- Drafts
as reference material or to cite them other than as "work in
progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
1. Abstract
There are many circumstances in LDAP [1] when the result of a Search
operation returns attribute values that have the distinguished name
(DN) syntax. This document defines controls that allow the client
to request that the server tag each DN with its object classes.
This is a useful feature because object classes such as groups [3]
may hold many DNs, each of which is a potentially different object
class. When using this control in a search, the LDAP client request
that the server return the object classes of each DN that is an
attribute value of the search result. This control also defines a
way to limit the kinds of DNs that should be returned in a Search
result.
2. Conventions used in this document
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 [5].
3. Control for Requesting Object Class information
Greenblatt Standards Track û Expires November 2001 1
DN Object Class Control for LDAP May 2001
This control is included in the SearchRequest message as part of the
controls field of the LDAPMessage, as defined in Section 4.1.12 of
[1]. The controlType is set to "1.3.6.1.4.1.5515.5.1". The
criticality SHOULD be set to FALSE. If this control is included in a
SearchRequest message, and the server understands the control, then
a corresponding control that contains object class information is
included in the SearchResultDone message as part of the controls
field of the LDAPMessage. The controlValue is an OCTET STRING whose
value is the BER-encoding of the following SEQUENCE:
DNObjectClassRequest ::= SEQUENCE {
listObjectClasses ENUMERATED {
all (0),
mostSubordinateOnly (1),
omitAuxiliary (2),
mostSubordinateStructural (3),
none (4)
} OPTIONAL,
CHOICE {
dnSelection [0] SEQUENCE OF LDAPString,
dnOmission [1] SEQUENCE OF LDAPString
} OPTIONAL
}
Upon receiving this control, a server that supports it MUST process
this as a standard LDAPv3 search with the following changes:
a) If listObjectClasses is "all" the DNObjectClassResponse request
includes all object classes for each DN value in the
SearchResult. If listObjectClasses is "mostSubordinateOnly",
the DNObjectClassResponse contains only the most specific
object class in the entries object class inheritance. For
example, if a DN referred to an entry that was the object class
of "Person", then the DNObjectClassResponse would only contain
the information that the DN was a "person", instead of
including the "top" object class information as well. If
listObjectClasses is "omitAuxiliary", only the object classes
that are included in the DNObjectClassResponse are those in the
"structural" object classÆ inheritance. For example, if a DN
referred to an entry that was the object class of "Person" and
"StrongAuthenticationUser", then the DNObjectClassResponse
would only contain the information that the DN was a "person"
and "top". If listObjectClasses is "mostSubordinateStructural",
only the object classes that are included in the
DNObjectClassResponse is the most specific object class in the
"structural" object classÆ inheritance. For example, if a DN
referred to an entry that was the object class of "Person" and
"StrongAuthenticationUser", then the DNObjectClassResponse
would only contain the information that the DN was a "person".
If listObjectClasses is "none" the DNObjectClassResponse does
MUST NOT include any information about the object classes of
the returned DN values.
b) If dnSelection is present it lists the dn values, the object
classes of which should be included in the Search Result. The
Greenblatt Standards Track 2
DN Object Class Control for LDAP May 2001
LDAP Server should process the Search Request normally, but
only include those DN values in the returned results which
match one of the values in the list of object classes specified
in the control. Object class values in the dnSelection that
are unknown or invalid are ignored in the processing, but are
listed in the ignoredDNValues of the DNObjectClassResponse.
c) If dnOmission is present it lists the dn values, the object
classes of which should be omitted the Search Result. The LDAP
Server should process the Search Request normally, but exclude
all of those DN values in the returned results which match one
of the values in the list of object classes specified in the
control. Object class values in the dnOmission that are
unknown or invalid are ignored in the processing, but are
listed in the ignoredDNValues of the DNObjectClassResponse.
Servers that claim support for this control MUST support the
listObjectClasses processing defined above. Support for processing
dnSelection and dnOmission is OPTIONAL. Note that the processing of
the DNObjectClassRequest never restricts the entries which are
returned as a result of the processing of the submitted
SearchRequest.
4. Control for Responding to Requests for Object Class information
This control is included in the SearchRequestDone message as part
of the controls field of the LDAPMessage, as defined in
Section 4.1.12 of [1]. The controlType is set to
"1.3.6.1.4.1.5515.5.2". The controlValue is an OCTET STRING whose
value is the BER-encoding of the following SEQUENCE:
DNObjectClassResponse ::= SEQUENCE {
SEQUENCE OF {
entry LDAPDN,
objectClassList SEQUENCE of LDAPString
},
ignoredDNValues LDAPString,
dNObjectClassResult ENUMERATED {
success (0),
operationsError (1),
timeLimitExceeded (3),
busy (51),
unwillingToPerform (53),
dnSelectionOrOmissionIgnored (60)
}
The dNObjectClassResult codes that are common to the LDAP
searchResponse (success, operationsError, timeLimitExceeded, busy,
unwillingToPerform) have the same meanings as defined in [1], but
they pertain specifically to the DN Object Class Request operation.
For example, the server could exceed a time limit processing a
SearchRequest with a DNObjectClassRequest control. However, the same
time limit would not be exceeded should the client submit the same
Greenblatt Standards Track 3
DN Object Class Control for LDAP May 2001
SearchRequest without the DNObjectClassRequest control. In this
case, the client can determine that a time limit has been exceeded
in servicing the DNObjectClassRequest, and can choose to resubmit
the SearchRequest without the DNObjectClassRequest control.
If the DNObjectClassRequest control includes dnSelection or
dnOmission information and the Server only supports the
listObjectClasses processing, then the Server MUST return the result
code dnSelectionOrOmissionIgnored in the DNObjectClassResponse.
5. Examples
Assume a Directory Information Tree (DIT) with the following
entries:
DN Most Subordinate Object Classes
O=dtasi.com Organization
Ou=sales, o=dtasi.com OrganizationalUnit
Ou=eng, o=dtasi.com OrganizationalUnit
Uid=bruceg, ou=sales, o=dtasi.com InetOrgPerson
Uid=joe, ou=sales, o=dtasi.com InetOrgPerson,
StrongAuthenticationUser
Uid=mary, ou=sales, o=dtasi.com InetOrgPerson
Cn=se, ou=sales, o=dtasi.com GroupOfNames
Cn=cs, ou=sales, o=dtasi.com GroupOfNames
Uid=tom, ou=eng, o=dtasi.com InetOrgPerson,
StrongAuthenticationUser
Uid=alice, ou=eng, o=dtasi.com InetOrgPerson,
StrongAuthenticationUser
Uid=fred, ou=eng, o=dtasi.com InetOrgPerson
Uid=elmer, ou=eng, o=dtasi.com InetOrgPerson
Cn=support, ou=eng, o=dtasi.com GroupOfNames
Cn=qa, ou=eng, o=dtasi.com GroupOfNames
Cn=dev, ou=eng, o=dtasi.com GroupOfNames
Table 1 - Sample DIT
Assume that the Groups in the DIT have the following member
attribute values:
Group DN Members
Cn=se, ou=sales, o=dtasi.com Uid=joe, ou=sales, o=dtasi.com
Cn=qa, ou=eng, o=dtasi.com
Cn=cs, ou=sales, o=dtasi.com Uid=mary, ou=sales, o=dtasi.com
Cn=support, ou=eng, o=dtasi.com
Uid=alice, ou=eng, o=dtasi.com
Cn=support, ou=eng, o=dtasi.com Uid=alice, ou=eng, o=dtasi.com
Uid=bruceg, ou=sales, o=dtasi.com
Cn=qa, ou=eng, o=dtasi.com Uid=fred, ou=eng, o=dtasi.com
Uid=tom, ou=eng, o=dtasi.com
Cn=dev, ou=eng, o=dtasi.com Cn=qa, ou=eng, o=dtasi.com
Uid=elmer, ou=eng, o=dtasi.com
Table 2 - Group membership information for the Sample DIT
Greenblatt Standards Track 4
DN Object Class Control for LDAP May 2001
Consider the following Searches:
a) Search Base: ou=sales, o=dtasi.com, scope: subtree, filter:
"objectClass=groupOfNames", attributes: member. Assume that
dnSelection and dnOmission are not present. This search
matches all 5 groups in Table 2. Assuming that there are no
problems in processing, the contents of the
DNObjectClassResponse are:
i. If listObjectClasses = "all": Uid=joe, ou=sales,
o=dtasi.com: inetOrgPerson, organizationalPerson, Person,
top, strongAuthenticationPerson; Cn=qa, ou=eng,
o=dtasi.com: groupOfNames, top; Uid=mary, ou=sales,
o=dtasi.com: inetOrgPerson, organizationalPerson, Person,
top; Cn=support, ou=eng, o=dtasi.com: groupOfNames, top;
Uid=alice, ou=eng, o=dtasi.com: inetOrgPerson,
organizationalPerson, Person, top,
strongAuthenticationUser;
ii. If listObjectClasses = "mostSubordinateOnly": Uid=joe,
ou=sales, o=dtasi.com: inetOrgPerson,
strongAuthenticationPerson; Cn=qa, ou=eng, o=dtasi.com:
groupOfNames; Uid=mary, ou=sales, o=dtasi.com:
inetOrgPerson; Cn=support, ou=eng, o=dtasi.com:
groupOfNames; Uid=alice, ou=eng, o=dtasi.com:
inetOrgPerson, strongAuthenticationUser;
iii. If listObjectClasses = "omitAuxiliary": Uid=joe,
ou=sales, o=dtasi.com: inetOrgPerson,
organizationalPerson, Person, top; Cn=qa, ou=eng,
o=dtasi.com: groupOfNames, top; Uid=mary, ou=sales,
o=dtasi.com: inetOrgPerson, organizationalPerson, Person,
top; Cn=support, ou=eng, o=dtasi.com: groupOfNames, top;
Uid=alice, ou=eng, o=dtasi.com: inetOrgPerson,
organizationalPerson, Person, top;
iv. If listObjectClasses = "mostSubordinateStructural":
Uid=joe, ou=sales, o=dtasi.com: inetOrgPerson; Cn=qa,
ou=eng, o=dtasi.com: groupOfNames; Uid=mary, ou=sales,
o=dtasi.com: inetOrgPerson; Cn=support, ou=eng,
o=dtasi.com: groupOfNames; Uid=alice, ou=eng, o=dtasi.com:
inetOrgPerson;
v. If listObjectClases = "none", the DNObjectClassResponse
does not contain any object class information
b) Search Base: o=dtasi.com, scope: subtree, filter: "member=
Uid=alice, ou=eng, o=dtasi.com", attributes: member. Assume
that dnSelection is "person", and dnOmission is not present.
This search only the 2 groups in Table 2 in which alice is
named as a member. The presence of the dnSelection indicates
that the SearchResultEntry message only includes those DN
attribute values in which the DN refers to an entry that
specifies a person object. So, all of the group values of the
member attribute that would have been returned if the
DNObjectClassRequest had not been specified are omitted from
the SearchResultEntry messages. This way, the client is able
to ignore the nested groups in the specified group entries.
Greenblatt Standards Track 5
DN Object Class Control for LDAP May 2001
Assuming that there are no problems in processing, the contents
of the DNObjectClassResponse are:
i. If listObjectClasses = "all": Uid=mary, ou=sales,
o=dtasi.com: inetOrgPerson, organizationalPerson, Person,
top; Uid=alice, ou=eng, o=dtasi.com: inetOrgPerson,
organizationalPerson, person, top,
strongAuthenticationUser; Uid=bruceg, ou=sales,
o=dtasi.com: inetOrgPerson, organizationalPerson, person,
top;
ii. If listObjectClasses = "mostSubordinateOnly": Uid=mary,
ou=sales, o=dtasi.com: inetOrgPerson; Uid=alice, ou=eng,
o=dtasi.com: inetOrgPerson, strongAuthenticationUser;
Uid=bruceg, ou=sales, o=dtasi.com: inetOrgPerson;
iii. If listObjectClasses = "omitAuxiliary": Uid=mary,
ou=sales, o=dtasi.com: inetOrgPerson,
organizationalPerson, Person, top; Uid=alice, ou=eng,
o=dtasi.com: inetOrgPerson, organizationalPerson, person,
top; Uid=bruceg, ou=sales, o=dtasi.com: inetOrgPerson,
organizationalPerson, person, top;
iv. If listObjectClasses = "mostSubordinateStructural":
Uid=mary, ou=sales, o=dtasi.com: inetOrgPerson; Uid=alice,
ou=eng, o=dtasi.com: inetOrgPerson; Uid=bruceg, ou=sales,
o=dtasi.com: inetOrgPerson;
v. If listObjectClases = "none", the DNObjectClassResponse
does not contain any object class information
c) Search Base: o=dtasi.com, scope: subtree, filter: "member=
Uid=alice, ou=eng, o=dtasi.com", attributes: member. Assume
that dnOmission is "person", and dnSelection is not present.
This search only the 2 groups in Table 2 in which alice is
named as a member. The presence of the dnOmission indicates
that the SearchResultEntry message only includes those DN
attribute values in which the DN refers to an entry that
specifies something other than a person object. So, all of the
person values of the member attribute that would have been
returned if the DNObjectClassRequest had not been specified are
omitted from the SearchResultEntry messages. This way, the
client is able to retrieve the nested groups from the specified
group entries. Assuming that there are no problems in
processing, the contents of the DNObjectClassResponse are:
i. If listObjectClasses = "all": Cn=qa, ou=eng, o=dtasi.com:
groupOfNames, top;
ii. If listObjectClasses = "mostSubordinateOnly": Cn=qa,
ou=eng, o=dtasi.com: groupOfNames;
iii. If listObjectClasses = "omitAuxiliary": Cn=qa, ou=eng,
o=dtasi.com: groupOfNames, top;
iv. If listObjectClasses = "mostSubordinateStructural":
Cn=qa, ou=eng, o=dtasi.com: groupOfNames;
v. If listObjectClases = "none", the DNObjectClassResponse
does not contain any object class information
6. Security Considerations
Greenblatt Standards Track 6
DN Object Class Control for LDAP May 2001
This memo describes mechanism to enhance the retrieval of DN
values when using LDAP search filters. This mechanism itself has no
known security implications. However, LDAP search filters do have
security implications, as defined in [1]. LDAP servers should take
care to protect the data they maintain from unauthorized access.
7. References
[1] Wahl, M., Kille, S. and Howes, T., "Lightweight Directory
Access Protocol (v3)", Internet Standard, December, 1997.
RFC2251.
[2] Wahl, M., Coulbeck, A., Howes, T. and Kille, S., "Lightweight
Directory Access Protocol (v3), Attribute Syntax Definitions",
Internet Standard, December, 1997. RFC2252.
[3] Wahl, M., "A Summary of the X.500(96) User Schema for use with
LDAPv3", Internet Standard, December, 1997. RFC2256.
[4] Crocker, D., and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 191 Bradner, S., "The
Internet Standards Process -- Revision 3", BCP 9, RFC 2026,
October 1996.
[5] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997
8. Author's Address
Bruce Greenblatt
Directory Tools and Application Services, Inc.
6841 Heaton Moor Drive
San Jose, CA 95119
Email: bgreenblatt@directory-applications.com
Full Copyright Statement
"Copyright (C) The Internet Society (date). 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 implmentation 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
Greenblatt Standards Track 7
DN Object Class Control for LDAP May 2001
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.
Greenblatt Standards Track 8