view Side-By-Side changes
Intended Category: Standard Track OpenLDAP Foundation Expires:4 January17 May 20014 July17 November 2000 Named Subordinate References in LDAP Directories<draft-zeilenga-ldap-namedref-00.txt><draft-zeilenga-ldap-namedref-01.txt> 1. Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. This document is intended to be, after appropriate review and revision, submitted to the RFC Editor as a Standard Track document. Distribution of this memo is unlimited. Technical discussion of this document will take place on the IETF LDAP Extension Working Group mailing list <ietf-ldapext@netscape.com>. Please send editorial comments directly to the author <Kurt@OpenLDAP.org>. 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. Copyright 2000, The Internet Society. All Rights Reserved. Please see the Copyright section near the end of this document for more information. 2. Abstract This documentdefinesdetails schema and protocol elements for representing and manipulatinggeneric knowledge informationnamed subordinate references in LDAP [RFC2251] directories.An attribute type "ref" is used to store URIs [RFC1738] which may refer to LDAP and non-LDAP services. AnA referral objectclass "referral"is used toconstruct entries in an LDAP directory whichhold referencesto other directoriesat subordinate delegation points in the directory. These referral objects hold one orservices. Anmore URIs [RFC1738] contained in values of the ref attribute type. A control, ManageDsaIT, is defined to allowclients to manipulatemanipulation of referral objects as normalentries. The document describes procedures directory servers should follow when supporting these elements. Zeilenga [Page 1] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000objects. 3. Background and intended usage The broadening of interest in LDAP directories beyond their use as front ends to X.500 [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 defines ageneralspecific method of representing subordinate knowledgeinformationreferences in LDAPdirectories, based on URIs.directories. Other forms of knowledge information are not detailed by this document. These forms may be described in subsequent documents. This document details subordinate referral processing requirements for servers. This document does not detailclient processing of referralprotocol syntax andsearch reference responses.semantics. This isdetaileddescribed in RFC 2251or subsequent documents.[RFC2251]. The key words "SHALL", "SHALL NOT", "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", "MAY" and "MAY NOT" used in this document are to be interpreted as described in [RFC2119]. 4. Schema4.1Theref attribute type This section definesschema definitions are defined in terms of RFC 2252 [RFC2252]. 4.1. The referral object class A referral object is a directory entry whose structural object class is (or is derived from) theref attribute type for holding general knowledge reference information.referral object class. (2.16.840.1.113730.3.1.342.16.840.1.113730.3.2.6 NAME'ref''referral' DESC'URI reference' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE distributedOperation'named subordinate reference object' STRUCTURAL MUST ref ) Theref attribute type has IA5 syntax andreferral object class iscase sensitive.a structural object class used to represent a named reference in the directory. Theref attribute is multi valued. Values placedreferral object class SHOULD be used in conjunction with theattribute MUST conformextensibleObject object class to support thespecification given for the labeledURI attribute definednaming attributes used 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 ofthesyntax.entry's Distinguished Name (DN) [RFC2253]. Referral objects are directory entries whose structural object call is (or is derived from) referral. Referral objects SHOULD only be instantiated at the subordinate delegation points. In the presence of a ManageDsaIT control, referral objects are treated as normal entries (as described in section 5). Note that the ref attribute is operational and will only returned in a search entry response when requested. In the absence of a ManageDsaIT control, the content of referral objects are used to construct referrals and search references (as described in section 6) and, as such, the referral entries are not themselves visible to clients. 4.2 The ref attribute type ( 2.16.840.1.113730.3.1.34 NAME 'ref' DESC 'named reference - a labeledURI' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE distributedOperation ) The ref attribute type has IA5 syntax and is case sensitive. The ref attribute is multi-valued. Values placed in the attribute MUST conform to the specification given for the labeledURI attribute 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 the ref attribute. If the URI contained in a ref attribute value refers toan LDAPv3a LDAP [RFC2251] server, it MUST be a in the form of a LDAPURI scheme described inURL [RFC2255]. In general, the LDAP URL should not contain an explicit scope specifier, filter, attribute description list, or any extensions. If the DN part is absent (or empty), the LDAP URL refers to entry of the same DN as the referral object in which the value is held. Other URI schemes MAY be used but MUST refer to services which are capable of completing operations referred to the services.The URI values, regardless of scheme,URIs contained in a ref attributemustMUST pointZeilenga [Page 2] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000to services which are equally capable of handling operationsreferreferring tosaidthese services. The referential integrity of the URI SHALL NOT be validated by the server holding or returning thereference. When returning a referral result, the server MUST NOT return the label portion of the labeledURIURI (whether as part of thereferral. Only the URI portionvalue of theref attribute SHOULD be returned. The refattributeSHOULD NOT be used for naming. 4.2. The referral object class The referral object class is definedor asfollows. ( 2.16.840.1.113730.3.2.6 NAME 'referral' DESC 'named reference object' STRUCTURAL MUST ref ) The referral object class is a structural object class used to representpart of anamedreferral result or search referencein the directory. Theresponse). When returning a referralobject class SHOULD be used in conjunction with the extensibleObject object class to support the naming attributes used inresult or search continuation, theentry's distinguished name. Inserver MUST NOT return thepresenceseparator or label portions ofa ManageDsaIT control, referral objects are treatedthe attribute values asnormal entries. Note thatpart of the reference. When therefattributeis operational and will only returned in a search entry response when requested. Incontains multiple values, theabsenceURI part ofa ManageDsaIT control, referral objects contents areeach value is used to constructreferrals and search references and, as such,the referralentries themselves are general visible to clients. 5. Use of theresult or search continuation. The ref attributeTwo usesvalues SHOULD NOT be used as an relative naming component of an entry's DN [RFC2253]. This documents use of the ref attributeis defined in this document. The first use,in conjunction with the referral objectclass, represents a named reference. The second use, in conjunction with the Root DSE, represents superiorclass to represent subordinate reference. Thefollowing sections detail these usages of the ref attribute. Other uses of theref attributeMAYmay be used for other purposes as definedin subsequent documents, orbybilateral agreement between cooperating clients and servers and SHOULD be defined in conjunctionother documents. 5. The ManageDsaIT control The client MAY provide the ManageDsaIT control with anobject class Zeilenga [Page 3] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000 indicatingoperation to indicates that theusage. 5.1. Named reference A named referenceoperation isusedintended tofacilitate distributed name resolution or search across multiple servers. The ref attribute appears in an referral object (an entrymanage objects withobject class of referral) named inthereferencing server.DSA (server) Information Tree. Thevaluecontrols causes Directory-specific entries (DSEs), regardless ofthe ref attribute pointstype, to be treated as normal entries allowing clients to interrogate and update these entries using LDAP operations. This control is analogous to thecorresponding entry maintained in the referenced server. While the distinguished nameManageDsaIT option described ina value ofX.511(93) [X.511]. A client MAY specify theref attribute is typically that offollowing control when issuing anentry in a naming context below the naming context held byadd, compare, delete, modify, modifyDN, search request or an extended operation for which thereferencing server, itcontrol ispermitted todefined. The control type is 2.16.840.1.113730.3.4.2. The control criticality may bethe distinguished name of any entry. If the ref attributeTRUE or FALSE. There ismulti-valued allno value; theDNscontrolValue field SHALL be absent. When present in thevalues of the ref attribute SHOULD have the same value. Administrators SHOULD avoid configuring naming loops using referrals. The URI SHOULD NOT explicitly define a scope andrequest, the serverSHOULDSHALL NOTexplicitly add a scope to the URI before returning it to the client asgenerate a referral orsearchcontinuation referenceas the scope is implied byfor any referral object and instead perform treat theoperation. Named references MUST be treatedreferral object as an normalentries if the request includes the ManageDsaIT control. The remainder of this section describes processing of requests which doentry. When notinclude the ManageDsaIT control. 5.1.1. Scenarios The following sections contain specifications of howpresent, referral objectsshouldSHALL beused in different scenarios followed by examples thathandled as described above. The control MAY cause other objects to be treated as normal entries as defined by subsequent documents. 6. Named subordinate references A named subordinate reference is constructed by instantiating a referral object at the delegation point in the referencing server with ref attribute values which to point to the corresponding subtree maintained in the referenced server. That is, if server A holds "dc=example,dc=net" and server B holds "dc=sub,dc=example,dc=net", server A may contain a referral object named "ou=sub,dc=example,dc=net" which contains a ref attribute with value of "ldap://B/dc=sub,dc=example,dc=net". dn: dc=sub,dc=example,dc=net dc: sub ref: ldap://B/dc=sub,dc=example,dc=net objectClass: referral objectClass: extensibleObject While typically the DN of the referral object and the DN of the object in the referenced server are the same, they need not be the same. If they are the same, the DN part of the LDAP URL MAY be absent. That is, in the above example, the ref attribute with the value of "ldap://B/" is equivalent to "ldap://B/dc=sub,dc=example,dc=net". If the ref attribute has multiple values, all the DNs contained (or implied) by LDAP URL SHOULD have the same. Administrators SHOULD avoid configuring naming loops using referrals. Named references MUST be treated as normal entries if the request includes the ManageDsaIT control as described in section 5. 7. Scenarios The following sections contain specifications of how referral objects should be used in different scenarios followed by examples that illustrate that usage. The scenarios described consist of referral operation when finding target of a non-search operation, when finding the base of a search operation, and when generating search references. Lastly, other operation processing considerations are presented. It is to be noted that, in this document, a search operation is conceptually divided into two distinct, sequential phases: (1) finding the base object where the search is to begin, and (2) performing the search itself. Theoperation of the server with respect to referrals infirst phase(1)is similarto the operation ofto, but not theserver whilesame as, finding the targetobject forof a non-searchoperations.operation. Itis toshould also be noted that the ref attribute may have multiple values and, where these sections refer to a single ref attribute value, multiple ref attribute values may be substituted and SHOULD beZeilenga [Page 4] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000processed and returned (in any order) as a group in a referral or search reference in the same way as described for a single ref attribute value. Search references returned for a given request may be returned in any order.5.1.1.1.7.1. Exampleconfiguration |------------------------------------------------------------| | Server A | | dn: o=abc,c=us dn: o=xyz,c=us | | o: abc o: xyz | | ref: ldap://hostB/o=abc,c=us ref: ldap://hostD/o=xyz,c=us | | ref: ldap://hostC/o=abc,c=us objectclass: referral | | objectclass: referral objectclass: extensibleObject| | objectclass: extensibleObject | |____________________________________________________________| |------------------| |------------------| |------------------| | Server B | | Server D | | Server C | | dn: o=abc,c=us | | dn: o=xyz,c=us | | dn: o=abc,c=us | | o: abc | | o: xyz | | o: abc | | other attributes | | other attributes | | other attributes | |__________________| |__________________| |__________________| In this example, Server A holds references for two entries: "o=abc,c=us" and "o=xyz,c=us".Configuration For example, suppose the"o=abc,c=us" entry, Server Acontacted server (hosta) holdstwo references, one to Server B and one to Server C. The entries referenced are replicas of each other. Forthe"o=xyz,c=us" entry, Server A holds a single reference toentry "O=MNN,C=WW" and the entrycontained in Server D. In"CN=Manager,O=MNN,C=WW" and the followingprotocol interaction examples,referral objects: dn: OU=People,O=MNN,C=WW OU: People ref: ldap://hostb/OU=People,O=MNN,C=US ref: ldap://hostc/OU=People,O=MNN,C=US objectClass: referral objectClass: extensibleObject dn: OU=Roles,O=MNN,C=WW OU: Roles ref: ldap://hostd/ objectClass: referral objectClass: extensibleObject The first referral object provides theclient has contacted Server A. Server A holdsserver with thenaming context "c=us". 5.1.1.2. Base or Target object considerations As previously described,knowledge that subtree "OU=People,O=MNN,C=WW" is held by hostb and hostc (one is theprocess of generating referrals formaster and the other asearch can be described in two phases.shadow). Thefirst, whichsecond referral object provides the server with the knowledge that the subtree "OU=Roles,O=MNN,C=WW" isdescribedheld by hostd. Also, in the context of thissection,document, the "nearest naming context" means the deepest context which the object isgenerating referrals based onwithin. That is, if thebaseobjectspecified inis within multiple naming contexts, thesearch. This processnearest naming context issimilar totheprocess of generating referrals based onone which is subordinate to all other naming contexts thetargetobjectwhile processing other operations (modify,is within. 7.2. Target object considerations This section details referral handling to add, compare, delete,modify DN,modify, andcompare) with the sole exception that for these other operations, themodify DNin the referral must be modified in some cases. Zeilenga [Page 5] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000operations. Ifathe client requests any of these operations, there are four cases that the server must handle with respect to thebase ortargetobject specified inobject. In cases where therequest. Case 1: The base or target objectURI to be returned isnot held bya LDAP URL, the serverand is not within or subordinate to any naming context nor is subordinate toSHOULD trim anyreferral object held bypresent search-specific parts (e.g. scope, filter, attribute list) from theserver. The handling of this case is describedURI before return it. Critical extensions MUST NOT be trimmed nor modified. Other parts MAY be modified or trimmed. The DN part MUST be modified such that it refers to the appropriate target insection 6.the referenced server (as detailed below). If the modified DN part is the same as the DN of the original request, the modified DN part MAY be trimmed. Case2:1: Thebase ortarget object is not held by the server and isa referral object. In this case, if the type of operation requested is a searchnot within orthe URI containedsubordinate to any naming context nor inthe ref attribute of the requested basesubordinate to any referral objectis NOT an LDAP URI,held by the server. The server SHOULDreturn the URI value contained in the ref attribute of the base object whose DN is the DN requested byprocess theclientrequest normally asthe baseappropriate forthe operation. Example: If the client issuesasearch innon-existent base which not within any naming context of thebase object is "o=xyz,c=us",serverA will(generally returnSearchResultDone "referral" { ldap://hostD/o=xyz,c=us } If the type of operation requested is notasearch and the URI contained in the ref attribute of the requestedsuperior referral or noSuchObject). This document does not detail management or processing superior knowledge references. Case 2: The target object isan LDAP URI,held by the serverSHOULD returnand is amodified form of this URI.referral object. Thereturned URI MUST have only the protocol, host, port, and trailing "/" portion ofserver SHOULD return the URI value contained in the refattribute. The server SHOULD strip any DN, attributes, scope, and filter partsattribute of theURI.referral object. Example: If the client issues a modify request for the target object of"o=abc,c=us","OU=People,O=MNN,c=WW", the serverA will returnmay return: ModifyResponse "referral" {ldap://hostB/ ldap://hostC/ldap://hostb/OU=People,O=MNN,C=WW ldap://hostc/OU=People,O=MNN,C=WW } or, if the server chooses to trim the DN from the LDAP URL, it may return: ModifyResponse "referral" { ldap://hostb/ ldap://hostc/ } Case 3: Thebase ortarget object is not held by the server, but is object where the nearest naming context contains no referral object which thebase ortarget object is subordinate to.Zeilenga [Page 6] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000 In the context of this document, the nearest naming context means the deepest context which the object is within. That is, if the object is within multiple naming contexts, the nearest naming context the one which is subordinate to all other naming contexts the object is within.If the nearest naming context contains no referral object which thebase ortargetobjectis subordinatetoto, therequest,request SHOULD beprocessprocessed normally as appropriate for a nonexistentbase ortargetobject(generally return noSuchObject). Case 4: Thebase ortarget object is not held by the server, but is object where the nearest naming context contains a referral object which thebase ortarget object is subordinate to.As noted above, the nearest naming context means the deepest context which the object is within.If a client requests an operation for which thebase ortarget object is not held by the server but the nearest naming context contains a referral object which thebase ortarget object is subordinate to, the serverMUSTSHALL return a referral response whichcontains referral valuesconstructed from the URIcomponentsportion of the refattribute valuesvalue of the referral object.For each ref attribute value, if the URI component is not an LDAP URIs, it SHOULD be returned as-is. If URI component is an LDAP URI, the URI MUST be modified, regardless of the type of operation, as case 2 describes for a non-search request. That is, the DN, attributes, scope, and filter parts of the URI MUST be stripped from the returned URI.Example: If the client issues an add request where the target object has a DN of"cn=Chris Lukas,o=abc,c=us","cn=Manager,OU=Roles,O=MNN,C=WW", the serverAwill return AddResponse "referral" {ldap://hostB/ ldap://hostC/ldap://hostd/cn=Manager,OU=Roles,O=MNN,C=WW" }5.1.1.3. Search with one level or subtree scope For search operations, once the base object has been found and determined not to be a referral object, the search may progress. Any entries matchingNote that thefilter and scopeDN part of thesearch whichLDAP URL isnot a Zeilenga [Page 7] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000 referral object are returnedmodified such that it refers to theclient normally as describedappropriate entry in[RFC2251]. For each referral object within the requested scope, regardless ofthefilter,referenced server. As theserver SHOULD return a SearchResultReference whichDN part isconstructed fromtheURI component of values ofsame original target DN (in this example), theref attribute. Ifserver may trim theURI component is not an LDAP URI, it should be returned as is. IfDN and return AddResponse "referral" { ldap://hostd/ } 7.3. Base object considerations This section details referral handling for base object processing within search operations. Like target object considerations for non- search operations, there are the four cases. In cases where the URIcomponentto be returned isana LDAPURI,URL, theURI must be modified toserver MUST remove any explicit scopespecifier. One Level Example: If a client requests a one level search of "c=US" then, in additionspecifier from the LDAP URL prior toany entries one level belowreturn it. In addition, the"c=US" naming context matchingDN part MUST be modified such that it refers to thefilter (shown below as "... SearchResultEntry responses ..."),appropriate target in the referenced serverwill also return search references for any referral object within(as detailed below). If thescope ofmodified DN part is thesearch. The ordersame as the DN of theSearchResultEntry responses andoriginal request, theSearchResultReference responses is undefined. One possible sequence is shown. ... SearchResultEntry responses ... SearchResultReference { ldap://hostB/o=abc,c=us ldap://hostC/o=abc,c=us } SearchResultReference { ldap://hostD/o=xyz,c=us } SearchResultDone "success" Subtree Example:modified DN part MAY be trimmed. Ifa client requests a subtree search of "c=us", then in addition to any entriesaliasing dereferencing was necessary in finding, the"c=us" naming context which matchDN part of URI MUST be replaced with thefilter, Server A will also return two continuation references. As described inbase DN as modified by thepreceding section,alias dereferencing such that the return URL refers to theordernew target object per [RFC2251, 4.1.11]. Critical extensions MUST NOT trimmed nor modified. Other parts of theresponses is not defined. One possible response might be: SearchResultReference { ldap://hostB/o=abc,c=us ldap://hostC/o=abc,c=us Zeilenga [Page 8] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000 } ... SearchResultEntry responses ... SearchResultReference { ldap://hostD/o=xyz,c=us } SearchResultDone "success" 6. Superior Reference AnLDAPserver mayURL MAY beconfigured to return a superior reference in the case where the requestedmodified. Case 1: The baseor targetobject is notcontainedheld by the server and is not within or subordinate toaany naming context nor in subordinate to any referral object held by theserver or referral object. An LDAP server's root DSE MAY contain a ref attribute.server. Thevalues of the ref attribute in the root DSE that are LDAP URIsserver SHOULDNOT contain any DN part nor other search parameters (scope, filter, attribute list). They MUST include the URI hostpart. Ifprocess theLDAP server's root DSE contains a ref attribute and a client requestsrequest normally as appropriate for atarget ornon-existent baseobject not held by the server andwhich notcontainedwithinor subordinate toany naming context of the server (generally return a superior referral or noSuchObject). This document does not detail management or processing superior knowledge references. Case 2: The base object is held by the serverorand is a referralobject, theobject. The serverMUSTSHOULD return the URIcomponent of the valuesvalue contained in the ref attribute of theroot DSE as illustrated in the example.referral object. If theLDAP server's root DSE does not containURI is aref attribute,LDAP URL, in addition to trimming search-specific parts as described above, the servermay return referral result with or more URIs determined via an appropriate method, return noSuchObject, or other appropriate resultCode. The presence of the ref attribute within the root DSE SHALLMUST NOTcause operations upontrim the DN of theroot DSEURI if it is not equal togenerate a referral.the target DN but MAY if it equal. Example: Ifathe clientrequestsissues asubtreesearchof "c=de" from server Ain which theexample configuration, and server A hasbase object is "OU=Roles,O=MNN,C=WW", thefollowing ref attribute defined in it's root DSE: ref: ldap://hostG/ thenserverAwill returnZeilenga [Page 9] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000SearchResultDone "referral" {ldap://hostG/ldap://hostd/OU=Roles,O=MNN,C=WW }8. The ManageDsaIT controlor, if it chooses to trim the DN: SearchResultDone "referral" { ldap://hostd/ } Case 3: TheManageDsaIT control indicates thatbase object is not held by theoperation has been requested so thatserver, but is object where theDSA (server) Information Treenearest naming context contains no referral object which the base object ismanaged. The controls causes DSEs, regardless of type, tosubordinate to. If the nearest naming context contains no referral object which the base is subordinate to, the request SHOULD betreatedprocessed normally asnormal entries allowing clients to interrogate and update these entries using LDAP operations. This controlappropriate for a nonexistent base (generally return noSuchObject). Case 4: The base object isanalogous tonot held by theManageDsaIT option described in X.511(93) [X.511]. A client MAY specifyserver, but is object where thefollowing control when issuing an add, compare, delete, modify, modifyDN, search request ornearest naming context contains a referral object which the base object is subordinate to. If a client requests anextendedoperation for which thecontrol is defined. The control type is 2.16.840.1.113730.3.4.2. The control criticality may be TRUE or FALSE. Theretarget object isno value;not held by thecontrolValue field is absent. When present inserver but therequest,nearest naming context contains a referral object which the target object is subordinate to, the server SHALLNOT generatereturn a referralor continuation reference for anyresponse which constructed from the URI portion of the ref value of the referralobjectobject. Example: If the client issues an search request for "cn=Manager,OU=Roles,O=MNN,C=WW", the server will return SearchResultDone "referral" { ldap://hostd/cn=Manager,OU=Roles,O=MNN,C=WW" } Note that the DN part of the LDAP URL is modified such that it refers to the appropriate entry in the referenced server. As the DN part is the same original base DN (in this example), the server may trim the DN andinstead perform treatreturn SearchResultDone "referral" { ldap://hostd/ } 7.4. Search continuation considerations For search operations, once thereferralbase objectas an normal entry. Whenhas been found and determined notpresent, referral objects SHALL be handled as described above. The control MAY cause other objectsto betreated as normala referral object, the search may progress. Any entriesas defined by subsequent documents. 9. Relationship to X.500 Knowledge References The X.500 standard defines several typesmatching the filter and scope ofknowledge references, usedthe search which is not a referral object are returned tobind together different partsthe client normally as described in [RFC2251]. For each referral object within the requested scope, regardless of theX.500 namespace. In X.500, knowledge references can be associated withsearch filter, the server SHOULD return asetSearchResultReference which is constructed from the URI component ofunnamed entries (e.g., a reference, associated with an entry, tovalues of the ref attribute. If the URI component is not aserver containingLDAP URL, it should be returned as is. If thedescendants of that entry). This createsURI component is apotential problem forLDAPclients resolving an LDAPv3URL, the URIreferral referringmust be modified toan LDAP directory back-ended by X.500. Supposeremove any explicit scope specifier. If thesearchLDAP URL's DN part isa subtree search, and that server A holds the base object ofabsent or empty, thesearch, and server B holdsDN part must be modified to contain thedescendantsDN of thebasereferral object.The behaviorSubtree Example: If a client requests a subtree search ofX.500(1993) subordinate"O=MNN,C=WW", then in addition to any entries within scope which match the filter, hosta will also return two search referencesis thatas thebase object on server A is searched, andtwo referral objects are within scope. One possible response might be: SearchEntry for O=MNN,C=WW SearchResultReference { ldap://hostb/OU=People,O=MNN,C=WW ldap://hostc/OU=People,O=MNN,C=WW } SearchEntry for CN=Manager,O=MNN,C=WW SearchResultReference { ldap://hostd/OU=Roles,O=MNN,C=WW } SearchResultDone "success" One Level Example: If asingle continuation reference is returned pointing to allclient requests a one level search of "O=MNN,C=WW" then, in addition to any entries one level below the "O=MNN,C=WW" entry matching the filter, thedescendants held onserverB. Zeilenga [Page 10] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000 An LDAP URI only allowswill also return two search references as thebasetwo referral objects are within scope. One possible sequence is shown: SearchResultReference { ldap://hostb/OU=People,O=MNN,C=WW ldap://hostc/OU=People,O=MNN,C=WW } SearchEntry for CN=Manager,O=MNN,C=WW SearchResultReference { ldap://hostd/OU=Roles,O=MNN,C=WW } SearchResultDone "success" 7.6. Other considerations This section details other operation processing considerations. 7.6.1 Bind A server SHOULD process a bind request as if it held no referral objects. That is, if the bind name is a referral objectto be specified. Itor isnot possible using standard LDAP URIssubordinate toindicateasearch of several entries whose names are not known toreferral object, the serverholding the superior entry. X.500 solves this problem by having two fields, one indicating the progress of name resolution and the other indicatingSHOULD process thetarget ofrequest normally as appropriate for a non-existent bind name. 7.6.2 Modify DN If thesearch. InnewSuperior is a referral object or is subordinate to a referral object, theabove example, name resolution would be complete byservers SHOULD return affectsMultipleDSAs. If thetimenewRDN already exists but is a referral object, thequery reachedserverB, indicating that itshouldnot refer the request. This document does not address this problem. This problem will be addressed in separate documents which define the changes to the X.500 distribution model and LDAPv3 extensions to indicate the progressreturn affectsMultipleDSAs instead ofname resolution. 10.entryAlreadyExists. 8. Security Considerations This document defines mechanisms that can be used to"glue"bind together LDAP (and other) servers together. The information used tospecify this glue informationbind services together 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.11.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. [RFC2119] S. Bradner, "Key Words for use in RFCs to Indicate Requirement Levels", RFC 2119 (Also BCP0014), March 1997. [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access Protocol (v3)", RFC 2251, December 1997. [RFC2252] M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions", RFC 2252, December 1997. [RFC2253] M. Wahl, S. Kille, T. Howes, "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names", RFC 2253, December 1997. [RFC2255] T. Howes, M. Smith, "The LDAP URL Format", RFC 2255, December, 1997. [X.500] ITU-T Rec. X.501, "The Directory: Models", 1993. [X.511] ITU-T Rec. X.511, "The Directory: Abstract ServiceZeilenga [Page 11] INTERNET-DRAFT draft-zeilenga-ldap-namedref-00 4 July 2000Definition", 1993.12.10. Acknowledgments This document is borrows heavily from previous work by IETF LDAPext working group. In particular, this document is based upon "Named Referral in LDAP Directories" (a work in progress) by Christopher Lukes, Tim Howes, Michael Roszkowski, Mark C. Smith, and Mark Wahl.13.11. Author's Address Kurt D. Zeilenga OpenLDAP Foundation <Kurt@OpenLDAP.org> Copyright 2000, The Internet Society. All Rights Reserved. Thisdraft expires 4 Jan. 2001. Zeilenga [Page 12]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 AUTHORS, 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. ----