+++ /dev/null
-IETF LDAPEXT Working Group Roland Hedberg
-Internet-Draft Catalogix
-Expires: January 12, 2000 July 12, 2000
-
-
-
-
-
- Referrals in LDAP Directories
- <draft-ietf-ldapext-refer-00.txt>
-
-
-
-
-Status of this Memo
-
- This document is an Internet-Draft and is in full conformance with
- all provisions of Section 10 of RFC2026.
-
- 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.
-
-
- This Internet-Draft will expire on January 12, 2000.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2000). All Rights Reserved.
-
-
-
-
-
-
-
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 1]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-Abstract
-
- This document defines two reference attributes and associated "referral"
- object class for representing generic knowledge information in LDAP
- directories [RFC2251].
- The attribute uses URIs [RFC1738] to represent knowledge,
- enabling LDAP and non-LDAP services alike to be referenced.
- The object class can be used to construct entries in an LDAP directory
- containing references to other directories or services. This document
- also defines procedures directory servers should follow when supporting
- these schema elements and when responding to requests for which the
- directory server does not contain the requested object but may contain
- some knowledge of the location of the requested object.
-
-
-1. Background and intended usage
-
- The broadening of interest in LDAP directories beyond their use as front
- ends to X.500 directories has created a need to represent knowledge
- information in a more general way. Knowledge information is information
- about one or more servers maintained in another server, used to link
- servers and services together.
-
- This document is based on the following basic assumptions:
-
- - several naming domains
- The usage of LDAP as a access protocol to other than X.500 servers has
- created islands of directory service systems containing one or more
- LDAP servers. Each of these islands are free to pick their own naming
- domain. And that they also do; some use the old country,organization,
- organizationalUnit naming scheme[X.521], some use the newer domain name
- based naming scheme but these two are in no way the only ones in use. The
- existence of several naming domains are in itself no real problem as
- long as they produce unique names for the objects in the directory.
- Still naming schemes like the domain name based one, might easily create
- non-continues naming structures because some toplevel domain names
- might no find organizations that are interested and/or willing
- to manage them. Therefor tree transversal might not longer be possible
- except in parts of the whole tree.
-
- - authoritive structure vs directory structure
- In some instances even if a part of the tree is delegated to one
- organization, the organization doing the delegation might want to
- remain as the authority for the baseobject of the delegated tree.
-
- - support for onelevel searches
- At points in the tree where the responsibility for all or almost all
- of the children of a object is delegated to different organizations
- and resides in different directory servers a one-level search is not
- very efficient if not supported by special facilities in the directory
- as such.
-
-Hedberg Expires September 30, 2000 [Page 2]
-
-Internet-Draft LDAP Knowledge references July 2000
-
- -- directory server discovery
- LDAP servers that do not use dc nameing or are not registered with
- SRV records in the DNS are very hard to find.
-
- This document defines a general method of representing knowledge
- information in LDAP directories, based on URIs.
- Two types of knowledge reference are defined: refer and subRefer.
-
- The key words "MUST", "SHOULD", and "MAY" used in this document are to
- be interpreted as described in [RFC2119].
-
-2. Knowledge references
-
-2.1 The refer attribute
-
- ( 1.2.752.17.1.100
- NAME 'refer'
- DESC 'URL reference'
- EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
- USAGE distributedOperation )
-
- The refer attribute type has IA5 syntax and is case sensitive.
- It is multivalued. Values placed in the attribute MUST conform to the
- specification given for the labeledURI attribute as defined in [RFC2079].
-
- The labeledURI specification defines a format that is a URI,
- optionally followed by whitespace and a label. This document does not
- make use of the label portion of the syntax. Future documents MAY enable
- new functionality by imposing additional structure on the label portion
- of the syntax as it appears in a refer attribute.
- If the URI contained in a refer attribute refers to an LDAP
- server, it must be in the LDAP URI format described in [RFC2255].
-
- When returning a referral result, the server must not return the label
- portion of the labeledURI as part of the referral. Only the URI portion
- of the refer attributes should be returned.
-
- The refer attribute can be further specified by the use of options as
- defined in section 4.1.5 of [RFC2251]. This document defines five
- options and their use. Future documents might defined other options.
-
- The options defined are:
- "me", "sup", "cross", "nssr" and "sub" .
-
- 'refer;me' is used to hold the reference of this server, and is always
- held in the root DSE
-
- 'refer;sup' is used to hold the reference of a server superior to this
- one in this global LDAP naming domain e.g. a server holding the dc=com,
- dc=se, or the c=se node. The 'refer;sup' is always held in the root DSE.
-
-Hedberg Expires September 30, 2000 [Page 3]
-
-Internet-Draft LDAP Knowledge references July 2000
-
- 'refer;cross' indicates that this is a cross reference pointing to another
- naming context within or outside this global LDAP naming domain.
-
- 'refer;sub' indicates that this is a subordinate reference pointing to
- a subordinate naming context in this global LDAP naming domain.
-
- 'refer;nssr' indicates that this is a non-specific subordinate reference
- pointing to a subordinate naming context in this global LDAP naming domain.
-
-
-3. Use of the knowledge attribute
-
- Except when the manageDsaIT control (documented in section 6 of this
- document) is present in the operation request, the refer attribute is not
- visible to clients, except as its value is returned in referrals or con-
- tinuation references.
-
- If the manageDsaIT control is not set, and the entry named in a request
- contains the refer attribute, and the entry is not the root DSE, the
- server returns an LDAPResult with the resultCode field set to "referral"
- and the referral field set to contain the value(s) of the refer attribute
- minus any optional trailing whitespace and labels that might be present.
-
- If the manageDsaIT control is not set, and an entry containing the ref
- attribute is in the scope of a one level or subtree search request, the
- server returns a SearchResultReference for each such entry containing
- the value(s) of the entry's refer attribute.
-
- When the manageDsaIT control is present in a request, the server will
- treat an entry containing the refer attribute as an ordinary entry, and
- the refer attribute as an ordinary attribute, and the server will not
- return referrals or continuation references corresponding to refer
- attributes.
-
-
-4 Behaviour specification
-
-4.1 Name resolution for any operation
-
- Clients SHOULD perform at least simple "depth-of-referral count" loop
- detection by incrementing a counter each time a new set of referrals is
- received. (The maximum value for this count SHOULD be twice the number
- of RDNs in the target object less one, to allow for ascending and
- descending the DIT.) Clients MAY perform more sophisticated loop
- detection, for example not chasing the same referral twice.
-
- Case 1: The target entry is not held by the server and is
- superior to some entry held by the server.
-
- If the server DSE contains a "refer;sup" attribute then
- the server will return an LDAPResult with the result code field set
-
-Hedberg Expires September 30, 2000 [Page 4]
-
-Internet-Draft LDAP Knowledge references July 2000
-
- to referral, and the referral field set to contain the value(s) of
- the "refer;sup" attribute minus any optional trailing whitespace and
- labels that might be present.
-
- Case 2: The target entry is not held by the server and is
- subordinate to some entry, held by the server, that contains a
- refer attribute.
-
- The server will return an LDAPResult with the result code field set
- to referral, and the referral field set to contain the value(s) of
- the refer attribute minus any optional trailing whitespace and labels
- that might be present.
-
- Case 3: The target entry is held by the server and contains a
- refer attribute without the 'nssr' option.
-
- The server will return an LDAPResult with the result code field set
- to referral, and the referral field set to contain the value(s) of
- the refer attribute minus any optional trailing whitespace and labels
- that might be present.
-
- Case 4: The target entry is not held by the server, and is not
- subordinate or superior to any object held by the server.
-
- If the server contains a "refer;cross" attribute
- in the root DSE with a baseobject that is either the same or
- superior to the target entry then
- the server will return an LDAPResult with the result code field set
- to referral, and the referral field set to contain the value(s) of
- these refer attributes minus any optional trailing whitespace and labels
- that might be present.
-
-
-4.2 Search evaluation
-
- For search operations, once the base object has been found and
- determined NOT to contain a refer attribute without the 'nssr'
- option, the search may progress.
-
-4.2.1 base-level
-
- If the entry matches the filter and does NOT contain a refer attribute
- it will be returned to the client as described in [RFC2251].
- If the entry matches the filter contains a refer attribute without
- the 'nssr' option it will be returned as a referral as described here.
-
- If a matching entry contains a refer attribute and the URI
- contained in the refer attribute is NOT an LDAP URI [RFC2255],
- the server should return the URI value contained in the refer
- attribute of that entry in a SearchResultReference.
-
-
-Hedberg Expires September 30, 2000 [Page 5]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
- If a matching entry contains a refer attribute in the LDAP
- URI syntax, the server will return an SearchResultReference
- containing the value(s) of the refer attribute minus any optional
- trailing whitespace and labels that might be present.
- The URL from the refer attribute must be modified before it is
- returned by adding or substituting a "base" scope into the URL. If the
- URL does not contain a scope specifier, the "base" scope specifier must
- be added. If the URL does contain a scope specifier, the existing scope
- specifier must be replaced by the "base" scope.
-
-4.2.2 One-level
-
- Any entries matching the filter and one level scope that
- do NOT contain a refer attribute are returned to the client normally as
- described in [RFC2251]. Any entries matching the filter and one level
- scope that contains a refer attribute without the 'nssr' option must
- be returned as referrals as described here.
-
- If a matching entry contains a refer attribute and the URI
- contained in the refer attribute is NOT an LDAP URI [RFC2255],
- the server should return the URI value contained in the refer
- attribute of that entry in a SearchResultReference.
-
- If a matching entry contains a refer attribute in the LDAP
- URI syntax, the server will return an SearchResultReference
- containing the value(s) of the refer attribute minus any optional
- trailing whitespace and labels that might be present.
- The URL from the refer attribute must be modified before it is
- returned by adding or substituting a "base" scope into the URL. If the
- URL does not contain a scope specifier, the "base" scope specifier must
- be added. If the URL does contain a scope specifier, the existing scope
- specifier must be replaced by the "base" scope.
-
-4.2.3 Subtree search evaluation
-
- Any entries, held by the server, matching the filter and
- subtree scope that do NOT contain a refer attribute or contains
- a refer attribute with the 'nssr' option are
- returned to the client normally as described in [RFC2251].
- Any entries matching the subtree scope and containing a refer
- attribute must be returned as referrals as described here.
-
- If a matching entry contains a refer attribute and the URI
- contained in that attribute is NOT an LDAP URI [RFC2255],
- the server should return the URI value contained in the refer
- attribute of that entry in a SearchResultReference.
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 6]
-
-Internet-Draft LDAP Knowledge references July 2000
-
- If a matching entry contains a refer attribute in the LDAP
- URI syntax, the server will return an SearchResultReference
- containing the value(s) of the refer attribute minus any
- optional trailing whitespace and labels that might be present.
-
- N.B. in subtree search evaluation a entry containing a
- refer attribut with the 'nssr' option might appear twice in the
- result, first as a entry and then as a reference. A client
- following all references might therefore end up with a resultset
- containing two representations of the same entry, one from the
- server getting the original query and one from the server
- that the 'nssr' reference points to.
-
-
-5. The referral object class
-
- The referral object class is defined as follows.
-
- ( 1.2.752.17.2.10
- NAME 'referral'
- SUP top
- STRUCTURAL
- MAY ( refer ) )
-
- The referral object class is a subclass of top and may contain the
- refer attribute. The referral object class should, in general,
- be used in conjunction with the extensibleObject object class to support
- the naming attributes used in the entry's distinguished name.
-
- Servers must support the refer attributes through use of the
- referral object class. Any named reference must be of the referral
- object class and will likely also be of the extensibleObject object
- class to support naming and use of other attributes.
-
-
-6. The manageDsaIT control
-
- A client MAY specify the following control when issuing a search, com-
- pare, add, delete, modify, or modifyDN request.
-
- The control type is 2.16.840.1.113730.3.4.2. The control SHOULD be
- marked as critical. There is no value; the controlValue field is
- absent.
-
- This control causes entries with the knowledge reference attributes to be
- treated as normal entries, allowing clients to read and modify these entries.
-
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 7]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
-7. Superior Reference
-
- This document defines two types of knowledge references that point to
- parts of the naming context that is above of beyone the part held by a server.
- The 'sup' option when referring to a LDAP server that holds a
- naming context that is closer to the root of the same naming context and
- 'other' when referring to a LDAP server that holds a naming
- context that belongs to a different naming domain then the one the
- server belongs to.
-
- Thus if the server receives a request for an operation where the
- target entry is a entry closer to the root than the naming
- context held the server and if the server holds a 'refer;sup' attribute
- in the DSE, then the server MUST return an LDAPResult with the result
- code field set to referral, and the referral field set to contain the
- value(s) of the 'refer;sub' attribute minus any optional trailing
- whitespace and labels that might be present.
-
- On the other hand if the server receives a request for an operation
- where the target entry is a entry that belongs to a other naming domain
- and if there is any 'refer;other' attributes in the DSE with a base entry
- that belongs to the same naming domain as the target entry and is
- closer to the root then the target entry, then the server SHOULD return
- an LDAPResult with the result code field set to referral, and the referral
- field set to contain the value(s) of the 'refer;other' attribute minus
- any optional trailing hitespace and labels that might be present.
-
-
-8. Security Considerations
-
- This document defines mechanisms that can be used to "glue" LDAP (and
- other) servers together. The information used to specify this glue
- information should be protected from unauthorized modification. If the
- server topology information itself is not public information, the
- information should be protected from unauthorized access as well.
-
-
-9. References
-
- [RFC1738]
- Berners-Lee, T., Masinter, L., and McCahill, M., "Uniform Resource
- Locators (URL)", RFC 1738, CERN, Xerox Corporation, University of
- Minnesota, December 1994,
-
- [RFC2079]
- M. Smith, "Definition of an X.500 Attribute Type and an Object Class
- to Hold Uniform Resource Identifiers (URIs)", RFC 2079, January
- 1997.
-
-
-
-Hedberg Expires September 30, 2000 [Page 8]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
- [RFC2119]
- S. Bradner, "Key Words for use in RFCs to Indicate Requirement Lev-
- els", RFC 2119, March 1997. (Format: TXT=4723 bytes) (Also BCP0014)
- (Status: BEST CURRENT PRACTICE)
-
- [RFC2251]
- M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access Protocol
- (v3)", RFC 2251, December 1997. 1997.
-
- [RFC2255]
- T. Howes, M. Smith, "The LDAP URL Format", RFC 2255, December, 1997.
- (Format: TXT=20685 bytes) (Status: PROPOSED STANDARD)
-
- [X500]
- ITU-T Rec. X.501, "The Directory: Models", 1993.
-
- [X521]
- ITU-T Rec. X.521, "---------------------", 1993.
-
-
-12. Acknowledgements
-
- This draft is heavily based on the previous drafts on knowledge
- references in LDAP written by Christopher Lukas, Tim Howes,
- Michael Roszkowski, Mark C. Smith, Mark Wahl and David Chadwick.
- Peter Valkenburg and Henny Bekker has also made valueable
- contributions.
-
-
-13. Authors Address
-
- Roland Hedberg
- Catalogix
- Dalsveien 53
- 0775 Oslo
- Norway
- EMail: Roland@catalogix.se
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 9]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
- Appendix A
-
- Example of usage.
- Information stored in a server.
-
- dn:
- objectclass: referral
- refer;me: ldap://hostCAT/dc=cat,dc=se
- refer;sup: ldap://hostSE/dc=se
- refer;cross: ldap://hostNO/dc=no
- refer;cross: ldap://hostNL/c=nl
-
- dn: dc=cat,dc=se
- objectclass: domain
- dc: cat
-
- dn: dc=one,dc=cat,dc=se
- objectclass: extendedObject
- objectclass: referral
- refer;nssr: ldap://hostCAT1/dc=one,dc=cat,dc=se
- ou: one
- l: umea
-
- dc: dc=two,dc=cat,dc=se
- objectclass: referral
- objectclass: extendedObject
- refer;sub: ldap://hostCAT2/dc=two,dc=cat,dc=se
-
- dn: dc=three,dc=cat,dc=se
- objectclass: referral
- objectclass: extendedObject
- refer;cross: ldap://hostCAT3/dc=cat,dc=nl
-
- dc: dc=four,dc=cat,dc=se
- objectclass: domain
- objectclass: extendedObject
- ou: four
- l: umea
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 10]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
- ==========================================
- A number of descriptive cases
- ==========================================
-
- case 1: One-level search, target object on the server
- search
- baseobject: dc=cat,dc=se
- scope: onelevel
- filter: (objectclass=*)
- attributes: ou
-
- returns
- searchResultEntry {
- dn: dc=one,dc=cat,dc=se
- ou: one
- }
- searchResultReference {
- ldapurl: ldap://hostCAT2/dc=two,dc=cat,dc=se
- }
- searchResultReference {
- ldapurl: ldap://hostCAT3/dc=cat,dc=nl
- }
- searchResultEntry {
- dn: dc=four,dc=cat,dc=se
- ou: four
- }
- searchResultDone {
- resultCode: success
- }
-
- case 2: Subtree search, target object on the server
- search
- baseobject: dc=cat,dc=se
- scope: subtree
- filter: (objectclass=*)
- attributes: ou
-
- returns
- searchResultEntry {
- dn: dc=one,dc=cat,dc=se
- ou: one
- }
- searchResultReference {
- ldapurl: ldap://hostCAT1/dc=one,dc=cat,dc=se
- }
- searchResultReference {
- ldapurl: ldap://hostCAT2/dc=two,dc=cat,dc=se
- }
-
-
-
-Hedberg Expires September 30, 2000 [Page 11]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
- searchResultReference {
- ldapurl: ldap://hostCAT3/dc=cat,dc=nl
- }
- searchResultEntry {
- dn: dc=four,dc=cat,dc=se
- ou: four
- }
- searchResultDone {
- resultCode: success
- }
-
- case 3: base search, target entry contains a 'refer;nssr' attribute
- search
- baseobject: dc=one,dc=cat,dc=se
- scope: base
- filter: (objectclass=*)
- attributes: ou
-
- returns
- searchResultEntry {
- dn: dc=one,dc=cat,dc=se
- ou: four
- }
- searchResultDone {
- resultCode: success
- }
-
- case 4: base search, target entry contains a 'refer;sub' attribute
- search
- baseobject: dc=two,dc=cat,dc=se
- scope: base
- filter: (objectclass=*)
- attributes: ou
-
- returns
- searchResultDone {
- resultCode: referral
- matchedDN: dc=two,dc=cat,dc=se
- referral: ldap://hostCAT2/dc=two,dc=cat,dc=se
- }
-
-
-
-
-
-
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 12]
-
-Internet-Draft LDAP Knowledge references July 2000
-
-
- case 5: one-level search, target entry contains a 'refer;nssr' attribute
- search
- baseobject: dc=one,dc=cat,dc=se
- scope: onelevel
- filter: (objectclass=*)
- attributes: ou
-
- searchResultDone {
- resultCode: referral
- matchedDN: dc=one,dc=cat,dc=se
- referral: ldap://hostCAT1/dc=one,dc=cat,dc=nu
- }
-
- case 6: Search on area above the baseobject of the server
- search
- baseobject: dc=pi,dc=se
- scope: subtree
- filter: (objectclass=*)
- attributes: ou
-
- returns
- searchResultDone {
- resultCode: referral
- matchedDN: dc=se
- referral: ldap://hostSE/dc=se
- }
-
-
-
- case 7: Search on area beyond, but not below the baseobject
- of the server
- search
- baseobject: o=surfnet,c=nl
- scope: base
- filter: (objectclass=*)
-
- returns
- searchResultDone {
- resultCode: referral
- matchedDN: c=nl
- referral: ldap://hostNL/c=NL
- }
-
-
-
-
-
-
-
-
-
-Hedberg Expires September 30, 2000 [Page 13]
-