From a2a687411c9859df078904cc27619f954ca506a5 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga <kurt@openldap.org> Date: Sat, 8 Jun 2002 20:08:28 +0000 Subject: [PATCH] Update drafts --- .../draft-ietf-ldapext-ldapv3-vlv-xx.txt | 625 ++++++++ doc/drafts/draft-ietf-ldapext-locate-xx.txt | 362 +++++ doc/drafts/draft-ietf-ldup-lcup-xx.txt | 1298 +++++++++++++++++ doc/drafts/draft-weltman-ldapv3-proxy-xx.txt | 351 +++++ doc/drafts/draft-zeilenga-ldap-adlist-xx.txt | 283 ++++ doc/drafts/draft-zeilenga-ldap-authzid-xx.txt | 339 +++++ doc/drafts/draft-zeilenga-ldap-cancel-xx.txt | 395 +++++ .../draft-zeilenga-ldap-collective-xx.txt | 507 +++++++ .../draft-zeilenga-ldap-features-xx.txt | 227 +++ .../draft-zeilenga-ldap-namedref-xx.txt | 743 ++++++++++ doc/drafts/draft-zeilenga-ldap-opattrs-xx.txt | 227 +++ doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt | 787 ++++++++++ .../draft-zeilenga-ldap-subentry-xx.txt | 619 ++++++++ doc/drafts/draft-zeilenga-ldap-t-f-02.txt | 227 +++ .../draft-zeilenga-ldap-user-schema-xx.txt | 1123 ++++++++++++++ 15 files changed, 8113 insertions(+) create mode 100644 doc/drafts/draft-ietf-ldapext-ldapv3-vlv-xx.txt create mode 100644 doc/drafts/draft-ietf-ldapext-locate-xx.txt create mode 100644 doc/drafts/draft-ietf-ldup-lcup-xx.txt create mode 100644 doc/drafts/draft-weltman-ldapv3-proxy-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-adlist-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-authzid-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-cancel-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-collective-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-features-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-namedref-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-opattrs-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-subentry-xx.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-t-f-02.txt create mode 100644 doc/drafts/draft-zeilenga-ldap-user-schema-xx.txt diff --git a/doc/drafts/draft-ietf-ldapext-ldapv3-vlv-xx.txt b/doc/drafts/draft-ietf-ldapext-ldapv3-vlv-xx.txt new file mode 100644 index 0000000000..34ae435306 --- /dev/null +++ b/doc/drafts/draft-ietf-ldapext-ldapv3-vlv-xx.txt @@ -0,0 +1,625 @@ + +Internet-Draft D. Boreham, Bozeman Pass +LDAPext Working Group J. Sermersheim, Novell +Intended Category: Standards Track A. Kashi, Microsoft +<draft-ietf-ldapext-ldapv3-vlv-06.txt> +Expires: Nov 2002 May 2002 + + + LDAP Extensions for Scrolling View Browsing of Search Results + + +1. 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 document is intended to be submitted, after review and revision, + as a Standards Track document. Distribution of this memo is + unlimited. + Please send comments to the authors. + + +2. Abstract + + This document describes a Virtual List View control extension for the + Lightweight Directory Access Protocol (LDAP) Search operation. This + control is designed to allow the "virtual list box" feature, common + in existing commercial e-mail address book applications, to be + supported efficiently by LDAP servers. LDAP servers' inability to + support this client feature is a significant impediment to LDAP + replacing proprietary protocols in commercial e-mail systems. + + The control allows a client to specify that the server return, for a + given LDAP search with associated sort keys, a contiguous subset of + the search result set. This subset is specified in terms of offsets + into the ordered list, or in terms of a greater than or equal + comparison value. + + + Boreham et al Internet-Draft 1 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + +3. Conventions used in this document + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are + to be interpreted as described in RFC 2119 [Bradner97]. + + +4. Background + + A Virtual List is a graphical user interface technique employed where + ordered lists containing a large number of entries need to be + displayed. A window containing a small number of visible list entries + is drawn. The visible portion of the list may be relocated to + different points within the list by means of user input. This input + can be to a scroll bar slider; from cursor keys; from page up/down + keys; from alphanumeric keys for "typedown". The user is given the + impression that they may browse the complete list at will, even + though it may contain millions of entries. It is the fact that the + complete list contents are never required at any one time that + characterizes Virtual List View. Rather than fetch the complete list + from wherever it is stored (typically from disk or a remote server), + only that information which is required to display the part of the + list currently in view is fetched. The subject of this document is + the interaction between client and server required to implement this + functionality in the context of the results from a sorted LDAP search + request. + + For example, suppose an e-mail address book application displays a + list view onto the list containing the names of all the holders of e- + mail accounts at a large university. The list is sorted + alphabetically. While there may be tens of thousands of entries in + this list, the address book list view displays only 20 such accounts + at any one time. The list has an accompanying scroll bar and text + input window for type-down. When first displayed, the list view shows + the first 20 entries in the list, and the scroll bar slider is + positioned at the top of its range. Should the user drag the slider + to the bottom of its range, the displayed contents of the list view + should be updated to show the last 20 entries in the list. Similarly, + if the slider is positioned somewhere in the middle of its travel, + the displayed contents of the list view should be updated to contain + the 20 entries located at that relative position within the complete + list. Starting from any display point, if the user uses the cursor + keys or clicks on the scroll bar to request that the list be scrolled + up or down by one entry, the displayed contents should be updated to + reflect this. Similarly the list should be displayed correctly when + the user requests a page scroll up or down. Finally, when the user + types characters in the type-down window, the displayed contents of + the list should "jump" or "seek" to the appropriate point within the + list. For example, if the user types "B", the displayed list could + center around the first user with a name beginning with the letter + "B". When this happens, the scroll bar slider should also be updated + to reflect the new relative location within the list. + + Boreham et al Internet-Draft 2 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + + This document defines a request control which extends the LDAP search + operation. Always used in conjunction with the server side sorting + control [SSS], this allows a client to retrieve selected portions of + large search result set in a fashion suitable for the implementation + of a virtual list view. + + +5. Client-Server Interaction + + The Virtual List View control extends a regular LDAP Search operation + which must also include a server-side sorting control [SSS]. Rather + than returning the complete set of appropriate SearchResultEntry + messages, the server is instructed to return a contiguous subset of + those entries, taken from the sorted result set, centered around a + particular target entry. Henceforth, in the interests of brevity, the + sorted search result set will be referred to as "the list". + + The sort control MAY contain any sort specification valid for the + server. The attributeType field in the first SortKeyList sequence + element has special significance for "typedown". + + The desired target entry and the number of entries to be returned, + both before and after that target entry in the list, are determined + by the client's VirtualListViewRequest control. + + When the server returns the set of entries to the client, it attaches + a VirtualListViewResponse control to the SearchResultDone message. + The server returns in this control: its current estimate for the list + content count, the location within the list corresponding to the + target entry, any error codes, and optionally a context identifier. + + The target entry is specified in the VirtualListViewRequest control + by one of two methods. The first method is for the client to indicate + the target entry's offset within the list. The second way is for the + client to supply an attribute assertion value. The value is compared + against the values of the attribute specified as the primary sort key + in the sort control attached to the search operation. The first sort + key in the SortKeyList is the primary sort key. The target entry is + the first entry in the list with value greater than or equal to (in + the primary sort order), the presented value. The order is determined + by rules defined in [SSS]. Selection of the target entry by this + means is designed to implement "typedown". Note that it is possible + that no entry satisfies these conditions, in which case there is no + target entry. This condition is indicated by the server returning the + special value contentCount + 1 in the target position field. + + Because the server may not have an accurate estimate of the number of + entries in the list, and to take account of cases where the list size + is changing during the time the user browses the list, and because + the client needs a way to indicate specific list targets "beginning" + + Boreham et al Internet-Draft 3 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + and "end", offsets within the list are transmitted between client and + server as ratios---offset to content count. The server sends its + latest estimate as to the number of entries in the list (content + count) to the client in every response control. The client sends its + assumed value for the content count in every request control. The + server examines the content count and offsets presented by the client + and computes the corresponding offsets within the list, based on its + own idea of the content count. + + Si = Sc * (Ci / Cc) + + Where: + Si is the actual list offset used by the server + Sc is the server's estimate for content count + Ci is the client's submitted offset + Cc is the client's submitted content count + The result is rounded to the nearest integer. + + If the content count is stable, and the client returns to the server + the content count most recently received, Cc = Sc and the offsets + transmitted become the actual server list offsets. + + The following special cases exist when the client is specifying the + offset and content count: + - an offset of one and a content count of non-one (Ci = 1, Cc != 1) + indicates that the target is the first entry in the list. + - equivalent values (Ci = Cc) indicate that the target is the last + entry in the list. + - a content count of zero, and a non-zero offset (Cc = 0, Ci != 0) + means the client has no idea what the content count is, the server + MUST use its own content count estimate in place of the client's. + + Because the server always returns contentCount and targetPosition, + the client can always determine which of the returned entries is the + target entry. Where the number of entries returned is the same as the + number requested, the client is able to identify the target by simple + arithmetic. Where the number of entries returned is not the same as + the number requested (because the requested range crosses the + beginning or end of the list, or both), the client must use the + target position and content count values returned by the server to + identify the target entry. For example, suppose that 10 entries + before and 10 after the target were requested, but the server returns + 13 entries, a content count of 100 and a target position of 3. The + client can determine that the first entry must be entry number 1 in + the list, therefore the 13 entries returned are the first 13 entries + in the list, and the target is the third one. + + A server-generated context identifier MAY be returned to clients. A + client receiving a context identifier SHOULD return it unchanged in a + subsequent request which relates to the same list. The purpose of + + + Boreham et al Internet-Draft 4 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + this interaction is to enhance the performance and effectiveness of + servers which employ approximate positioning. + + +6. The Controls + + Support for the virtual list view control extension is indicated by + the presence of the OID "2.16.840.1.113730.3.4.9" in the + supportedControl attribute of a server's root DSE. + +6.1. Request Control + + 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 + [LDAPv3]. The controlType is set to "2.16.840.1.113730.3.4.9". The + criticality SHOULD be set to TRUE. If this control is included in a + SearchRequest message, a Server Side Sorting request control [SSS] + MUST also be present in the message. The controlValue is an OCTET + STRING whose value is the BER-encoding of the following SEQUENCE: + + VirtualListViewRequest ::= SEQUENCE { + beforeCount INTEGER (0..maxInt), + afterCount INTEGER (0..maxInt), + CHOICE { + byoffset [0] SEQUENCE { + offset INTEGER (0 .. maxInt), + contentCount INTEGER (0 .. maxInt) }, + greaterThanOrEqual [1] AssertionValue }, + contextID OCTET STRING OPTIONAL } + + beforeCount indicates how many entries before the target entry the + client wants the server to send. afterCount indicates the number of + entries after the target entry the client wants the server to send. + offset and contentCount identify the target entry as detailed in + section 4. greaterThanOrEqual is an attribute assertion value defined + in [LDAPv3]. If present, the value supplied in greaterThanOrEqual is + used to determine the target entry by comparison with the values of + the attribute specified as the primary sort key. The first list entry + who's value is no less than (less than or equal to when the sort + order is reversed) the supplied value is the target entry. If + present, the contextID field contains the value of the most recently + received contextID field from a VirtualListViewResponse control. The + type AssertionValue and value maxInt are defined in [LDAPv3]. + contextID values have no validity outwith the connection on which + they were received. That is, a client should not submit a contextID + which it received from another connection, a connection now closed, + or a different server. + + +6.2. Response Control + + + Boreham et al Internet-Draft 5 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + This control is included in the SearchResultDone message as part of + the controls field of the LDAPMessage, as defined in Section 4.1.12 + of [LDAPv3]. + + The controlType is set to "2.16.840.1.113730.3.4.10". The criticality + is FALSE (MAY be absent). The controlValue is an OCTET STRING, whose + value is the BER encoding of a value of the following SEQUENCE: + + VirtualListViewResponse ::= SEQUENCE { + targetPosition INTEGER (0 .. maxInt), + contentCount INTEGER (0 .. maxInt), + virtualListViewResult ENUMERATED { + success (0), + operationsError (1), + unwillingToPerform (53), + insufficientAccessRights (50), + busy (51), + timeLimitExceeded (3), + adminLimitExceeded (11), + sortControlMissing (60), + offsetRangeError (61), + other (80) }, + contextID OCTET STRING OPTIONAL } + + targetPosition gives the list offset for the target entry. + contentCount gives the server's estimate of the current number of + entries in the list. Together these give sufficient information for + the client to update a list box slider position to match the newly + retrieved entries and identify the target entry. The contentCount + value returned SHOULD be used in a subsequent VirtualListViewRequest + control. contextID is a server-defined octet string. If present, the + contents of the contextID field SHOULD be returned to the server by a + client in a subsequent VirtualListViewRequest control. + + The virtualListViewResult codes which are common to the LDAP + searchResponse (adminLimitExceeded, timeLimitExceeded, busy, + operationsError, unwillingToPerform, insufficientAccessRights) have + the same meanings as defined in [LDAPv3], but they pertain + specifically to the VLV operation. For example, the server could + exceed an administration limit processing a SearchRequest with a + VirtualListViewRequest control. However, the same administration + limit would not be exceeded should the same SearchRequest be + submitted by the client without the VirtualListViewRequest control. + In this case, the client can determine that an administration limit + has been exceeded in servicing the VLV request, and can if it chooses + resubmit the SearchRequest without the VirtualListViewRequest + control. + + insufficientAccessRights means that the server denied the client + permission to perform the VLV operation. + + + Boreham et al Internet-Draft 6 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + If the server determines that the results of the search presented + exceed the range specified in INTEGER values, it MUST return + offsetRangeError. + +6.2.1 virtualListViewError + + A new LDAP error is introduced called virtualListViewError. Its value + is 76. + [Note to the IESG/IANA/RFC Editor: the value 76 has been suggested by + experts, had expert review, and is currently being used by some + implementations. The intent is to have this number designated as an + official IANA assigned LDAP Result Code (see draft-ietf-ldapbis-iana- + xx.txt, Section 3.5)] + + If the server returns any code other than success (0) for + virtualListViewResult, then the server SHOULD return + virtualListViewError as the resultCode of the SearchResultDone + message. + + +7. Protocol Example + + Here we walk through the client-server interaction for a specific + virtual list view example: The task is to display a list of all 78564 + people in the US company "Ace Industry". This will be done by + creating a graphical user interface object to display the list + contents, and by repeatedly sending different versions of the same + virtual list view search request to the server. The list view + displays 20 entries on the screen at a time. + + We form a search with baseDN "o=Ace Industry, c=us"; search scope + subtree; filter "objectClass=inetOrgPerson". We attach a server sort + order control to the search, specifying ascending sort on attribute + "cn". To this base search, we attach a virtual list view request + control with contents determined by the user activity and send the + search to the server. We display the results from each search in the + list window and update the slider position. + + When the list view is first displayed, we want to initialize the + contents showing the beginning of the list. Therefore, we set + beforeCount = 0, afterCount = 19, contentCount = 0, offset = 1 and + send the request to the server. The server duly returns the first 20 + entries in the list, plus the content count = 78564 and + targetPosition = 1. We therefore leave the scroll bar slider at its + current location (the top of its range). + + Say that next the user drags the scroll bar slider down to the bottom + of its range. We now wish to display the last 20 entries in the list, + so we set beforeCount = 19, afterCount = 0, contentCount = 78564, + offset = 78564 and send the request to the server. The server returns + + + Boreham et al Internet-Draft 7 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + the last 20 entries in the list, plus the content count = 78564 and + targetPosition = 78564. + + Next the user presses a page up key. Our page size is 20, so we set + beforeCount = 0, afterCount = 19, contentCount = 78564, offset = + 78564-19-20 and send the request to the server. The server returns + the preceding 20 entries in the list, plus the content count = 78564 + and targetPosition = 78525. + + Now the user grabs the scroll bar slider and drags it to 68% of the + way down its travel. 68% of 78564 is 53424 so we set beforeCount = 9, + afterCount = 10, contentCount = 78564, offset = 53424 and send the + request to the server. The server returns the preceding 20 entries in + the list, plus the content count = 78564 and targetPosition = 53424. + + Lastly, the user types the letter "B". We set beforeCount = 9, + afterCount = 10 and greaterThanOrEqual = "B". The server finds the + first entry in the list not less than "B", let's say "Babs Jensen", + and returns the nine preceding entries, the target entry, and the + proceeding 10 entries. The server returns content count = 78564 and + targetPosition = 5234 and so the client updates its scroll bar slider + to 6.7% of full scale. + + +8. Notes for Implementers + + While the feature is expected to be generally useful for arbitrary + search and sort specifications, it is specifically designed for those + cases where the result set is very large. The intention is that this + feature be implemented efficiently by means of pre-computed indices + pertaining to a set of specific cases. For example, an offset + relating to "all the employees in the local organization, sorted by + surname" would be a common case. + + The intention for client software is that the feature should fit + easily with the host platform's graphical user interface facilities + for the display of scrolling lists. Thus the task of the client + implementers should be one of reformatting up the requests for + information received from the list view code to match the format of + the virtual list view request and response controls. + + Client implementers should note that any offset value returned by the + server may be approximate. Do not design clients > which only operate + correctly when offsets are exact. + + Server implementers using indexing technology which features + approximate positioning should consider returning context identifiers + to clients. The use of a context identifier will allow the server to + distinguish between client requests which relate to different + displayed lists on the client. Consequently the server can decide + more intelligently whether to reposition an existing database cursor + + Boreham et al Internet-Draft 8 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + accurately to within a short distance of its current position, or to + reposition to an approximate position. Thus the client will see + precise offsets for "short" repositioning (e.g. paging up or down), + but approximate offsets for a "long" reposition (e.g. a slider + movement). + + Server implementers are free to return status code unwillingToPerform + should their server be unable to service any particular VLV search. + This might be because the resolution of the search is computationally + infeasible, or because excessive server resources would be required + to service the search. + + Client implementers should note that this control is only defined on + a client interaction with a single server. If a server returns + referrals as a part of its response to the search request, the client + is responsible for deciding when and how to apply this control to the + referred-to servers, and how to collate the results from multiple + servers. + + +9. Relationship to "Simple Paged Results" + + These controls are designed to support the virtual list view, which + has proved hard to implement with the Simple Paged Results mechanism + [SPaged]. However, the controls described here support any operation + possible with the Simple Paged Results mechanism. The two mechanisms + are not complementary; rather one has a superset of the other's + features. One area where the mechanism presented here is not a strict + superset of the Simple Paged Results scheme is that here we require a + sort order to be specified. No such requirement is made for paged + results. + + +10. Security Considerations + + Server implementers may wish to consider whether clients are able to + consume excessive server resources in requesting virtual list + operations. Access control to the feature itself; configuration + options limiting the featureÆs use to certain predetermined search + base DNs and filters; throttling mechanisms designed to limit the + ability for one client to soak up server resources, may be + appropriate. + + Consideration should be given as to whether a client will be able to + retrieve the complete contents, or a significant subset of the + complete contents of the directory using this feature. This may be + undesirable in some circumstances and consequently it may be + necessary to enforce some access control. + + + + + Boreham et al Internet-Draft 9 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + + Clients can, using this control, determine how many entries are + contained within a portion of the DIT. This may constitute a security + hazard. Again, access controls may be appropriate. + + Server implementers SHOULD exercise caution concerning the content of + the contextID. Should the contextID contain internal server state, it + may be possible for a malicious client to use that information to + gain unauthorized access to information. + + +11. Acknowledgements + + Chris Weider, Anoop Anantha, and Michael Armijo of Microsoft co- + authored previous versions of this document. + + +12. References + + + [LDAPv3] Wahl, M., Kille, S. and T. Howes, "Lightweight Directory + Access Protocol (v3)", Internet Standard, RFC 2251, + December, 1997. + + [SPaged] Weider, C., Herron, A., Anantha, A. and T. Howes, "LDAP + Control Extension for Simple Paged Results Manipulation", + RFC2696, September 1999. + + [SSS] Wahl, M., Herron, A. and T. Howes, "LDAP Control + Extension for Server Side Sorting of Search Results", + RFC 2891, August, 2000. + + [Bradner97] Bradner, S., "Key Words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + + + + + + + + + + + + + + + + + + + Boreham et al Internet-Draft 10 + + LDAP Extensions for Scrolling View May 2002 + Browsing of Search Results + +13. Authors' Addresses + + David Boreham + Bozeman Pass, Inc + +1 406 222 7093 + david@bozemanpass.com + + Jim Sermersheim + Novell, Inc + 1800 South Novell Place + Provo, Utah 84606, USA + jimse@novell.com + + Asaf Kashi + Microsoft Corporation + 1 Microsoft Way + Redmond, WA 98052, USA + +1 425 882-8080 + asafk@microsoft.com + + +14. Full Copyright Statement + + Copyright (C) The Internet Society (2002). 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." + + + + + + + + + Boreham et al Internet-Draft 11 \ No newline at end of file diff --git a/doc/drafts/draft-ietf-ldapext-locate-xx.txt b/doc/drafts/draft-ietf-ldapext-locate-xx.txt new file mode 100644 index 0000000000..3acec7bd24 --- /dev/null +++ b/doc/drafts/draft-ietf-ldapext-locate-xx.txt @@ -0,0 +1,362 @@ + + +INTERNET-DRAFT Michael P. Armijo +<draft-ietf-ldapext-locate-07.txt> Levon Esibov +February 20, 2002 Paul Leach +Expires: August 20, 2002 Microsoft Corporation + R.L. Morgan + University of Washington + + Discovering LDAP Services with DNS + +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. + + Distribution of this memo is unlimited. It is filed as <draft- + ietf-ldapext-locate-07.txt>, and expires on August 20, 2002. + Please send comments to the authors. + + Copyright Notice + + Copyright (C) The Internet Society (2001). All Rights Reserved. + + +Abstract + + A Lightweight Directory Access Protocol (LDAP) request must be + directed to an appropriate server for processing. This document + specifies a method for discovering such servers using information in + the Domain Name System. + + + + + + + + + +Armijo, Esibov, Leach and Morgan [Page 1] + +INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 + + + +1. Introduction + + The LDAPv3 protocol [1] is designed to be a lightweight access + protocol for directory services supporting X.500 models. As a + distributed directory service, the complete set of directory + information (known as the Directory Information Base) is spread + across many different servers. Hence there is the need to + determine, when initiating or processing a request, which servers + hold the relevant information. In LDAP, the Search, Modify, Add, + Delete, ModifyDN, and Compare operations all specify a Distinguished + Name (DN) [2] on which the operation is performed. A client, or a + server acting on behalf of a client, must be able to determine the + server(s) that hold the naming context containing that DN, since + that server (or one of that set of servers) must receive and process + the request. This determination process is called "server + location". To support dynamic distributed operation, the + information needed to support server location must be available via + lookups done at request processing time, rather than, for example, + as static data configured into each client or server. + + It is possible to maintain the information needed to support server + location in the directory itself, and X.500 directory deployments + typically do so. In practice, however, this only permits location + of servers within a limited X.500-connected set. LDAP-specific + methods of maintaining server location information in the directory + have not yet been standardized. This document defines an + alternative method of managing server location information using the + Domain Name System. This method takes advantage of the global + deployment of the DNS, by allowing LDAP server location information + for any existing DNS domain to be published by creating the records + described below. A full discussion of the benefits and drawbacks of + the various directory location and naming methods is beyond the + scope of this document. + + RFC 2247[3] defines an algorithm for mapping DNS domain names into + DNs. This document defines the inverse mapping, from DNs to DNS + domain names, based on the conventions in [3], for use in this + server location method. The server location method described in + this document is only defined for DNs that can be so mapped, i.e., + those DNs that are based on domain names. In practice this is + reasonable because many objects of interest are named with domain + names, and use of domain-name-based DNs is becoming common. + + + +2. Mapping Distinguished Names into Domain Names + + This section defines a method of converting a DN into a DNS domain + name for use in the server location method described below. Some + DNs cannot be converted into a domain name. Converted DNs result + in a fully qualified domain name. + +Armijo, Esibov, Leach and Morgan [Page 2] + +INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 + + + + The output domain name is initially empty. The DN is processed in + right-to-left order (i.e., beginning with the first RDN in the + sequence of RDNs). An RDN is able to be converted if it (1) + consists of a single AttributeTypeAndValue; (2) the attribute type + is "DC"; and (3) the attribute value is non-null. If it can be + converted, the attribute value is used as a domain name component + (label). The first such value becomes the rightmost (i.e., most + significant) domain name component, and successive converted RDN + values extend to the left. If an RDN cannot be converted, + processing stops. If the output domain name is empty when + processing stops, the DN cannot be converted into a domain name. + + For DN: + + cn=John Doe,ou=accounting,dc=example,dc=net + + The client would convert the DC components as defined above into + DNS name: + + example.net + + The determined DNS name will be submitted as a DNS query using the + algorithm defined in section 3. + + + +3. Locating LDAPv3 servers through DNS + + LDAPv3 server location information is to be stored using DNS Service + Location Record (SRV)[5]. The data in a SRV record contains the DNS + name of the server that provides the LDAP service, corresponding + Port number, and parameters that enable the client to choose an + appropriate server from multiple servers according to the algorithm + described in [5]. The name of this record has the following format: + + _<Service>._<Proto>.<Domain>. + + where <Service> is "ldap", and <Proto> is "tcp". <Domain> is the + domain name formed by converting the DN of a naming context mastered + by the LDAP Server into a domain name using the algorithm in + Section 2. Note that "ldap" is the symbolic name for the LDAP + service in Assigned Numbers[6], as required by [5]. + + + + + + + + + + +Armijo, Esibov, Leach and Morgan [Page 3] + +INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 + + + Presence of such records enables clients to find the LDAP servers + using standard DNS query [4]. A client (or server) seeking an LDAP + server for a particular DN converts that DN to a domain name using + the algorithm of Section 2, does a SRV record query using the DNS + name formed as described in the preceding paragraph, and interprets + the response as described in [5] to determine a host (or hosts) to + contact. As an example, a client that searches for an LDAP server + for the DN "ou=foo,dc=example,dc=net" that supports the TCP protocol + will submit a DNS query for a set of SRV records with owner name: + + _ldap._tcp.example.net. + + The client will receive the list of SRV records published in DNS + that satisfy the requested criteria. The following is an example of + such a record: + + _ldap._tcp.example.net. IN SRV 0 0 389 phoenix.example.net. + + The set of returned records may contain multiple records in the case + where multiple LDAP servers serve the same domain. If there are no + matching SRV records available for the converted DN the client SHOULD + NOT attempt to 'walk the tree' by removing the least significant + portion of the constructed fully qualified domain name. + + +4. IANA Considerations + + This document does not require any IANA actions. + + +5. Security Considerations + + DNS responses can typically be easily spoofed. Clients using this + location method SHOULD ensure, via use of strong security + mechanisms, that the LDAP server they contact is the one they + intended to contact. See [7] for more information on security + threats and security mechanisms. + + When using LDAP with TLS the client must check the server's name, + as described in section 3.6 of [RFC 2830]. As specified there, the + name the client checks for is the server's name before any + potentially insecure transformations, including the SRV record + lookup specified in this memo. Thus the name the client must check + for is the name obtained by doing the mapping step defined in + section 2 above. For example, if the DN "cn=John + Doe,ou=accounting,dc=example,dc=net" is converted to the DNS name + "example.net", the server's name must match "example.net". + + This document describes a method that uses DNS SRV records to + discover LDAP servers. All security considerations related to DNS + SRV records are inherited by this document. See the security + considerations section in [5] for more details. + +Armijo, Esibov, Leach and Morgan [Page 4] + +INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 + + +6. References + + [1] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory Access + Protocol(v3)", RFC 2251, December 1997. + + [2] Wahl, M., Kille, S. and T. Howes, "Lightweight Directory Access + Protocol (v3): UTF-8 String Representation of Distinguished + Names", RFC 2253, December 1997. + + [3] Kille, S. and M. Wahl, "Using Domains in LDAP/X.500 + Distinguished Names", RFC 2247, January 1998. + + [4] Mockapetris, P., "DOMAIN NAMES - CONCEPTS AND FACILITIES", RFC + 1034, STD 13, November 1987. + + [5] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for + specifying the location of services (DNS SRV)", RFC 2782, + February 2000. + + [6] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC + 1700, October 1994. + + [7] Wahl, M., Alvestrand, H., Hodges, J. and Morgan, R., + "Authentication Methods for LDAP", RFC 2829, May 2000. + + [8] Hodges, J., Morgan, R., Wahl, M., "Lightweight Directory Access + Protocol (v3): Extension for Transport Layer Security", RFC 2830, + May 2000. + + + + + + +7. Authors' Addresses + + Michael P. Armijo + One Microsoft Way + Redmond, WA 98052 + micharm@microsoft.com + + Paul Leach + One Microsoft Way + Redmond, WA 98052 + paulle@microsoft.com + + Levon Esibov + One Microsoft Way + Redmond, WA 98052 + levone@microsoft.com + + + +Armijo, Esibov, Leach and Morgan [Page 5] + +INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 + + RL "Bob" Morgan + University of Washington + 4545 15th Ave NE + Seattle, WA 98105 + US + + Phone: +1 206 221 3307 + EMail: rlmorgan@washington.edu + URI: http://staff.washington.edu/rlmorgan/ + + +8. Intellectual Property Statement + +The IETF takes no position regarding the validity or scope of any +intellectual property or other rights that might be claimed to pertain +to the implementation or use of the technology described in this +document or the extent to which any license under such rights might or +might not be available; neither does it represent that it has made any +effort to identify any such rights. Information on the IETF's +procedures with respect to rights in standards-track and standards- +related documentation can be found in BCP-11. Copies of claims of +rights made available for publication and any assurances of licenses to +be made available, or the result of an attempt made to obtain a general +license or permission for the use of such proprietary rights by +implementors or users of this specification can be obtained from the +IETF Secretariat. + +The IETF invites any interested party to bring to its attention any +copyrights, patents or patent applications, or other proprietary rights +which may cover technology that may be required to practice this +standard. Please address the information to the IETF Executive +Director. + + +9. Full Copyright Statement + +Copyright (C) The Internet Society (2001). 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 + + +Armijo, Esibov, Leach and Morgan [Page 6] + +INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 + +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." + + +10. Expiration Date + + This documentis filed as <draft-ietf-ldapext-locate-06.txt>, and + expires August 20, 2002. + +Armijo, Esibov, Leach and Morgan [Page 7] \ No newline at end of file diff --git a/doc/drafts/draft-ietf-ldup-lcup-xx.txt b/doc/drafts/draft-ietf-ldup-lcup-xx.txt new file mode 100644 index 0000000000..93e72e6a96 --- /dev/null +++ b/doc/drafts/draft-ietf-ldup-lcup-xx.txt @@ -0,0 +1,1298 @@ + + +Internet Draft R. Megginson, Editor +Document: <draft-ietf-ldup-lcup-02.txt> M. Smith +Category: Proposed Standard Netscape + Communications Corp. + O. Natkovich + Yahoo + J. Parham + Microsoft Corporation + November 2001 + + + LDAP Client Update Protocol + + +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 + + This document defines the LDAP Client Update Protocol (LCUP). The + protocol is intended to allow an LDAP client to synchronize with the + content of a directory information tree (DIT) stored by an LDAP + server and to be notified about the changes to that content. + + +2. Conventions used in this document + + In the protocol flow definition, the notation C->S and S->C + specifies the direction of the data flow from the client to the + server and from the server to the client respectively. + + 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 + [KEYWORDS]. + + +3. Overview + + + + + The LCUP protocol is intended to allow LDAP clients to synchronize + with the content stored by LDAP servers. + + The problem areas addressed by the protocol include: + + - mobile clients that maintain a local read-only copy of the + directory data. While off-line, the client uses the local copy of + the data. When the client connects to the network, it + synchronizes with the current directory content and can be + optionally notified about the changes that occur while it is on- + line. For example, a mail client can maintain a local copy of the + corporate address book that it synchronizes with the master copy + whenever the client gets connected to the corporate network. + + - applications intending to synchronize heterogeneous data stores. + A meta directory application, for instance, would periodically + retrieve a list of modified entries from the directory, construct + the changes and apply them to a foreign data store. + + - clients that need to take certain actions when a directory entry + is modified. For instance, an electronic mail repository may want + to perform a "create mailbox" task when a new person entry is + added to an LDAP directory and a "delete mailbox" task when a + person entry is removed. + + The problem areas not being considered: + + - directory server to directory server synchronization. The + replication protocol that is being defined by the LDUP IETF + working group should be used for this purpose. + + Several features of the protocol distinguish it from LDUP + replication. First, the server does not maintain any state + information on behalf of its clients. The clients are responsible + for storing the information about how up to date they are with + respect to the server's content. Second, no predefined agreements + exist between the clients and the servers. The client decides when + and from where to retrieve the changes. Finally, the server never + pushes the data to the client; the client always initiates the + update session during which it pulls the changes from the server. + + The set of clients that are allowed to synchronize with an LDAP + server is determined by the server defined policy. + + There are currently several protocols in use for LDAP client server + synchronization. While each protocol addresses the needs of a + particular group of clients (e.g., on-line clients or off-line + clients) none satisfies the requirements of all clients in the + target group. For instance, a mobile client that was off-line and + wants to become up to date with the server and stay up to date while + connected can't be easily supported by any of the existing + protocols. + + + +Megginson, et. al. Proposed Standard - Expires: May 2002 2 + + + + A server can define a naming context or some part thereof to + participate in LCUP. This document will refer to this as an LCUP + Context. For example, LDUP defines a replica, a part of the DIT + which may participate in replication. The LCUP context may be + coincident with the replicated area, depending on the server's + implementation. It is assumed that most server implementations of + LCUP will make use of the server's underlying replication mechanism, + but this does not have to be LDUP compliant. + +4. Protocol Specification + + This section describes the protocol elements and the protocol flow. + +4.1 Unique Identifiers + + Distinguished names can change, so are therefore unreliable + as identifiers. The server SHOULD assign a Unique Identifier to each + entry as it is created. This identifier will be stored as an + operational attribute of the entry, named `entryUUID'. The entryUUID + attribute is single valued. If the client wants to use entryUUID, it + should supply entryUUID in the list of attributes to return in the + LCUP search (described below). + A consistent algorithm for generating such unique + identifiers may be standardized at some point in the future. + The definition of the entryUUID attribute type, written using the + BNF form of AttributeDescription described in RFC 2252 [RFC2252] is: + + ( OID-To-Be-Specified + NAME `entryUUID' + DESC `unique entry identifier' + EQUALITY caseIgnoreMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE + NO-USER-MODIFICATION + USAGE directoryOperation ) + +4.2 LCUP Cookie Value + + The LCUP protocol uses a cookie to hold the state of the client's + data with respect to the server's data. The LCUP Cookie is a value + of the following ASN.1 type: + + LCUPCookie ::= SEQUENCE { + scheme LDAPOID, + value OCTET STRING OPTIONAL + } + + scheme - this is the OID which identifies the format of the value. + The scheme OID, like all object identifiers, MUST be unique for a + given cookie scheme. The cookie value may be opaque or it may be + exposed to LCUP clients. For cookie schemes that expose their + value, the preferred form of documentation is an RFC. It is + expected that there will be one or more standards track cookie + schemes where the value format is exposed and described in detail. + +Megginson, et. al. Proposed Standard - Expires: May 2002 3 + + + + + + value - this is the actual data describing the state of the + client's data. This value may be opaque, or its value may have + some well known format, depending on the scheme. The cookie value + MUST be included except when a client has no stored state; i.e., + when the client is requesting a full synchronization. When the + server sends back a cookie, the cookie value MUST be present. + + Further uses of the LCUP Cookie value are described below. + +4.3 LCUP Cookie Schemes Operational Attribute + + The OIDs of the supported LCUP cookie schemes SHOULD be published + using the following operational attribute: + + ( OID-TBD + NAME 'lcupCookieScheme' + EQUALITY objectIdentifierMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 + NO-USER-MODIFICATION + USAGE directoryOperation ) + + The lcupCookieScheme operational attribute MUST be present in the + root DSE. The lcupCookieScheme operational attribute MAY be present + in every directory entry that may be used as the baseObject for a + search request that contains an LCUP clientUpdate control. If a + client wants to determine what LCUP cookie schemes are supported, it + MAY use a base object search to read the lcupCookieScheme attribute + from the entry that will be used as the baseObject in subsequent + LCUP sessions, then query the root DSE if the lcupCookieScheme was + not found in the base entry. Clients SHOULD NOT search for entries + that contain lcupCookieScheme values; rather, it is RECOMMENDED that + servers support LCUP sessions based at as many different entries as + possible. + Each value of the attribute will be a list of OIDs of the cookie + schemes followed by the DN of the LCUP context which supports the + schemes. The delimiter will be a single space character. For + example: + lcupCookieScheme: 1.2.3.4 5.6.7.8 dc=mycorp, dc=com + Everything after the last space after the last OID will be the LCUP + Context DN. If the attribute is present in a regular directory + entry in an LCUP Context, the values corresponding to DNs other than + the LCUP Context containing the entry MAY be omitted. + +4.4 Client Update Control Value + + A client initiates a synchronization session with a server by + attaching a clientUpdate control to a search operation. The search + specification determines the part of the directory information tree + (DIT) the client wishes to synchronize with, the set of attributes + it is interested in and the amount of data the client is willing to + receive. The clientUpdate control contains the client's + synchronization specification. The controlType field for the + +Megginson, et. al. Proposed Standard - Expires: May 2002 4 + + + + clientUpdate control is ClientUpdateControlOID (to be assigned). + The controlValue is an OCTET STRING, whose contents are the bytes of + the BER encoding of the following: + + ClientUpdateControlValue ::= SEQUENCE { + updateType ENUMERATED { + synchronizeOnly (0), + synchronizeAndPersist (1), + persistOnly (2) }, + cookie LCUPCookie OPTIONAL + } + + updateType - specifies the type of update requested by the client + + synchronizeOnly - the server sends all the data needed to + synchronize the client with the server, then closes the + connection + + synchronizeAndPersist - the server sends all the data needed to + synchronize the client with the server, then leaves open the + connection, sending to the client any new added, modified, or + deleted entries which satisfy the search criteria. + + persistOnly - the server does not synchronize the data with the + client but leaves open the connection and sends over any new + added, modified, or deleted entries which satisfy the search + criteria. + + cookie - a value that represents the current state of the client's + data. If a cookie is provided, the server MUST use the enclosed + scheme throughout the duration of the LCUP session or until an + LCUP context boundary is crossed, since a new cookie may be + required in that case. If the value or scheme part of the cookie + is invalid, the server MUST return immediately with a + SearchResultDone message with the clientUpdateDone control + attached with the reason set to the value of lcupInvalidCookie + (see below). Also, the LDAP result code MUST be + unwillingToPerform. If the scheme part of the cookie is a valid + OID, but is not supported, the server MUST return immediately + with a SearchResultDone message with the clientUpdateDone control + attached with the reason set to the value of + lcupUnsupportedScheme (see below). Also, the LDAP result code + MUST be unwillingToPerform. + + If the cookie is omitted, the server MAY use any scheme it + supports. + +4.5 Entry Update Control Value + + In response to the client's synchronization request, the server + returns one or more SearchResultEntry PDU that fits the client's + specification. Each SearchResultEntry PDU also contains an + entryUpdateControl which describes the LCUP state of the returned + entry. To represent a deleted entry, the server attaches an + +Megginson, et. al. Proposed Standard - Expires: May 2002 5 + + + + entryUpdate control to the corresponding SearchResultEntry. The + SearchResultEntry corresponding to a deleted entry MUST contain a + valid DN and MAY contain a valid Unique Identifier but, to reduce + the amount of data sent to the client, it SHOULD not contain any + other attributes. Distinguished names can change, so are therefore + unreliable as identifiers. A Unique Identifier MAY therefore be + assigned to each entry as it is created. The Unique Identifier + allows the client to uniquely identify entries even in the presence + of modifyDN operations. The Unique Identifier is carried in the + entryUUID attribute. + For returned SearchResultEntry PDUs other than deleted entries, the + client MAY request that the Unique Identifier attribute be returned + by specifying it in the attribute list to be returned by the search + request. If the Unique Identifier is not returned, the client MAY + use the entry DN to keep track of returned entries. + + Furthermore, the server may elect to periodically return to the + client the cookie that represents the state of the client's data. + This information is useful in case the client crashes or gets + disconnected. The cookie SHOULD be present in every entryUpdate + control sent to the client to insure ease of synchronization. The + cookie is also provided in the entryUpdate control. The controlType + field for the entryUpdate control is EntryUpdateControlOID (to be + assigned). The controlValue is an OCTET STRING, whose contents are + the bytes of the BER encoding of the following: + + EntryUpdateControlValue ::= SEQUENCE { + stateUpdate BOOLEAN, + entryDeleted BOOLEAN, + cookie LCUPCookie OPTIONAL + + } + + stateUpdate - if set to TRUE, indicates that the entry to which the + control is attached contains no changes and it is sent only to + communicate to the client the new cookie. In this case, the + entryDeleted field MUST be ignored and the cookie field MUST + contain the updated cookie. This feature allows updating the + client's cookie when there are no changes that effect the + client's data store. Note that the control MUST be attached to a + valid SearchResultEntry, i.e. the entry should contain a valid + dn. The server MAY send the entry named by the baseObject from + the client's search request. + + entryDeleted - if set to TRUE, indicates that the entry to which + the control is attached was deleted. The server MAY also set + this to TRUE if the entry has left the client's search result + set. As far as the client is concerned, a deleted entry is no + different than an entry which has left the result set. + + cookie - the LCUP cookie value that represents the current state of + the client's data. + +4.6 Client Update Done Control Value + +Megginson, et. al. Proposed Standard - Expires: May 2002 6 + + + + + When the server has finished processing the client's request, it + attaches a clientUpdateDone control to the SearchResultDone message + and sends it to the client. However, if the SearchResultDone message + contains a resultCode which is not success, the clientUpdateDone + control MAY be omitted. The controlType field for the + clientUpdateDone control is ClientUpdateDoneControlOID (to be + assigned). The controlValue is an OCTET STRING, whose contents are + the bytes of the BER encoding of the following: + + ClientUpdateDoneControlValue ::= SEQUENCE { + reason INTEGER, + reasonText LDAPString, + cookie LCUPCookie OPTIONAL + } + + reason - reason for terminating the operation. The following values + are defined: + + lcupSuccess (0) the operation was successfully + processed + lcupResourcesExhausted (1) the server is running out of resource + lcupSecurityViolation (2) the client is suspected of malicious + actions + lcupInvalidCookie (3) invalid cookie was supplied by the + client - both/either the scheme + and/or the value part was invalid + lcupUnsupportedScheme (4) The scheme part of the cookie is a + valid OID but is not supported by + this server + lcupClientDisconnect (5) client requested search termination + using the stopClientUpdate request + (defined below) + lcupReloadRequired (6) indicates that client data needs to + be reinitialized. This reason is + returned if the server does not + contain sufficient information to + synchronize the client or that the + server's data was reloaded since the + last synchronization session + + reasonText - The reasonText field of this construct may, at the + server's option, be used to return a string containing a textual, + human-readable (terminal control and page formatting characters + should be avoided) error diagnostic. As this error diagnostic is + not standardized, implementations MUST NOT rely on the values + returned. If the server chooses not to return a textual + diagnostic, the reasonText field of the + ClientUpdateDoneControlValue MUST contain a zero length string. + The reasonText should be limited to characters in the range 0x00 to + 0x7F. + + cookie - the LCUP cookie value that represents the current state of + the client's data. Although this value is OPTIONAL, it MUST be set + +Megginson, et. al. Proposed Standard - Expires: May 2002 7 + + + + in the ClientUpdateDoneControlValue if the reason is lcupSuccess or + lcupClientDisconnect and the LDAP search result code is success. + This provides a good "checksum" of what the server thinks the state + of the client is. If some error occurred, either an LDAP search + error (e.g. insufficientAccessRights) or an LCUP error (e.g. + lcupUnsupportedScheme), the cookie MAY be omitted. + + If server resources become tight, the server can terminate one or + more search operations by sending a SearchResultDone message to the + client(s). Unless the client sets the updateType field to + persistOnly, the server attaches a clientUpdateDone control that + contains the cookie that corresponds to the current state of the + client's data and the value of the reason field is set to + lcupResourcesExhausted. A server set policy is used to decide which + searches to terminate. This can also be used as a security mechanism + to disconnect clients that are suspected of malicious actions, but + if the server can infer that the client is malicious, the server + should return lcupSecurityViolation in the reason field of the + response. + +4.7 Stop Client Update Request and Response + + The Stop Client Update operation is an LDAPv3 Extended Operation + [RFC2251, Section 4.12] and is identified by the OBJECT IDENTIFIER + stopClientUpdateRequestOID (to be assigned). This section details + the syntax of the protocol. + + An LDAPv3 Extended Request is defined in [LDAPv3] as follows: + + ExtendedRequest ::= [APPLICATION 23] SEQUENCE { + requestName [0] LDAPOID, + requestValue [1] OCTET STRING OPTIONAL + } + + If the client needs to terminate the synchronization process and it + wishes to obtain the cookie that represents the current state of its + data, it issues a stopClientUpdateRequest extended operation. The + operation carries the following data. The extended operation + requestValue is an OCTET STRING, whose contents are the bytes of the + BER encoding of the following: + + StopClientUpdateRequestValue ::= MessageID + + StopClientUpdateRequestValue - the message ID of the search that + included the original clientUpdate control + + The server responds immediately with a stopClientUpdateResponse + extended operation that carries no data, and an OBJECT IDENTIFIER of + stopClientUpdateResponseOID (to be assigned). The server MAY send + any pending SearchResultEntry PDUs if the server cannot easily abort + or remove those search results from its outgoing queue. The server + SHOULD send as few of these remaining SearchResultEntry PDUs as + possible. Finally, the server sends the message SearchResultDone + with the clientUpdateDone control attached. The value of the reason + +Megginson, et. al. Proposed Standard - Expires: May 2002 8 + + + + in the clientUpdateDone control value MUST be either an error code + (some value other than lcupSuccess) or lcupClientDisconnect. The + stopClientUpdateResponse is sent only to satisfy LDAP requirement + that every server must issue an extended response for each extended + request it receives. + + If the client is not interested in the state information, it can + simply abandon the search operation or disconnect from the server. + + The requestName portion of the stopClientUpdate must be the + OID stopClientUpdateOID (to be assigned). The requestValue is the + message ID corresponding to the client's search request. If the + message ID is not valid, the server MUST send back to the client an + LDAP error code of unwillingToPerform. + +4.8 Protocol Flow + + The client server interaction can proceed in three different ways + depending on the client's requirements. Protocol flows beginning + with an asterisk (*) are optional or conditional. + + If the client's intent is not to synchronize data but to trigger + actions in response to directory modifications, the protocol + proceeds as follows: + + C->S Sends a search operation with a clientUpdate control attached. + The search specification determines the part of the DIT the + client wishes to synchronize with and the set of attributes it + is interested in. The updateType field of the control value + should be set to persistOnly. + *S->C If there is an error (invalid search scope, invalid cookie) + the server returns the appropriate error codes and terminates + the request (SearchResultDone message with optional + clientUpdateDone control) + S->C Sends change notification to the client for each change to the + data within the client's search specification. Each + SearchResultEntry may have an entryUpdate control attached. + *S->C If the server starts to run out of resources or the client is + suspected of malicious actions, the server SHOULD terminate + the search operation by sending to the client a + SearchResultDone message with clientUpdateDone control + attached. The control contains the reason field set to + lcupResourcesExhausted or lcupSecurityViolation depending on + the reason for termination. The server MAY provide more + details to the client via the reasonText field of the control. + *C->S If the client receives lcupResourcesExhausted error from the + server, it MUST wait for a while before attempting another + synchronization session with the server. It is RECOMMENDED + that clients use an exponential backoff strategy. + C->S The client terminates the search. The client can do this by + abandoning the search operation, disconnecting from the + server, or by sending the stopClientUpdate extended operation. + *S->C If the server receives the stopClientUpdate extended op, it + will immediately send back the stopClientUpdate extended op + +Megginson, et. al. Proposed Standard - Expires: May 2002 9 + + + + response + *S->C If the client sent the stopClientUpdate extended op, the + server MAY send any pending SearchResultEntry PDUs in its + outgoing queue + *S->C If the client sent the stopClientUpdate extended op, after the + server sends the response and any pending SearchResultEntry + PDUs, the server sends the SearchResultDone message with the + clientUpdateDone control attached. The value of the reason + field of the clientUpdateDone control value will be either + lcupClientDisconnect or some lcup error code (not + lcupSuccess). + S->C Stops sending changes to the client and closes the connection. + + If the client's intent is to synchronize with the server and then + disconnect, the protocol proceeds as follows: + + C->S Sends a search operation with the clientUpdate control + attached. The search specification determines the part of the + DIT the client wishes to synchronize with, the set of + attributes it is interested in and the amount of data the + client is willing to receive. If this is the initial + synchronization session, the client either does not provide a + cookie or provides a cookie with no value; otherwise, the + cookie field of the control is set to the cookie received from + the server at the end of the last synchronization session. If + the scheme field of the cookie was provided, the server MUST + use that scheme throughout the duration of the LCUP session or + until an LCUP boundary is crossed, since the server will + usually require a different cookie in that case anyway. (Note + that the client can synchronize with different servers during + different synchronization sessions.) The updateType field of + the control value is set to synchronizeOnly. + *S->C If there is an error (invalid search scope, invalid cookie) + the server returns the appropriate error codes and terminates + the request (SearchResultDone message with optional + clientUpdateDone control) + *S->C If no cookie is specified in the clientUpdate control, or if + the value field of the cookie is empty, the server sends all + data that matches the client's search specification followed + by the SearchResultDone message with a clientUpdateDone + control attached. The control contains the cookie that + corresponds to the current state of the client's data and the + reason flag set to lcupSuccess. + *S->C If an invalid cookie is specified, the server sends the + SearchResultDone message with clientUpdateDone control + attached. The reason field of the control is set to + lcupInvalidCookie and the reasonText field MAY contain + explanation of the error. + *S->C If a valid cookie is specified and the data that matches the + search specification has been reloaded or the server does not + contain enough state information to synchronize the client, + the server sends a SearchResultDone message with + clientUpdateDone control attached. The reason field of the + control is set to lcupReloadRequired and the reasonText field + +Megginson, et. al. Proposed Standard - Expires: May 2002 10 + + + + MAY contain explanation of the error. + *S->C If the cookie is valid and the client is up to date, the + server sends a success response to the client. + S->C If the cookie is valid and there is data to be sent, the + server sends the modified entries to the client. Each + SearchResultEntry contains the attributes requested by the + client in the search specification regardless of whether they + were modified. An entryUpdate control with the entryDeleted + field set to TRUE MUST be attached to every deleted entry. The + server may also periodically attach an entryUpdate control to + the entries sent to the client to indicate the current state + of the client's data. In that case, the cookie field of the + control represents the state of the client's data including + the entry to which the control is attached. Once all the + changes are sent, the server sends a SearchResultDone with the + clientUpdateDone control attached. The control contains the + cookie that represents the current state of the client's data. + The reason field of the control is set to lcupSuccess. + The client stores the cookie received from the server until + the next synchronization session. + *C->S If the reason field of the control is set lcupReloadRequired, + the client clears its data store and repeats the + synchronization process by sending the search operation with + clientUpdate control that contains no cookie, or that contains + a cookie with no value field. + + If the client's intent is to be synchronized with the server and + stay notified about data modifications, the protocol proceeds as + follows: + + C->S The client behaves exactly as in the previous case except it + sets the updateType field in the control value to + synchronizeAndPersist. + S->C The server behaves exactly as in the previous case except the + connection is kept open after the initial set of changes is + sent to the client. A SearchResultDone message is not sent to + the client; instead, the server keeps sending changes to the + client. + *S->C If the server starts to run out of resources or the client is + suspected of malicious actions, the server SHOULD terminate + the search operation by sending to the client a + SearchResultDone message with clientUpdateDone control + attached. The control contains the reason field set to + lcupResourcesExhausted or lcupSecurityViolation depending on + the reason for termination. The server MAY provide more + details to the client via the reasonText field of the control. + *C->S If the client receives lcupResourcesExhausted error from the + server, it MUST wait for a while before attempting another + synchronization session with the server. We recommend + exponential backoff strategy. + C->S Sends a stopClientUpdateRequest extended operation to the + server to terminate the synchronization session. + S->C Responds with a stopClientUpdateResponse extended operation + followed by a SearchResultDone with the clientUpdateDone + +Megginson, et. al. Proposed Standard - Expires: May 2002 11 + + + + control optionally attached. If present, the control contains + the cookie that represents the current state of the client's + data. The value of the reason field of the clientUpdateDone + control value will be either lcupClientDisconnect or some lcup + error code (not lcupSuccess). The control may not be present + if some error occurred. + +4.9 Size and Time Limits + + The search request size or the time limits can only be imposed for + non-persistent operations, those that set the updateType field of + the ClientUpdateControlValue to synchronizeOnly (for the entire + operation) or synchronizeAndPersist (for the initial synchronization + phase only). All other operations MUST set both limits to 0. The + server SHOULD ignore the limits set for persistent operations. + +4.10 Changes vs. Operations + + The server sends to the client modified entries rather than + operations. Given this model, the server communicates a modifyDN + operation in one of two ways: by sending the client the current form + of the entry (with its new DN) along with an entryUUID attribute, or + by sending the client a deletion for the previous DN and an entry + for the new DN. The latter method must be used if the server does + not support the entryUUID attribute. In either case, if the client + state shows that the object that underwent the modifyDN operation + was the root of a subtree, the client MUST infer that the DNs of all + objects in the subtree have changed such that they reflect the new + DN of the subtree root. + +4.11 Operations on the Same Connection + + It is permissible for the client to issue other LDAP operations on + the connection used by the protocol. Since each LDAP + request/response carries a message id there will be no ambiguity + about which PDU belongs to which operation. By sharing the + connection among multiple operations, the server will be able to + conserve its resources. + +4.12 Interactions with Other LDAP Search and Response Controls + + LCUP defines neither restrictions nor guarantees about the ability + to use the LDAP client update control defined in this document in + conjunction with other LDAP controls, except for the following: A + server MAY ignore non-critical controls supplied with the LCUP + control. A server MAY ignore the LCUP control if it is non-critical + and it is supplied with other critical controls. If a server + receives a critical LCUP control with another critical control, and + the server does not support both controls at the same time, the + server SHOULD return unavailableCriticalExtension. + +5. Additional Features + + + +Megginson, et. al. Proposed Standard - Expires: May 2002 12 + + + + There are several features present in other protocols or considered + useful by clients that are currently not included in the protocol + primarily because they are difficult to implement on the server. + These features are briefly discussed in this section. This section + is intended to open a discussion on the merits of including and + approaches to implementing these features. + +5.1 Triggered Search Change Type + + This feature is present in the Triggered Search specification. A + flag is attached to each entry returned to the client indicating the + reason why this entry is returned. The possible reasons from the + draft are + "- notChange: the entry existed in the directory and matched the + search at the time the operation is being performed, + - enteredSet: the entry entered the result, + - leftSet: the entry left the result, + - modified: the entry was part of the result set, was modified or + renamed, and still is in the result set." + + The leftSet feature is particularly useful because it indicates to + the client that an entry is no longer within the client's search + specification and the client can remove the associated data from its + data store. Ironically, this feature is the hardest to implement on + the server because the server does not keep track of the client's + state and has no easy way of telling which entries moved out of + scope between synchronization sessions with the client. + + A compromise could be reached by only providing this feature for the + operations that occur while the client is connected to the server. + This is easier to accomplish because the decision about the change + type can be made based only on the change without need for any + historical information. This, however, would add complexity to the + protocol. + +5.2 Persistent Search Change Type + + This feature is present in the Persistent Search specification. + Persistent search has the notion of changeTypes. The client + specifies which type of updates will cause entries to be returned, + and optionally whether the server tags each returned entry with the + type of change that caused that entry to be returned. + + For LCUP, the intention is full synchronization, not partial. Each + entry returned by an LCUP search will have some change associated + with it that may concern the client. The client may have to have a + local index of entries by DN or unique identifier to determine if + the entry has been added or just modified. It is easy for clients + to determine if the entry has been deleted because the entryDeleted + value of the entryUpdateControl will be TRUE. + +5.3 Sending Changes + + + +Megginson, et. al. Proposed Standard - Expires: May 2002 13 + + + + Some earlier synchronization protocols sent the client(s) only the + modified attributes of the entry rather than the entire entry. While + this approach can significantly reduce the amount of data returned + to the client, it has several disadvantages. First, unless a + separate mechanism (like the change type described above) is used to + notify the client about entries moving into the search scope, + sending only the changes can result in the client having an + incomplete version of the data. Let's consider an example. An + attribute of an entry is modified. As a result of the change, the + entry enters the scope of the client's search. If only the changes + are sent, the client would never see the initial data of the entry. + Second, this feature is hard to implement since the server might not + contain sufficient information to construct the changes based solely + on the server's state and the client's cookie. On the other hand, + this feature can be easily implemented by the client assuming that + the client has the previous version of the data and can perform + value by value comparisons. + +5.4 Data Size Limits + + Some earlier synchronization protocols allowed clients to control + the amount of data sent to them in the search response. This feature + was intended to allow clients with limited resources to process + synchronization data in batches. However, an LDAP search operation + already provides the means for the client to specify the size limit + by setting the sizeLimit field in the SearchRequest to the maximum + number of entries the client is willing to receive. While the + granularity is not the same, the assumption is that LCUP protocol + will be implemented by regular LDAP clients that can deal with the + limitations of the LDAP protocol. + +5.5 Data Ordering + + Some earlier synchronization protocols allowed a client to specify + that parent entries should be sent before the children for add + operations and children entries sent before their parents during + delete operations. This ordering helps clients to maintain a + hierarchical view of the data in their data store. While possibly + useful, this feature is relatively hard to implement and is + expensive to perform. + +6. Client Side Considerations + + There are several issues that the implementors of a synchronization + client need to consider: + + - The cookie received from the server after a synchronization + session can only be used with the same or more restrictive search + specification than the search that generated the cookie. The + server will reject the search operation with a cookie that does + not satisfy this condition. This is because the client can end up + with an incomplete data store otherwise. A more restrictive + search specification is the one that generates a subset of the + data produced by the original search specification. + +Megginson, et. al. Proposed Standard - Expires: May 2002 14 + + + + + - Because an LCUP client specifies the area of the tree with which + it wishes to synchronize through the standard LDAP search + specification, the client can be returned noSuchObject error if + the root of the synchronization area was renamed between the + synchronization sessions or during a synchronization session. If + this condition occurs, the client can attempt to locate the root + by using the root's Unique Identifier saved in client's local + data store. It then can repeat the synchronization request using + the new search base. In general, a client can detect that an + entry was renamed and apply the changes received to the right + entry by using the Unique Identifier rather then DN based + addressing. + + - Each active persistent operation requires that an open TCP + connection be maintained between an LDAP client and an LDAP + server that might not otherwise be kept open. Therefore, client + implementors are encouraged to avoid using persistent operations + for non-essential tasks and to close idle LDAP connections as + soon as practical. The server may close connections if server + resources become tight. + + - The client MAY receive a continuation reference + (SearchResultReference [RFC2251 SECTION 4.5.3]) if the search + request spans multiple parts of the DIT, some of which may + require a different LCUP cookie, some of which may not even be + managed by LCUP. The client SHOULD maintain a cache of the LDAP + URLs returned in the continuation references and the cookies + associated with them. The client is responsible for performing + another LCUP search to follow the references, and SHOULD use the + cookie corresponding to the LDAP URL for that reference (if it + has a cookie). + + - For alias dereferencing, the server will behave as if the client + had requested neverDerefAliases or derefFindingBaseObj as the + derefAliases field in the search request [RFC2251, Section + 4.5.1]. If the client specifies a value other than + neverDerefAliases or derefFindingBaseObj, the server will return + protocolError to the client. + + - Changes to data (e.g., that might affect the LCUP client's + filter or scope) or meta-data (e.g., that might affect the + client's read access) may affect the presence of entries in the + search set. Servers MAY notify LCUP clients of changes to the + search set that result from such changes, but an LCUP client MUST + NOT assume that such notification will occur. Therefore, in the + case where a client is maintaining a cache of entries using LCUP, + the data held by the client may be a superset or a subset of the + entries that would be returned by a new search request. For + example, if access control meta information is changed to deny + access to particular entries in the search result set, and the + access control information is outside of the search scope (e.g., + in a parent entry), the client may have entries stored locally + which are no longer part of its desired search set. Similarly, + +Megginson, et. al. Proposed Standard - Expires: May 2002 15 + + + + if entries are added to the search result set due to changes in + meta-data, the client's cache of entries may not include these + entries. + +7. Server Implementation Considerations + + By design, the protocol supports multiple cookie schemes. This is + to allow different implementations the flexibility of storing any + information applicable to their environment. A reasonable + implementation for an LDUP compliant server would be to use the + Replica Update Vector (RUV). For each master, RUV contains the + largest CSN seen from this master. In addition, the RUV implemented + by some directory servers (not yet in LDUP) contains replica + generation - an opaque string that identifies the replica's data + store. The replica generation value changes whenever the replica's + data is reloaded. Replica generation is intended to signal the + replication/synchronization peers that the replica's data was + reloaded and that all other replicas need to be reinitialized. RUV + satisfies the three most important properties of the cookie: (1) it + uniquely identifies the state of client's data, (2) it can be used + to synchronize with multiple servers, and (3) it can be used to + detect that the server's data was reloaded. + + A server may support one or more LCUP cookie schemes. It is + expected that schemes will be published along with their OIDs as + RFCs. If a client initiates an LCUP session with a particular + scheme, the server MUST use that same scheme throughout the LCUP + session, or until an LCUP context boundary is crossed, in which case + the server will usually require a different cookie anyway. + + In addition, the cookie must contain enough information to allow the + server to determine whether the cookie can be safely used with the + search specification it is attached to. As discussed earlier in the + document, the cookie can only be used with the search specification + that is equally or more restrictive than the one for which the + cookie was generated. + + An implementation must make sure that it can correctly update the + client's cookie when there is a size limit imposed on the search + results by either the client's request or by the server's + configuration. If RUV is used as the cookie, entries last modified + by a particular master must be sent to the client in the order of + their last modified CSN. This ordering guarantees that the RUV can + be updated after each entry is sent. + + The server's DIT may be partitioned into different sections which + may have different cookies associated with them. For example, some + servers may use some sort of replication mechanism to support LCUP. + If so, the DIT may be partitioned into multiple replicas. A client + may send an LCUP search request that spans multiple replicas. Some + parts of the DIT spanned by the search request scope may be managed + by LCUP and some may not. A part of the DIT which is enabled for + LCUP is referred to as an LCUP Context. The server SHOULD send a + SearchResultReference [RFC2251, SECTION 4.5.3] when the LCUP Context + +Megginson, et. al. Proposed Standard - Expires: May 2002 16 + + + + for a returned entry changes. The server SHOULD return all entries + for a particular LCUP Context before returning a reference to other + LCUP Contexts or non LCUP enabled parts of the DIT, in order to + minimize the processing burden on the clients. The LDAP URL(s) + returned MUST contain the DN(s) of the base of another section of + the DIT (however the server implementation has partitioned the DIT). + The client will then issue another LCUP search using the LDAP URL + returned. Each section of the DIT MAY require a different cookie + value, so the client SHOULD maintain a cache, mapping the different + LDAP URL values to different cookies. If the cookie changes, the + scheme may change as well, but the cookie scheme MUST be the same + within a given LCUP Context. + + An implementation SHOULD notify the client about all entries deleted + from the search set since the client's last session, but an LCUP + client MUST NOT assume that such notification will occur. For + example, the server might not notify the client of the deletion of + an object if the object left the search set following the client's + last synchronization and prior to the object's deletion. An LDUP + compliant implementation can achieve this through the use of entry + tombstones. The implementation should avoid aggressive tombstone + purging since lack of tombstones would cause client's data to be + reloaded. We suggest that only the tombstone content be removed + during the regular trimming cycle while tombstones themselves are + discarded much less frequently. + + The specification makes no guarantees about how soon a server should + send notification of a changed entry to the client when the + connection between the client and the server is kept open. This is + intentional as any specific maximum delay would be impossible to + meet in a distributed directory service implementation. Server + implementors are encouraged to minimize the delay before sending + notifications to ensure that clients' needs for timeliness of change + notification are met. + + Implementors of servers that support the mechanism described in this + document should ensure that their implementation scales well as the + number of active persistent operations and the number of changes + made in the directory increases. Server implementors are also + encouraged to support a large number of client connections if they + need to support large numbers of persistent operations. + +8. Synchronizing Heterogeneous Data Stores + + Clients, like a meta directory join engine, synchronizing multiple + writable data stores will only work correctly if each piece of + information is single mastered (for instance, only by an LDUP + compliant directory). This is because different systems have + different notions of time and different update resolution + procedures. As a result, a change applied on one system can be + discarded by the other, thus preventing the data stores from + converging. + +9. Security Considerations + +Megginson, et. al. Proposed Standard - Expires: May 2002 17 + + + + + In some situations, it may be important to prevent general exposure + of information about changes that occur in an LDAP server. + Therefore, servers that implement the mechanism described in this + document SHOULD provide a means to enforce access control on the + entries returned and MAY also provide specific access control + mechanisms to control the use of the controls and extended + operations defined in this document. + + As with normal LDAP search requests, a malicious client can initiate + a large number of persistent search requests in an attempt to + consume all available server resources and deny service to + legitimate clients. The protocol provides the means to stop + malicious clients by disconnecting them from the server. The servers + that implement the mechanism SHOULD provide the means to detect the + malicious clients. In addition, the servers SHOULD provide the means + to limit the number of resources that can be consumed by a single + client. + + Access control on the data can be modified in such a way that the + data is no longer visible to the client. The specification does not + specify how the server should handle this condition. Moreover, data + consistency is not guaranteed if access control is changed from a + more restrictive to a less restrictive one. This is because access + control can be considered as an additional filter on the search + specification and the protocol does not support going from a more to + a less restrictive search specification. See Client Side + Considerations Section for more detailed explanation of the problem. + +10. References + + [KEYWORDS] S. Bradner, "Keywords for use in RFCs to Indicate + Requirement Levels", RFC 2119, March 1997. + + [RFC2251] M. Wahl, T. Howes, S. Kille "Lightweight Directory + Access Protocol", 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. + +11. Acknowledgements + + The LCUP protocol is based in part on the Persistent Search Change + Notification Mechanism defined by Mark Smith, Gordon Good, Tim + Howes, and Rob Weltman, the LDAPv3 Triggered Search Control defined + by Mark Wahl, and the LDAP Control for Directory Synchronization + defined by Michael Armijo. + +12. Author's Addresses + + Rich Megginson + Netscape Communications Corp. + 901 San Antonio Rd. + +Megginson, et. al. Proposed Standard - Expires: May 2002 18 + + + + Palo Alto, CA 94303-4900 + Mail Stop SCA17 - 201 + Phone: +1 505 797-7762 + Email: richm@netscape.com + + Olga Natkovich + Yahoo, Inc. + 701 First Ave. + Sunnyvale, CA 94089 + Phone: +1 408 349-6153 + Email: olgan@yahoo-inc.com + + Mark Smith + Netscape Communications Corp. + 901 San Antonio Rd. + Palo Alto, CA 94303-4900 + Mail Stop SCA17 - 201 + Phone: +1 650 937-3477 + Email: mcs@netscape.com + + Jeff Parham + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + Phone: +1 425 882-8080 + Email: jeffparh@microsoft.com + +13. 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 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. + +14. Appendix A - Summary of Changes + +Megginson, et. al. Proposed Standard - Expires: May 2002 19 + + + + + Changes new to version 02: + + Section 4.2: The lcupCookieScheme operational attribute MUST be + present in the root DSE, and MAY be present in entries. Each + value of the attribute in the root DSE will be a list of OIDs of + cookie schemes followed by the DN of the LCUP context which + supports the schemes. The attribute value in the DIT entries will + be the list of OIDs followed by the DN of the LCUP context. + + section 4.5 - the entry uuid is now MAY instead of MUST - if + implementers do not wish to identify entries by a unique ID other + than DN (which may not be unique), then so be it. For returned + SearchResultEntry PDUs other than deleted entries, the client MAY + request that the Unique Identifier attribute be returned by + specifying it in the attribute list to be returned by the search + request. + + section 4.5 - added "or the base DN of the client's search + request." to the phrase. "The server MAY send the entry at the + root of the client's tree, or the base DN of the client's search + request." I think this clarifies which entry the client may + search for. + + section 4.6 - the clientUpdateDone control is now optional for + error conditions. Also, the cookie value of the control is now + optional for lcup error conditions (e.g. not lcupSuccess or + lcupClientDisconnect). + + Added section 4.12 - Interactions with Other LDAP Search and + Response Controls + + Added blurb about alias dereferencing back to section 6: + "For alias dereferencing, the server will behave as if the client + had requested neverDerefAliases or derefFindingBaseObj as the + derefAliases field in the search request [RFC2251, Section 4.5.1]. + If the client specifies a value other than neverDerefAliases or + derefFindingBaseObj, the server will return protocolError to the + client." + + Changed this in section 6: + Because an LCUP client specifies the area of the tree with which + it wishes to synchronize through the standard LDAP search + specification, the client can be returned noSuchObject error if + the root of the synchronization area was renamed between the + synchronization sessions "or during a synchronization session" + + Changes new to version 01: + + The opaque cookie has been split into two parts - a scheme which + is an OID, and a value. The value may or may not have a format + known to the client, depending on the specified scheme. Section + 4.2 describes the new cookie format and defines the LCUP Cookie + Value. + +Megginson, et. al. Proposed Standard - Expires: May 2002 20 + + + + + Added new section 4.3 - the lcupCookieScheme operational + attribute. + + Changes new to version 00: + + Added the definition for Unique Identifier (basically copied from + the LDUP model doc http://search.ietf.org/internet-drafts/draft- + ietf-ldup-model-06.txt. I needed to add the definition here + because LCUP needs a Unique Identifier but should not be dependent + on LDUP. + + Removed all normative references to LDUP. I've left the + implementation suggestions that refer to LDUP, but LCUP should not + be dependent on LDUP. + + Cleaned up the protocol flows. + + Removed this text from section 4.8: "Clients MUST NOT issue + multiple synchronization requests on the same connection. This is + because the protocol includes an extended operation and it would + be impossible to decide which synchronization session it belongs + to." - This is no longer true, since the extended operation now + includes the message ID of the search request. + + "Client Side Consideration" section - the client will never + receive a referral or continuation reference + + Added section 12. Acknowledgements + + Removed normative references to documents not depended on. + + Removed explicit references to software vendors. + + Section 4.1 - Changed ClientUpdateControlValue to remove the + keepConnection and changesOnly fields and replace them with + updateType which is an ENUMERATED with three values: + synchronizeOnly, synchronizeAndPersist, and persistOnly. + + Section 4.2 - The EntryUpdateControlValue fields stateUpdate and + entryDeleted no longer have DEFAULT values, they must be specified + - this eliminates any potential ambiguity. + + Added this text to the description of the entryDeleted field + (section 4.2): "The server SHOULD also set this to TRUE if the + entry has left the clients search result set. As far as the client + is concerned, a deleted entry is no different than an entry which + has left the result set." + Section 4.2 - Added an explanation of the concept and requirement + for the Unique Identifier. + + Section 4.4 - Added to the extended operation a request value + containing the message id of the operation to stop. + + +Megginson, et. al. Proposed Standard - Expires: May 2002 21 + + + + Updated contact information for Olga. + + Removed Michael Armijo and added Jeff Parham as an author. + + Changes new to previous version: + + "Authors" section - added Rich Megginson as the new editor. + + "Client Side Consideration" section - added a note and a question + concerning referral and continuation reference handling. + + "Client Update Control Value" section (4.1) - clarified the meaning + of keepConnection and added a table summarizing the effects of + different values of keepConnection and changesOnly. + + "Stop Client Update Request and Response" - added section 4.4 + describing this extended operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Megginson, et. al. Proposed Standard - Expires: May 2002 22 + \ No newline at end of file diff --git a/doc/drafts/draft-weltman-ldapv3-proxy-xx.txt b/doc/drafts/draft-weltman-ldapv3-proxy-xx.txt new file mode 100644 index 0000000000..a97e8cdb3c --- /dev/null +++ b/doc/drafts/draft-weltman-ldapv3-proxy-xx.txt @@ -0,0 +1,351 @@ + + +INTERNET-DRAFT Rob Weltman +Intended Category: Standards Track Netscape Communications Corp. + May 2002 + + LDAP Proxied Authorization Control + draft-weltman-ldapv3-proxy-11.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 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. + + +Abstract + + This document defines the Lightweight Directory Access Protocol + (LDAP) Proxied Authorization Control. The Proxied Authorization + Control allows a client to request that an operation be processed + under a provided authorization identity [AUTH] instead of as the + current authorization identity associated with the connection. + + +1. Introduction + + This document defines support for proxied authorization using the + Control mechanism. LDAP [LDAPV3] supports the use of SASL [SASL] for + authentication and for supplying an authorization identity distinct + from the authentication identity, where the authorization identity + applies to the whole LDAP session. The proposed Proxied Authorization + Control provides a mechanism for specifying an authorization identity + on a per operation basis, benefiting clients that need to efficiently + perform operations on behalf of multiple users. + + The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", "MAY", and + "MAY NOT" used in this document are to be interpreted as described + in [KEYWORDS]. + + + +Expires November 2002 [Page 1] + +PROXIED AUTHORIZATION CONTROL May 2002 + + +2. Publishing support for the Proxied Authorization Control + + Support for the Proxied Authorization Control is indicated by the + presence of the OID "2.16.840.1.113730.3.4.18" in the + supportedControl attribute of a server's root DSE. + + +3. Proxied Authorization Control + + A single Proxied Authorization Control may be included in any search, + compare, modify, add, delete, modDN or extended operation request + message (with the exception of any extension that causes a change in + authentication, authorization, or data confidentiality [RFC 2828], + such as startTLS) as part of the controls field of the LDAPMessage, + as defined in [LDAPV3]. + + The controlType of the proxied authorization control is + "2.16.840.1.113730.3.4.18". + + The criticality MUST be present and MUST be TRUE. This requirement + protects clients from submitting a request that is executed with an + unintended authorization identity. + + The controlValue is either an LDAPString [LDAPv3] containing an + authzId as defined in section 9 of [AUTH] to use as the authorization + identity for the request, or an empty value if the anonymous identity + is to be used. + + The mechanism for determining proxy access rights is specific to the + server's access control policy. + + If the requested authorization identity is recognized by the server, + and the client is authorized to adopt the requested authorization + identity, the request will be executed as if submitted by the proxied + authorization identity, otherwise the result code TBD is returned. + [Note to the IESG/IANA/RFC Editor: the value TBD is to be replaced + with an IANA assigned LDAP Result Code (see draft-ietf-ldapbis-iana- + xx.txt, Section 3.5)] + + +4. Implementation Considerations + + The interaction of proxied authorization access control and normal + access control is illustrated here for the case of search requests. + During evaluation of a search request, an entry which would have been + returned for the search if submitted by the proxied authorization + identity directly may not be returned if the server finds that the + requester does not have the right to assume the requested identity + for searching the entry, even if the entry is within the scope of a + search request under a base DN which does imply such rights. This + means that fewer results, or no results, may be returned compared to + the case where the proxied authorization identity issued the request + directly. An example of such a case may be a system with fine-grained + +Expires November 2002 [Page 2] + +PROXIED AUTHORIZATION CONTROL May 2002 + + + access control, where the proxy right requester has proxy rights at + the top of a search tree, but not at or below a point or points + within the tree. + + +5. Security Considerations + + The Proxied Authorization Control method is subject to general LDAP + security considerations [LDAPV3] [AUTH] [LDAPTLS]. The control may be + passed over a secure as well as over an insecure channel. + + The control allows for an additional authorization identity to be + passed. In some deployments, these identities may contain + confidential information which require privacy protection. + + Note that the server is responsible for determining if a proxied + authorization request is to be honored. "Anonymous" users SHOULD NOT + be allowed to assume the identity of others. + + +6. Copyright + + 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 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. + + +7. References + + [LDAPV3] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access + Protocol (v3)", RFC 2251, December 1997. + +Expires November 2002 [Page 3] + +PROXIED AUTHORIZATION CONTROL May 2002 + + + + [KEYWORDS] Bradner, Scott, "Key Words for use in RFCs to Indicate + Requirement Levels", draft-bradner-key-words-03.txt, January, + 1997. + + [SASL] J. Myers, "Simple Authentication and Security Layer (SASL)", + RFC 2222, October 1997 + + [AUTH] M. Wahl, H. Alvestrand, J. Hodges, R. Morgan, "Authentication + Methods for LDAP", RFC 2829, May 2000 + + [LDAPTLS] J. Hodges, R. Morgan, M. Wahl, "Lightweight Directory + Access Protocol (v3): Extension for Transport Layer Security", + RFC 2830, May 2000 + + [RFC 2828] R. Shirey, "Internet Security Glossary", RFC 2828, May + 2000 + +8. Author's Address + + Rob Weltman + Netscape Communications Corp. + 466 Ellis Street + Mountain View, CA 94043 + USA + +1 650 937-3194 + rweltman@netscape.com + + +9. Acknowledgements + + Mark Smith of Netscape Communications Corp., Mark Wahl of Sun + Microsystems, Inc, Kurt Zeilenga of OpenLDAP Foundation, Jim + Sermersheim of Novell, and Steven Legg of Adacel have contributed + with reviews of this draft. + + +10. Revision History + +10.1 Changes from draft-weltman-ldapv3-proxy-10.txt + + Clarified the interaction of proxy access rights and normal access + control evaluation. + + +10.2 Changes from draft-weltman-ldapv3-proxy-09.txt + + Removed description of Control mechanism from Abstract. + + Added description of how this is different from SASL authz to the + Introduction. + + +Expires November 2002 [Page 4] + +PROXIED AUTHORIZATION CONTROL May 2002 + + + Reworded description of the value of the control (no semantic + changes). + Added new result code TBD for failure to acquire proxy rights. + + Added references to RFCs 2829 and 2830 in Security section. + + +10.3 Changes from draft-weltman-ldapv3-proxy-08.txt + + Proxied Authorization Control + + Clarifications: the control may not be submitted with a startTLS + request; an empty controlValue implies the anonymous identity; only + one control may be included with a request. + + Permission to execute as proxy + + Replaced "proxy identity" with "proxied authorization identity". + + + Security Considerations + + Added statement that anonymous users should not be allowed to assume + the identity of others. + + +10.4 Changes from draft-weltman-ldapv3-proxy-07.txt + + Proxied Authorization Control + + Clarification: the content of the control is an LDAPString. + + +10.5 Changes from draft-weltman-ldapv3-proxy-06.txt + + None + + + + + + + + + + + + + + + + + +Expires November 2002 [Page 5] + +PROXIED AUTHORIZATION CONTROL May 2002 + + +10.6 Changes from draft-weltman-ldapv3-proxy-05.txt + + The control also applies to add and extended operations. + + The control value is an authorization ID, not necessarily a DN. + + Confidentiality concerns are mentioned. + + +10.7 Changes from draft-weltman-ldapv3-proxy-04.txt + + The control does not apply to bind, unbind, or abandon operations. + + The proxy DN is represented as a string in the control, rather than + embedded in a sequence. + + Support for the control is published in the supportedControl + attribute of the root DSE, not in supportedExtensions. + + The security section mentions confidentiality issues with exposing an + additional identity. + + +10.8 Changes from draft-weltman-ldapv3-proxy-03.txt + + None + + + +10.9 Changes from draft-weltman-ldapv3-proxy-02.txt + + The Control is now called Proxied Authorization Control, rather than + Proxied Authentication Control, to reflect that no authentication + occurs as a consequence of processing the Control. + + Rather than containing an LDAPDN as the Control value, the Control + contains a Sequence (which contains an LDAPDN). This is to provide + for future extensions. + + + + + + + + + + + + + + + +Expires November 2002 [Page 6] + \ No newline at end of file diff --git a/doc/drafts/draft-zeilenga-ldap-adlist-xx.txt b/doc/drafts/draft-zeilenga-ldap-adlist-xx.txt new file mode 100644 index 0000000000..c6c4c3b989 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-adlist-xx.txt @@ -0,0 +1,283 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Informational OpenLDAP Foundation +Expires in six months 17 May 2002 + + + LDAPv3: Requesting Attributes by Object Class + <draft-zeilenga-ldap-adlist-01.txt> + + +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 an Informational document. + Distribution of this memo is unlimited. Technical discussion of this + document will take place on the IETF LDAP Extensions 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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + The Lightweight Directory Access Protocol (LDAP) search operation + provides mechanisms for clients to request all user application + attributes, all operational attributes, or attributes selected by + their description. This document extends LDAP to provide a mechanism + for LDAP clients to request the return of all attributes of an object + class. + + + +Zeilenga Requesting Attributes by Object Class [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-adlist-01 17 May 2002 + + +1. Overview + + LDAP [RFC2251] search operations support mechanisms for requesting + sets of attributes. This set is determined by a list of attribute + descriptions. Two special descriptors are defined to request all user + attributes ("*") and all operational attributes ("+"). However, there + is no convenient mechanism for requesting pre-defined sets of + attributes. This document extends LDAP to allow an object class + identifier to be specified in search request attributes list to + request the return all attributes allowed by object class. + + 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 BCP 14 [RFC2119]. + + +2. Return of all Attributes of an Object Class + + This extension allows object class identifiers is to be provided in + the attributes field of the LDAP SearchRequest [RFC2251]. For each + object class identified in the attributes field, the request is to be + treated as if each attribute allowed by that class (by "MUST" or + "MAY", directly or by SUPerior) was itself listed. For example, a + request for "country" [RFC2256] is treated as if "c", "searchGuide", + "description", and "objectClass" were requested. + + As a special case, requesting extensibleObject [RFC2252] is treated as + if "objectClass,*,+" was requested [RFC2251][OPATTRS]. + + If the object class identifier is unrecognized, it is be treated an an + unrecognized attribute description. + + This extension redefines the attributes field of the SearchRequest to + be a DescriptionList described by the following [ASN.1]: + + DescriptionList ::= SEQUENCE OF Description + Description ::= LDAPString + + The Description is string conforming to the [ABNF]: + + Description ::= AttributeDescription | ObjectClassDescription. + ObjectDescription ::= ObjectClass *( ";" options ) + + where AttributeDescription and options productions are as defined in + Section 4.1.5 of [RFC2251] and an ObjectClass is an objectIdentifier, + in either numericoid or descr form [RFC 2252], of an object class. + + ObjectDescription options are provided for extensibility. This + + + +Zeilenga Requesting Attributes by Object Class [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-adlist-01 17 May 2002 + + + document only defines semantics of ObjectDescriptions with zero + options in the attributes field of a SearchRequest. Other uses may be + defined in future specifications. + + Servers supporting this feature SHOULD publish the Object Identifier + 1.3.6.1.4.1.4203.1.5.2 as a value of the supportedFeatures [FEATURES] + attribute in the root DSE. + + +3. Security Considerations + + This extension provides a shorthand for requesting all attributes of + an object class. As these attributes which could have been listed + individually, this short hand is not believed to raises additional + security considerations. + + Implementors of this (or any) LDAP extension should be familiar with + general LDAP general security considerations [LDAPTS]. + + +4. IANA Considerations + + No IANA assignments are requested. + + This document uses the OID 1.3.6.1.4.1.4203.1.5.2 to identify the LDAP + feature it details. This OID was assigned [ASSIGN] by OpenLDAP + Foundation under its IANA assigned private enterprise allocation + [PRIVATE] for use in this specification. + + +5. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +6. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), 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. + + + +Zeilenga Requesting Attributes by Object Class [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-adlist-01 17 May 2002 + + + [LDAPTS] J. Hodges, R. Morgan, "Lightweight Directory Access + Protocol (v3): Technical Specification", + draft-ietf-ldapbis-ldapv3-ts-xx.txt (a work in progress). + + [FEATURES] K. Zeilenga, "Feature Discovery in LDAP", + draft-zeilenga-ldap-features-xx.txt (a work in progress). + + [OPATTRS] K. Zeilenga, "LDAPv3: All Operational Attributes", + draft-zeilenga-ldap-opattrs-xx.txt (a work in progress). + + +7. Informative References + + [RFC2256] Wahl, M., "A Summary of the X.500(96) User Schema for use + with LDAPv3", RFC 2256, December 1997. + + [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, + Models and Service", 1993. + + [X.511] ITU-T Rec. X.511, "The Directory: Abstract Service + Definition", 1993. + + [ASSIGN] OpenLDAP Foundation, "OpenLDAP OID Delegations", + http://www.openldap.org/foundation/oid-delegate.txt. + + [PRIVATE] IANA, "Private Enterprise Numbers", + http://www.iana.org/assignments/enterprise-numbers. + + + +Copyright 2002, The Internet Society. 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. + + + + +Zeilenga Requesting Attributes by Object Class [Page 4] + +INTERNET-DRAFT draft-zeilenga-ldap-adlist-01 17 May 2002 + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Zeilenga Requesting Attributes by Object Class [Page 5] + diff --git a/doc/drafts/draft-zeilenga-ldap-authzid-xx.txt b/doc/drafts/draft-zeilenga-ldap-authzid-xx.txt new file mode 100644 index 0000000000..57c313bc52 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-authzid-xx.txt @@ -0,0 +1,339 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 + + + + LDAP "Who am I?" Operation + <draft-zeilenga-ldap-authzid-06.txt> + + +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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + This specification provides a mechanism for Lightweight Directory + Access Protocol (LDAP) clients to obtain the authorization identity + which the server has associated with the user or application entity. + This mechanism is specified as an LDAP extended operation called the + LDAP "Who am I?" operation. + + + +Zeilenga LDAP "Who am I?" [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-authzid-06 17 May 2002 + + +Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14 [RFC2119]. + + +1. Background and Intent of Use + + This specification describes a Lightweight Directory Access Protocol + (LDAP) [RFC2251] extended operation which clients can use to obtain + the primary authorization identity in its primary form which the + server has associated with the user or application entity. + + Servers often associate multiple authorization identities with the + client and each authorization identity may be represented by multiple + authzId [RFC2829] strings. This operation requests and returns the + authzId the server considers to be primary. In the specification, the + term "the authorization identity" and "the authzid" are to generally + read as "the primary authorization identity" and the "the primary + authzid", respectively. + + This specification is intended to replace the existing [AUTHCTL] + mechanism which uses Bind request and response controls to request and + return the authorization identity. Bind controls are not protected by + the security layers established by the Bind operation which they are + transferred as part of. While it is possible to establish security + layers prior to the Bind operation, it is often desirable to only use + security layers established by the Bind operation. An extended + operation sent after a Bind operation is protected by the security + layers established by the Bind operation. + + There are other cases where it is desirable to request the + authorization identity which the server associated with the client + separately from the Bind operation. For example, the "Who am I?" + operation can be augmented with a Proxied Authorization Control + [PROXYCTL] to determine the authorization identity which the server + associates with the identity asserted in the Proxied Authorization + Control. The "Who am I?" operation can also be used prior to the Bind + operation. + + The LDAP "Who am I?" operation is named after the UNIX whoami(1) + command. The whoami(1) command displays the effective user id. + + +2. The "Who am I?" Operation + + The "Who am I?" operation is defined as an LDAP Extended Operation + + + +Zeilenga LDAP "Who am I?" [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-authzid-06 17 May 2002 + + + [RFC2251, Section 4.12] identified by the whoamiOID Object Identifier + (OID). This section details the syntax of the operation's whoami + request and response messages. + + whoamiOID ::= "1.3.6.1.4.1.4203.1.11.3" + + +2.1. The whoami Request + + The whoami request is an ExtendedRequest with the requestName field + containing the whoamiOID OID and an absent requestValue field. For + example, a whoami request could be encoded as the sequence of octets + (in hex): + + +2.2. The whoami Response + + The whoami response is an ExtendedResponse where the responseName + field is absent and, if present, the response field is empty or an + authzId [RFC2829]. For example, a whoami response returning the + authzid "u:kurt@OPENLDAP.ORG" (in response to the example request) + would be encoded as the sequence of octets (in hex): + + + +3. Operational Semantics + + The function of the "Who am I?" operation is to request that the + server returns the authorization identity it currently associates with + the client. The client requests this authorization identity by + issuing a whoami Request. The server responds to this request with a + whoami Response. + + If the server is willing and able to provide the authorization + identity it associates with the client, the server SHALL return a + whoami Response with a success resultCode. If the server is treating + the client as an anonymous entity, the response field is empty. + Otherwise the server is to provide the authzId [RFC2829] representing + the authorization identity it currently associates with the client in + the response field. + + If the server is unwilling or unable to provide the authorization + identity it associates with the client, the server SHALL return a + whoami Response with an appropriate non-success resultCode (such as + operationsError, protocolError, confidentialityRequired, + insufficientAccessRights, busy, unavailable, unwillingToPerform, or + other) and an absent response field. + + + + +Zeilenga LDAP "Who am I?" [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-authzid-06 17 May 2002 + + + As described in [RFC2251] and [RFC2829], an LDAP session has an + "anonymous" association until the client has been successfully + authenticated using the Bind operation. Clients MUST NOT invoke the + "Who Am I?" operation while any Bind operation is in progress, + including between two Bind requests made as part of a multi-stage Bind + operation. + + +4. Extending the "Who am I?" operation with controls + + Future specifications may extend the "Who am I?" operation using the + control mechanism. When extended by controls, the "Who am I?" + operation requests and returns the authorization identity the server + associates with the client in a particular context indicated by the + controls. + + +4.1. Proxied Authorization Control + + The Proxied Authorization Control [PROXYCTL] is used by clients to + request that the operation it is attached to operates under the + authorization of an assumed identity. The client provides the + identity to assume in the Proxied Authorization request control. If + the client is authorized to assume the requested identity, the server + executes the operation as if the requested identity had issued the + operation. + + As servers often map the asserted authzId to another identity + [RFC2829], it is desirable to request the server provide the authzId + it associates with the assumed identity. + + When a Proxied Authorization Control is be attached to the "Who Am I?" + operation, the operation requests the return of the authzid the server + associates with the identity asserted in the Proxied Authorization + Control. The TBD result code is used to indicate that the server does + not allow the client to assume the asserted identity. [[Note to RFC + Editor: TBD is to be replaced with the name/code assigned by IANA for + [PROXYCTL] use.]] + + +5. Security Considerations + + Identities associated with users may be sensitive information. When + so, security layers [RFC2829][RFC2830] should be established to + protect this information. This mechanism is specifically designed to + allow security layers established by a Bind operation to protect the + integrity and/or confidentiality of the authorization identity. + + + + +Zeilenga LDAP "Who am I?" [Page 4] + +INTERNET-DRAFT draft-zeilenga-ldap-authzid-06 17 May 2002 + + + Servers may place access control or other restrictions upon the use of + this operation. + + As with any other extended operations, general LDAP considerations + apply. These are detailed in [RFC2251], [RFC2829], and [RFC2830]. + + +6. IANA Considerations + + No IANA assignments are requested. + + This document uses the OID 1.3.6.1.4.1.4203.1.11.3 to identify the + LDAP "Who Am I? extended operation. This OID was assigned [ASSIGN] by + OpenLDAP Foundation under its IANA assigned private enterprise + allocation [PRIVATE] for use in this specification. + + +7. Acknowledgment + + This document borrows from prior work in this area including + "Authentication Response Control" [AUTHCTL] by Rob Weltman, Mark Smith + and Mark Wahl. + + +8. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +9. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access + Protocol (v3)", RFC 2251, December 1997. + + [RFC2829] M. Wahl, H. Alvestrand, J. Hodges, RL "Bob" Morgan, + "Authentication Methods for LDAP", RFC 2829, June 2000. + + [RFC2830] J. Hodges, R. Morgan, and M. Wahl, "Lightweight Directory + Access Protocol (v3): Extension for Transport Layer + Security", RFC 2830, May 2000. + + [PROXYCTL] R. Weltman, "LDAP Proxied Authentication Control", draft- + weltman-ldapv3-proxy-xx.txt (a work in progress). + + + +Zeilenga LDAP "Who am I?" [Page 5] + +INTERNET-DRAFT draft-zeilenga-ldap-authzid-06 17 May 2002 + + +10. Informative References + + [ASSIGN] OpenLDAP Foundation, "OpenLDAP OID Delegations", + http://www.openldap.org/foundation/oid-delegate.txt. + + [AUTHCTL] R. Weltman, M. Smith, M. Wahl, "LDAP Authentication + Response Control", draft-weltman-ldapv3-auth-response- + xx.txt (a work in progress). + + [PRIVATE] IANA, "Private Enterprise Numbers", + http://www.iana.org/assignments/enterprise-numbers. + + +Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + + + + + +Zeilenga LDAP "Who am I?" [Page 6] + diff --git a/doc/drafts/draft-zeilenga-ldap-cancel-xx.txt b/doc/drafts/draft-zeilenga-ldap-cancel-xx.txt new file mode 100644 index 0000000000..9ea467ec0f --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-cancel-xx.txt @@ -0,0 +1,395 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 + + + LDAP Cancel Extended Operation + <draft-zeilenga-ldap-cancel-05.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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + This specification describes an LDAP (Lightweight Directory Access + Protocol) extended operation to cancel (or abandon) an outstanding + operation. Unlike the LDAP Abandon operation but like the X.511 DAP + Abandon operation, this operation has a response which provides an + indication of its outcome. + + + + +Zeilenga LDAP Cancel [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-cancel-05 17 May 2002 + + +Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14 [RFC2119]. + + Protocol elements are described using ASN.1 [X.680]. The term + "BER-encoded" means the element is to be encoded using the Basic + Encoding Rules [X.690] under the restrictions detailed in Section 5.1 + of [RFC2251]. + + +1. Background and Intent of Use + + LDAP [RFC2251] provides an Abandon operation which clients may use to + cancel other operations. The Abandon operation does not have a + response and also calls for there to be no response of the abandoned + operation. These semantics provide the client with no clear + indication of the outcome of the Abandon operation. + + X.511 DAP [X.511] provides an Abandon operation which does have a + response and also requires the abandoned operation to return a + response with indicating it was canceled. The Cancel operation is + modeled after the DAP Abandon operation. + + The Cancel operation SHOULD be used instead of the LDAP Abandon + operation when the client needs an indication of the outcome. This + operation may be used to cancel both interrogation and update + operations. + + +4. Cancel Operation + + The Cancel operation is defined as a LDAPv3 Extended Operation + [RFC2251, Section 4.12] identified by the OBJECT IDENTIFIER cancelOID. + This section details the syntax of the Cancel request and response + messages and defines additional LDAP resultCodes. + + cancelOID OBJECT IDENTIFIER ::= IANA-ASSIGNED + + cancelRequestValue ::= SEQUENCE { + cancelID MessageID + } + + +4.1. Cancel Request + + The Cancel request is an ExtendedRequest with the requestName field + + + +Zeilenga LDAP Cancel [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-cancel-05 17 May 2002 + + + containing cancelOID OID and a requestValue field which contains a + cancelRequestValue value encoded per [RFC2251, Section 5.1]. The + cancelID field contains the message id associated with the operation + to be canceled. + + +4.2. Cancel Response + + A Cancel response is an ExtendedResponse where the responseName and + response fields are absent. + + +4.3. Additional Result Codes + + Implementations of this specification SHALL recognize the following + additional resultCode values: + + canceled (IANA-ASSIGNED-1) + noSuchOperation (IANA-ASSIGNED-2) + tooLate (IANA-ASSIGNED-3) + cannotCancel (IANA-ASSIGNED-4) + + +5. Operational Semantics + + The function of the Cancel Operation is to request that the server + cancel an outstanding operation issued within the same session. + + The client requests the cancelation of an outstanding operation by + issuing a Cancel Response with a cancelID with the message id + identifying the outstanding operation. The Cancel Request itself has + a distinct message id. Clients SHOULD NOT request cancelation of an + operation multiple times. + + If the server is unable to parse the requestValue or the requestValue + is absent, the server shall return protocolError. + + If the server is willing and able to cancel the outstanding operation + identified by the cancelId, the server SHALL return a Cancel Response + with a success resultCode and the canceled operation SHALL fail with + canceled resultCode. Otherwise the Cancel Response SHALL have a + non-success resultCode and SHALL NOT have impact upon the outstanding + operation (if it exists). + + The server SHALL return noSuchOperation if it has no knowledge of the + operation requested to be canceled. + + The server SHALL return cannotCancel if the identified operation does + + + +Zeilenga LDAP Cancel [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-cancel-05 17 May 2002 + + + not support cancelation or the cancel operation could not be + performed. The following classes of operations are not cancelable: + + - operations which have no response, + + - operations which associate or disassociate authentication and/or + authorization associations, + + - operations which establish or tear-down security services, and + + - operations which abandon or cancel other operations. + + Specifically, Abandon, Bind, Start TLS [RFC2830], Unbind and Cancel + operations are not cancelable. + + If the result of the outstanding operation has been determined by the + server, the outstanding operation SHALL NOT be canceled and the cancel + operation SHALL result in tooLate. + + Servers SHOULD indicate their support for this extended operation by + providing cancelOID as a value of the supportedExtension attribute + type in their root DSE. A server MAY choose to advertise this + extension only when the client is authorized and/or has established + the necessary security protections to use this operation. Clients + SHOULD verify the server implements this extended operation prior to + attempting the operation by asserting the supportedExtension attribute + contains a value of cancelOID. + + +6. Security Considerations + + This operation is intended to allow a user to cancel operations they + previously issued. No user should be allowed to cancel an operation + issued by another user (within the same session or not). However, as + this operation may only be used to cancel within the same session and + LDAP requires operations to be abandoned upon bind requests, this is a + non-issue. + + Some operations should not be cancelable for security reasons. This + specification disallows cancelation of Bind operation and Start TLS + extended operation so as to avoid adding complexity to authentication, + authorization, and security layer semantics. Designers of future + extended operations and/or controls SHOULD disallow abandonment and + cancelation when appropriate. + + +7. IANA Considerations + + + + +Zeilenga LDAP Cancel [Page 4] + +INTERNET-DRAFT draft-zeilenga-ldap-cancel-05 17 May 2002 + + +7.1. Object Identifiers + + It is requested that IANA register a Directory Number OID for use in + this document upon Standards Action by the IESG. This OID will be + used to identify the LDAP Cancel extended operation as indicated + above. The following registration template is suggested: + + Subject: Request for LDAP OID Registration + Person & email address to contact for further information: + Kurt Zeilenga <kurt@OpenLDAP.org> + Specification: RFCXXX + Author/Change Controller: IESG + + +7.2. LDAP Result Codes + + It is requested that IANA register the LDAP result codes: + + canceled (IANA-ASSIGNED-1) + noSuchOperation (IANA-ASSIGNED-2) + tooLate (IANA-ASSIGNED-3) + cannotCancel (IANA-ASSIGNED-4) + + upon Standards Action by the IESG. The following registration + template is suggested: + + Subject: LDAP Result Code Registration + Person & email address to contact for further information: + Kurt Zeilenga <kurt@OpenLDAP.org> + Result Code Name: canceled + Result Code Name: noSuchOperation + Result Code Name: tooLate + Result Code Name: cannotCancel + Specification: RFCXXXX + Author/Change Controller: IESG + Comments: request four consecutive result codes be assigned + + +8. Acknowledgment + + This document is based upon input from the IETF LDAPext working group. + + +9. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + + + +Zeilenga LDAP Cancel [Page 5] + +INTERNET-DRAFT draft-zeilenga-ldap-cancel-05 17 May 2002 + + + [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access + Protocol (v3)", RFC 2251, December 1997. + + [RFC2830] J. Hodges, R. Morgan, and M. Wahl, "Lightweight Directory + Access Protocol (v3): Extension for Transport Layer + Security", RFC 2830, May 2000. + + [X.680] ITU-T, "Abstract Syntax Notation One (ASN.1) - Specification + of Basic Notation", X.680, 1994. + + [X.690] ITU-T, "Specification of ASN.1 encoding rules: Basic, + Canonical, and Distinguished Encoding Rules", X.690, 1994. + + +9. Informative References + + [X.511] ITU-T Rec. X.511, "The Directory: Abstract Service + Definition", 1993. + + +11. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +Copyright 2002, The Internet Society. 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 AUTHORS, THE INTERNET SOCIETY, AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, + + + +Zeilenga LDAP Cancel [Page 6] + +INTERNET-DRAFT draft-zeilenga-ldap-cancel-05 17 May 2002 + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Zeilenga LDAP Cancel [Page 7] + diff --git a/doc/drafts/draft-zeilenga-ldap-collective-xx.txt b/doc/drafts/draft-zeilenga-ldap-collective-xx.txt new file mode 100644 index 0000000000..4411e64b64 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-collective-xx.txt @@ -0,0 +1,507 @@ + + + + + + +INTERNET-DRAFT Editor: Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 + + + Collective Attributes in LDAP + <draft-zeilenga-ldap-collective-07.txt> + + +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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + X.500 collective attributes allow common characteristics to be shared + between collections of entries. This document summarizes the X.500 + information model for collective attributes and describes use of + collective attributes in LDAP (Lightweight Directory Access Protocol). + This document provides schema definitions for collective attributes + for use in LDAP. + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 1] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + +Conventions + + Schema definitions are provided using LDAPv3 description formats + [RFC2252]. Definitions provided here are formatted (line wrapped) for + readability. + + 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 BCP 14 [RFC2119]. + + +1. Introduction + + In X.500, a collective attribute is "a user attribute whose values are + the same for each member of an entry collection" [X.501]. This + document details their use in the Lightweight Directory Access + Protocol (LDAP) [LDAPTS]. + + +1.1. Entry Collections + + A collection of entries is a grouping of object and alias entries + based upon common properties or shared relationship between the + corresponding entries which share certain attributes. An entry + collection consists of all entries within scope of a collective + attributes subentry [SUBENTRY]. An entry can belong to several entry + collections. + + +1.2. Collective Attributes + + Attributes shared by the entries comprising an entry collection are + called collective attributes. Values of collective attributes are + visible but not updateable to clients accessing entries within the + collection. Collective attributes are updated (i.e. modified) via + their associated collective attributes subentry. + + When an entry belongs to multiple entry collections, the entry's + values of each collective attribute are combined such that independent + sources of these values are not manifested to clients. + + Entries can specifically exclude a particular collective attribute by + listing the attribute as a value of the collectiveExclusions + attribute. Like other user attributes, collective attributes are + subject to a variety of controls including access, administrative, and + content controls. + + + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 2] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + +2. System Schema for Collective Attributes + + The following operational attributes are used to manage Collective + Attributes. LDAP servers [LDAPTS] MUST act in accordance with the + X.500 Directory Models [X.501] when providing this service. + + +2.1. collectiveAttributeSubentry + + Subentries of this object class are used to administer collective + attributes and are referred to as collective attribute subentries. + + ( 2.5.20.2 NAME 'collectiveAttributeSubentry' AUXILIARY ) + + A collective attribute subentry SHOULD contain at least one collective + attribute. The collective attributes contained within a collective + attribute subentry are available for finding, searching, and + comparison at every entry within the scope of the subentry. The + collective attributes, however, are administered (e.g. modified) via + the subentry. + + Implementations of this specification SHOULD support collective + attribute subentries in both collectiveAttributeSpecificArea + (2.5.23.5) and collectiveAttributeInnerArea (2.5.23.6) administrative + areas [SUBENTRY][X.501]. + + +2.2. collectiveAttributeSubentries + + The collectiveAttributeSubentries operational attribute identifies all + collective attribute subentries that affect the entry. + + ( 2.5.18.12 NAME 'collectiveAttributeSubentries' + EQUALITY distinguishedNameMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 + USAGE directoryOperation NO-USER-MODIFICATION ) + + +2.3. collectiveExclusions + + The collectiveExclusions operational attribute allows particular + collective attributes to be excluded from an entry. It MAY appear in + any entry and MAY have multiple values. + + ( 2.5.18.7 NAME 'collectiveExclusions' + EQUALITY objectIdentifierMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 + USAGE directoryOperation ) + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 3] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + + The descriptor excludeAllCollectiveAttributes is associated with the + OID 2.5.18.0. When this descriptor or OID is present as a value of + the collectiveExclusions attribute, all collective attributes are + excluded from an entry. + + +3. Collective Attribute Types + + A userApplications attribute type can be defined to be COLLECTIVE + [RFC2252]. This indicates that the same attribute values will appear + in the entries of an entry collection subject to the use of the + collectiveExclusions attribute and other administrative controls. + These administrative controls MAY include DIT Content Rules, if + implemented. + + Collective attribute types are commonly defined as subtypes of non- + collective attribute types. By convention, collective attributes are + named by prefixing the name of their non-collective supertype with + "c-". For example, the collective telephone attribute is named + c-TelephoneNumber after its non-collective supertype telephoneNumber. + + Non-collective attributes types SHALL NOT subtype collective + attributes. + + Collective attributes SHALL NOT be SINGLE-VALUED. Collective + attribute types SHALL NOT appear in the attribute types of an object + class definition. + + Operational attributes SHALL NOT be defined to be collective. + + The remainder of section provides a summary of collective attributes + derived from those defined in [X.520]. The SUPerior attribute types + are described in [RFC 2256] for use with LDAP. + + Implementations of this specification SHOULD support the following + collective attributes and MAY support additional collective + attributes. + + +3.1. Collective Locality Name + + The c-l attribute type specifies a locality name for a collection of + entries. + + ( 2.5.4.7.1 NAME 'c-l' + SUP l COLLECTIVE ) + + + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 4] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + +3.2. Collective State or Province Name + + The c-st attribute type specifies a state or province name for a + collection of entries. + + ( 2.5.4.8.1 NAME 'c-st' + SUP st COLLECTIVE ) + + +3.3. Collective Street Address + + The c-street attribute type specifies a street address for a + collection of entries. + + ( 2.5.4.9.1 NAME 'c-street' + SUP street COLLECTIVE ) + + +3.4. Collective Organization Name + + The c-o attribute type specifies an organization name for a collection + of entries. + + ( 2.5.4.10.1 NAME 'c-o' + SUP o COLLECTIVE ) + + +3.5. Collective Organizational Unit Name + + The c-ou attribute type specifies an organizational unit name for a + collection of entries. + + ( 2.5.4.11.1 NAME 'c-ou' + SUP ou COLLECTIVE ) + + +3.6. Collective Postal Address + + The c-PostalAddress attribute type specifies a postal address for a + collection of entries. + + ( 2.5.4.16.1 NAME 'c-PostalAddress' + SUP postalAddress COLLECTIVE ) + + +3.7. Collective Postal Code + + The c-PostalCode attribute type specifies a postal code for a + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 5] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + + collection of entries. + + ( 2.5.4.17.1 NAME 'c-PostalCode' + SUP postalCode COLLECTIVE ) + + +3.8. Collective Post Office Box + + The c-PostOfficeBox attribute type specifies a post office box for a + collection of entries. + + ( 2.5.4.18.1 NAME 'c-PostOfficeBox' + SUP postOfficeBox COLLECTIVE ) + + +3.9. Collective Physical Delivery Office Name + + The c-PhysicalDeliveryOfficeName attribute type specifies a physical + delivery office name for a collection of entries. + + ( 2.5.4.19.1 NAME 'c-PhysicalDeliveryOfficeName' + SUP physicalDeliveryOfficeName COLLECTIVE ) + + +3.10. Collective Telephone Number + + The c-TelephoneNumber attribute type specifies a telephone number for + a collection of entries. + + ( 2.5.4.20.1 NAME 'c-TelephoneNumber' + SUP telephoneNumber COLLECTIVE ) + + +3.11. Collective Telex Number + + The c-TelexNumber attribute type specifies a telex number for a + collection of entries. + + ( 2.5.4.21.1 NAME 'c-TelexNumber' + SUP telexNumber COLLECTIVE ) + + +3.13. Collective Facsimile Telephone Number + + The c-FacsimileTelephoneNumber attribute type specifies a facsimile + telephone number for a collection of entries. + + ( 2.5.4.23.1 NAME 'c-FacsimileTelephoneNumber' + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 6] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + + SUP facsimileTelephoneNumber COLLECTIVE ) + + +3.14. Collective International ISDN Number + + The c-InternationalISDNNumber attribute type specifies an + international ISDN number for a collection of entries. + + ( 2.5.4.25.1 NAME 'c-InternationalISDNNumber' + SUP internationalISDNNumber COLLECTIVE ) + + +4. Security Considerations + + Collective attributes are not believed to introduce any additional + security considerations to LDAP [LDAPTS]. + + +5. IANA Considerations + + It is requested that IANA register the LDAP descriptors used in this + document per the following registration template: + + Subject: Request for LDAP Descriptor Registration + Descriptor (short name): see comment + Object Identifier: see comment + Person & email address to contact for further information: + Kurt Zeilenga <kurt@OpenLDAP.org> + Usage: see comment + Specification: RFCXXXX + Author/Change Controller: IESG + Comments: + + NAME Type OID + ------------------------ ---- ----------------- + c-FacsimileTelephoneNumber A 2.5.4.23.1 + c-InternationalISDNNumber A 2.5.4.25.1 + c-PhysicalDeliveryOffice A 2.5.4.19.1 + c-PostOfficeBox A 2.5.4.18.1 + c-PostalAddress A 2.5.4.16.1 + c-PostalCode A 2.5.4.17.1 + c-TelephoneNumber A 2.5.4.20.1 + c-TelexNumber A 2.5.4.21.1 + c-l A 2.5.4.7.1 + c-o A 2.5.4.10.1 + c-ou A 2.5.4.11.1 + c-st A 2.5.4.8.1 + c-street A 2.5.4.9.1 + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 7] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + + collectiveAttributeSubentries A 2.5.18.12 + collectiveAttributeSubentry O 2.5.20.2 + collectiveExclusions A 2.5.18.7 + + where Type A is Attribute and Type O is ObjectClass. + + + This document uses in this document were assigned by the ISO/IEC Joint + Technical Committee 1 - Subcommitte 6 to identify elements of X.500 + schema. This document make no OID assignments, it only associates + LDAP schema descriptions with existing elements of X.500 schema. + + +6. Acknowledgments + + This document is based upon the ITU Recommendations for the Directory + [X.501][X.520]. + + +7. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +8. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), 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. + + [RFC2256] M. Wahl, "A Summary of the X.500(96) User Schema for use + with LDAPv3", RFC 2256, December 1997. + + [LDAPTS] J. Hodges, R.L. Morgan, "Lightweight Directory Access + Protocol (v3): Technical Specification", + draft-ietf-ldapbis-ldapv3-ts-xx.txt. + + [SUBENTRY] K. Zeilenga, S. Legg, "Subentries in LDAP", + draft-zeilenga-ldap-subentry-xx.txt, a work in progress. + + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 8] + +INTERNET-DRAFT LDAP Collective Attributes 17 May 2002 + + + [X.501] "The Directory: Models", ITU-T Recommendation X.501, 1993. + + +9. Informative References + + [X.500] "The Directory: Overview of Concepts, Models", ITU-T + Recommendation X.500, 1993. + + [X.520] "The Directory: Selected Attribute Types", ITU-T + Recommendation X.520, 1993. + + +Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + + + + + + +Zeilenga draft-zeilenga-ldap-collective-07 [Page 9] + diff --git a/doc/drafts/draft-zeilenga-ldap-features-xx.txt b/doc/drafts/draft-zeilenga-ldap-features-xx.txt new file mode 100644 index 0000000000..29b4cf7903 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-features-xx.txt @@ -0,0 +1,227 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 + + + Feature Discovery in LDAP + <draft-zeilenga-ldap-features-03.txt> + + +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 an 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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + The Lightweight Directory Access Protocol (LDAP) is an extensible + protocol with numerous elective features. This document introduces a + general mechanism for discovery of elective features and extensions + which cannot be discovered using existing mechanisms. + + + + + +Zeilenga draft-zeilenga-ldap-features-03 [Page 1] + +INTERNET-DRAFT LDAP supportedFeatures 17 May 2002 + + +1. Background and Intended Use + + LDAP [RFC2251] is an extensible protocol with numerous elective + features. LDAP provides mechanisms for a client to discover supported + protocol versions, controls, extended operations, SASL mechanisms, and + subschema information. However, these mechanisms are not designed to + support general feature discovery. + + This document describes a simple, general-purpose mechanism which + clients may use to discover the set of features supported by a server. + + Schema definitions are provided using LDAPv3 description formats + [RFC2252]. Definitions provided here are formatted (line wrapped) for + readability. + + 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 BCP 14 [RFC2119]. + + +2. Discovery of supported features + + Each feature whose support may be discovered SHALL be identified by an + Object Identifier (OID). A server advertises its support for a given + feature by providing the OID associated with the feature as a value of + the supportedFeatures attribute held in the root DSE. A client may + examine the values of this attribute to determine if a particular + feature is supported by the server. + + The supportedFeatures attribute type is described as follows: + + ( 1.3.6.1.4.1.4203.1.3.5 + NAME 'supportedFeatures' + DESC 'features supported by the server' + EQUALITY objectIdentifierMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 + USAGE dSAOperation ) + + Servers MUST be capable of recognizing this attribute type by the name + 'supportedFeatures'. Servers MAY recognize the attribute type by + other names. + + +3. Security Considerations + + As rogue clients can discover features of a server by other means + (such as by trial and error), this feature discovery mechanism is not + believed to introduce any new security risk to LDAP. + + + +Zeilenga draft-zeilenga-ldap-features-03 [Page 2] + +INTERNET-DRAFT LDAP supportedFeatures 17 May 2002 + + +4. IANA Considerations + + It is requested that IANA register the LDAP 'supportedFeatures' + descriptor used in this document per the following registration + template: + + Subject: Request for LDAP Descriptor Registration + Descriptor (short name): supportedFeatures + Object Identifier: 1.3.6.1.4.1.4203.1.3.5 + Person & email address to contact for further information: + Kurt Zeilenga <kurt@OpenLDAP.org> + Usage: Attribute Type + Specification: RFCXXXX + Author/Change Controller: IESG + + + This OID was assigned [ASSIGN] by OpenLDAP Foundation under its IANA + assigned private enterprise allocation [PRIVATE] for use in this + specification. + + +5. Acknowledgment + + This document is based upon input from the IETF LDAPext working group. + + +6. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +7. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), 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. + + +8. Informative References + + + + +Zeilenga draft-zeilenga-ldap-features-03 [Page 3] + +INTERNET-DRAFT LDAP supportedFeatures 17 May 2002 + + +Full Copyright + + Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + + + + + + + + + + + + + + + + +Zeilenga draft-zeilenga-ldap-features-03 [Page 4] + diff --git a/doc/drafts/draft-zeilenga-ldap-namedref-xx.txt b/doc/drafts/draft-zeilenga-ldap-namedref-xx.txt new file mode 100644 index 0000000000..d32c995018 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-namedref-xx.txt @@ -0,0 +1,743 @@ + + + + + + +INTERNET-DRAFT Editor: Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires: 20 May 2002 20 November 2001 + + + + Named Subordinate References in LDAP Directories + <draft-zeilenga-ldap-namedref-05.txt> + + +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 2001, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + This document details schema and protocol elements for representing + and managing named subordinate references in LDAP directories. + + +Conventions + + + +Zeilenga LDAP NamedRef [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + Schema definitions are provided using LDAPv3 description formats + [RFC2252]. Definitions provided here are formatted (line wrapped) for + readability. + + 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 BCP 14 [RFC2119]. + + +1. Background and Intended Usage + + The broadening of interest in LDAP (Lightweight Directory Access + Protocol) [RFC2251] 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 details schema and protocol elements for representing + and manipulating named subordinate references in LDAP directories. A + referral object is used to hold subordinate reference information in + the directory. These referral objects hold one or more URIs [RFC2396] + contained in values of the ref attribute type and are used to generate + protocol referrals and continuations. + + A control, ManageDsaIT, is defined to allow manipulation of referral + and other special objects as normal objects. As the name of control + implies, it is intended to be analogous to the ManageDsaIT service + option described in X.511(97) [X.511]. + + 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 describe protocol syntax and + semantics. This is detailed in RFC 2251 [RFC2251]. + + This document does not detail use of subordinate knowledge references + to support replicated environments nor distributed operations (e.g., + chaining of operations from one server to other servers). + + +2. Schema + +2.1. The referral Object Class + + A referral object is a directory entry whose structural object class + is (or is derived from) the referral object class. + + + +Zeilenga LDAP NamedRef [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + ( 2.16.840.1.113730.3.2.6 + NAME 'referral' + DESC 'named subordinate reference object' + STRUCTURAL + MUST ref ) + + The referral object class is a structural object class used to + represent a subordinate reference in the directory. The referral + object class SHOULD be used in conjunction with the extensibleObject + object class to support the naming attributes used in the entry's + Distinguished Name (DN) [RFC2253]. Referral objects are directory + entries whose structural object class is (or is derived from) + referral. + + Referral objects are normally instantiated at DSEs immediately + subordinate to object entries within a naming context held by the DSA. + Referral objects are analogous to X.500 subordinate knowledge (subr) + DSEs [X.501]. + + In the presence of a ManageDsaIT control, referral objects are treated + as normal entries as described in section 3. 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 4 and, as such, the referral entries are not + themselves visible to clients. + + +2.2 The ref Attribute Type + + ( 2.16.840.1.113730.3.1.34 + NAME 'ref' + DESC 'named reference - a labeledURI' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + USAGE distributedOperation ) + + The ref attribute type has directoryString 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 [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. + + + +Zeilenga LDAP NamedRef [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + If the URI contained in a ref attribute value refers to a LDAP + [RFC2251] server, it MUST be in the form of a LDAP URL [RFC2255]. The + LDAP URL SHOULD NOT contain an explicit scope specifier, filter, + attribute description list, or any extensions. The LDAP URL SHOULD + contain a non-empty DN. The handling of LDAP URLs with absent or + empty DN parts or with explicit scope specifier is not defined by this + specification. + + Other URI schemes MAY be used so long as all operations returning + referrals based upon the value could be performed. This document does + not detail use of non-LDAP URIs. This is left to future + specifications. + + The referential integrity of the URI SHOULD NOT be validated by the + server holding or returning the URI (whether as a value of the + attribute or as part of a referral result or search reference + response). + + When returning a referral result or search continuation, the server + MUST NOT return the separator or label portions of the attribute + values as part of the reference. When the attribute contains multiple + values, the URI part of each value is used to construct the referral + result or search continuation. + + The ref attribute values SHOULD NOT be used as a relative + name-component of an entry's DN [RFC2253]. + + This document uses the ref attribute in conjunction with the referral + object class to represent subordinate references. The ref attribute + may be used for other purposes as defined by other documents. + + +3. The ManageDsaIT Control + + The client may provide the ManageDsaIT control with an operation to + indicate that the operation is intended to manage objects within the + DSA (server) Information Tree. The control causes Directory-specific + entries (DSEs), regardless of type, to be treated as normal entries + allowing clients to interrogate and update these entries using LDAP + operations. + + A client MAY specify the following control when issuing an add, + compare, delete, modify, modifyDN, search request or an extended + operation for which the control is defined. + + The control type is 2.16.840.1.113730.3.4.2. The control criticality + may be TRUE or, if FALSE, absent. The control value is absent. + + + + +Zeilenga LDAP NamedRef [Page 4] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + When the control is present in the request, the server SHALL NOT + generate a referral or continuation reference based upon information + held in referral objects and instead SHALL treat the referral object + as a normal entry. The server, however, is still free to return + referrals for other reasons. When not present, referral objects SHALL + be handled as described above. + + The control MAY cause other objects to be treated as normal entries as + defined by subsequent documents. + + +4. Named Subordinate References + + A named subordinate reference is constructed by instantiating a + referral object in the referencing server with ref attribute values + which point to the corresponding subtree maintained in the referenced + server. In general, the name of the referral object is the same as + the referenced object and this referenced object is a context prefix + [X.501]. + + 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 "DC=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 + + Typically the DN of the referral object and the DN of the object in + the referenced server are the same. + + If the ref attribute has multiple values, all the DNs contained within + the LDAP URLs SHOULD be equivalent. 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 3. + + +5. 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 here consist of + referral object handling when finding target of a non-search + + + +Zeilenga LDAP NamedRef [Page 5] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + 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. The first phase is similar to, but not the same as, + finding the target of a non-search operation. + + It should 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 be + processed 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. Example Configuration + + For example, suppose the contacted server (hosta) holds the entry + "O=MNN,C=WW" and the entry "CN=Manager,O=MNN,C=WW" and the following + 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/OU=Roles,O=MNN,C=WW + objectClass: referral + objectClass: extensibleObject + + The first referral object provides the server with the knowledge that + subtree "OU=People,O=MNN,C=WW" is held by hostb and hostc (e.g., one + is the master and the other a shadow). The second referral object + provides the server with the knowledge that the subtree + "OU=Roles,O=MNN,C=WW" is held by hostd. + + Also, in the context of this document, the "nearest naming context" + means the deepest context which the object is within. That is, if the + + + +Zeilenga LDAP NamedRef [Page 6] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + object is within multiple naming contexts, the nearest naming context + is the one which is subordinate to all other naming contexts the + object is within. + + +5.2. Target object considerations + + This section details referral handling for add, compare, delete, + modify, and modify DN operations. If the client requests any of these + operations, there are four cases that the server must handle with + respect to the target object. + + The DN part MUST be modified such that it refers to the appropriate + target in the referenced server (as detailed below). Even where the + DN to be returned is the same as the target DN, the DN part SHOULD NOT + be trimmed. + + In cases where the URI to be returned is a LDAP URL, the server SHOULD + trim any present scope, filter, or attribute list from the URI before + returning it. Critical extensions MUST NOT be trimmed or modified. + + Case 1: The target object is not held by the server and is not within + or subordinate to any naming context nor subordinate to any + referral object held by the server. + + The server SHOULD process the request normally as appropriate for + a non-existent base which is not within any naming context of the + server (generally return noSuchObject or a referral based upon + superior knowledge reference information). This document does not + detail management or processing of superior knowledge reference + information. + + Case 2: The target object is held by the server and is a referral + object. + + The server SHOULD return the URI value contained in the ref + attribute of the referral object appropriately modified as + described above. + + Example: If the client issues a modify request for the target object + of "OU=People,O=MNN,c=WW", the server will return: + + ModifyResponse (referral) { + ldap://hostb/OU=People,O=MNN,C=WW + ldap://hostc/OU=People,O=MNN,C=WW + } + + + + + +Zeilenga LDAP NamedRef [Page 7] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + Case 3: The target object is not held by the server, but the nearest + naming context contains no referral object which the target object + is subordinate to. + + If the nearest naming context contains no referral object which + the target is subordinate to, the server SHOULD process the + request as appropriate for a nonexistent target (generally return + noSuchObject). + + Case 4: The target object is not held by the server, but the nearest + naming context contains a referral object which the target object + is subordinate to. + + If a client requests an operation for which the target object is + not held by the server and the nearest naming context contains a + referral object which the target object is subordinate to, the + server SHOULD return a referral response constructed from the URI + portion of the ref value of the referral object. + + Example: If the client issues an add request where the target object + has a DN of "CN=Manager,OU=Roles,O=MNN,C=WW", the server will + return + + AddResponse (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. + + +5.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 URI to be returned is a LDAP URL, the server MUST + provide an explicit scope specifier from the LDAP URL prior to + returning it. In addition, the DN part MUST be modified such that it + refers to the appropriate target in the referenced server (as detailed + below). + + If aliasing dereferencing was necessary in finding the referral + object, the DN part of the URI MUST be replaced with the base DN as + modified by the alias dereferencing such that the return URL refers to + the new target object per [RFC2251, 4.1.11]. + + + + +Zeilenga LDAP NamedRef [Page 8] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + Critical extensions MUST NOT be trimmed nor modified. + + Case 1: The base object is not held by the server and is not within + nor subordinate to any naming context held by the server. + + The server SHOULD process the request normally as appropriate for + a non-existent base which not within any naming context of the + server (generally return a superior referral or noSuchObject). + This document does not detail management or processing of superior + knowledge references. + + Case 2: The base object is held by the server and is a referral + object. + + The server SHOULD return the URI value contained in the ref + attribute of the referral object appropriately modified as + described above. + + + Example: If the client issues a subtree search in which the base + object is "OU=Roles,O=MNN,C=WW", the server will return + + SearchResultDone (referral) { + ldap://hostd/OU=Roles,O=MNN,C=WW??sub + } + + If the client were to issue a base or oneLevel search instead of + subtree, the returned LDAP URL would explicitly specify "base" or + "one", respectively, instead of "sub". + + Case 3: The base object is not held by the server, but the nearest + naming context contains no referral object which the base object + is subordinate to. + + If the nearest naming context contains no referral object which + the base is subordinate to, the request SHOULD be processed + normally as appropriate for a nonexistent base (generally return + noSuchObject). + + Case 4: The base object is not held by the server, but the nearest + naming context contains a referral object which the base object is + subordinate to. + + If a client requests an operation for which the target object is + not held by the server and the nearest naming context contains a + referral object which the target object is subordinate to, the + server SHOULD return a referral response which is constructed from + the URI portion of the ref value of the referral object. + + + +Zeilenga LDAP NamedRef [Page 9] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + Example: If the client issues a base 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??base" + } + + If the client were to issue a subtree or oneLevel search instead + of subtree, the returned LDAP URL would explicitly specify "sub" + or "one", respectively, instead of "base". + + Note that the DN part of the LDAP URL is modified such that it + refers to the appropriate entry in the referenced server. + + +5.4. Search Continuation Considerations + + For search operations, once the base object has been found and + determined not to be a referral object, the search may progress. Any + entry matching the filter and scope of the search which is not a + referral object is returned to the client normally as described in + [RFC2251]. + + For each referral object within the requested scope, regardless of the + search filter, the server SHOULD return a SearchResultReference which + is constructed from the URI component of values of the ref attribute. + If the URI component is not a LDAP URL, it should be returned as is. + If the LDAP URL's DN part is absent or empty, the DN part must be + modified to contain the DN of the referral object. If the URI + component is a LDAP URL, the URI SHOULD be modified to add an explicit + scope specifier. + + Subtree Example: + + If a client requests a subtree search of "O=MNN,C=WW", then in + addition to any entries within scope which match the filter, hosta + will also return two search references as the two 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??sub + ldap://hostc/OU=People,O=MNN,C=WW??sub + } + SearchEntry for CN=Manager,O=MNN,C=WW + SearchResultReference { + ldap://hostd/OU=Roles,O=MNN,C=WW??sub + } + + + +Zeilenga LDAP NamedRef [Page 10] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + SearchResultDone (success) + + One Level Example: + + If a client 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, the server will also return two search + references as the two referral objects are within scope. One + possible sequence is shown: + + SearchResultReference { + ldap://hostb/OU=People,O=MNN,C=WW??base + ldap://hostc/OU=People,O=MNN,C=WW??base + } + SearchEntry for CN=Manager,O=MNN,C=WW + SearchResultReference { + ldap://hostd/OU=Roles,O=MNN,C=WW??base + } + SearchResultDone (success) + + Note: Unlike the examples in Section 4.5.3.1 of RFC 2251, the LDAP + URLs returned with the SearchResultReference messages contain, + as required by this specification, an explicit scope specifier. + + +5.6. Other Considerations + + This section details processing considerations for other operations. + + +5.6.1 Bind + + Servers SHOULD NOT return referral result code if the bind name (or + authentication identity or authorization identity) is (or is + subordinate to) a referral object but MAY use the knowledge + information to process the bind request (such as in support a future + distributed operation specification). Where the server makes no use + of the knowledge information, the server processes the request + normally as appropriate for a non-existent authentication or + authorization identity (e.g., return invalidCredentials). + + +5.6.2 Modify DN + + If the newSuperior is a referral object or is subordinate to a + referral object, the server SHOULD return affectsMultipleDSAs. If the + newRDN already exists but is a referral object, the server SHOULD + return affectsMultipleDSAs instead of entryAlreadyExists. + + + +Zeilenga LDAP NamedRef [Page 11] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + +6. Security Considerations + + This document defines mechanisms that can be used to tie LDAP (and + other) servers together. The information used to tie services + together should be protected from unauthorized modification. If the + server topology information is not public information, it should be + protected from unauthorized disclosure as well. + + +7. Acknowledgments + + This document borrows heavily from previous work by IETF LDAPext + Working Group. In particular, this document is based upon "Named + Referral in LDAP Directories" (an expired Internet Draft) by + Christopher Lukas, Tim Howes, Michael Roszkowski, Mark C. Smith, and + Mark Wahl. + + +8. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +9. Normative References + + [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", BCP 14 (also RFC 2119), 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. + + + + +Zeilenga LDAP NamedRef [Page 12] + +INTERNET-DRAFT draft-zeilenga-ldap-namedref-05 20 November 2001 + + + [RFC2396] Berners-Lee, T., R. Fielding, L. Masinter, "Uniform Resource + Identifiers (URI): Generic Syntax", RFC 2396, August 1998. + + [X.501] ITU-T, "The Directory: Models", X.501, 1993. + + +10. Informative References + + [X.500] ITU-T, "The Directory: Overview of Concepts, Models, and + Services", X.500, 1993. + + [X.511] ITU-T, "The Directory: Abstract Service Definition", X.500, + 1993. + + +Copyright 2001, The Internet Society. 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 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. + + + + + + + + + + + + + + + + + + + + + + + + +Zeilenga LDAP NamedRef [Page 13] + diff --git a/doc/drafts/draft-zeilenga-ldap-opattrs-xx.txt b/doc/drafts/draft-zeilenga-ldap-opattrs-xx.txt new file mode 100644 index 0000000000..1bcae292ab --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-opattrs-xx.txt @@ -0,0 +1,227 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 + + + + LDAPv3: All Operational Attributes + <draft-zeilenga-ldap-opattrs-03.txt> + + +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 Extensions 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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + The Lightweight Directory Access Protocol (LDAP) supports a mechanism + for requesting the return of all user attributes but does not all + operational attributes. This document describes an LDAP extension + which clients may use to request the return of all operational + attributes. + + + +Zeilenga LDAP All Op Attrs [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-opattrs-03 17 May 2002 + + +1. Overview + + X.500 [X.500] provides a mechanism for clients to request all + operational attributes be returned with entries provided in response + to a search operation. This mechanism is often used by clients to + discover which operational attributes are present in an entry. + + This documents extends LDAP [RFC2251] to provide a simple mechanism + which clients may use to request the return of all operation + attributes. The mechanism is designed for use with existing general + purpose LDAP clients (including web browsers which support LDAP URLs) + and existing LDAP API. + + 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 BCP 14 [RFC2119]. + + +2. All Operational Attributes + + The presence of the attribute description "+" (ASCII 43) in the list + of attributes in a Search Request SHALL signify a request for the + return of all operational attributes. + + As with all search requests, client implementors should note that + results may not include all requested attributes due to access + controls or other restrictions. Clients implementors should also note + that certain operational attributes may be returned only if requested + by name even when "+" is present. This is because some operational + attributes are very expensive to return. + + Servers supporting this feature SHOULD publish the Object Identifier + 1.3.6.1.4.1.4203.1.5.1 as a value of the supportedFeatures [FEATURES] + attribute in the root DSE. + + +3. Interoperability Considerations + + This mechanism is specifically designed to allow users to request all + operational attributes using existing LDAP clients. In particular, + the mechanism is designed to be compatible with existing general + purpose LDAP clients includes web browsers which support LDAP URLs + [RFC2255]. + + The addition of this mechanism to LDAPv3 is believed not to cause any + significant interoperability issues (this has been confirmed through + testing). Servers which have yet to implement this specification + should ignore the "+" as an unrecognized attribute description per + + + +Zeilenga LDAP All Op Attrs [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-opattrs-03 17 May 2002 + + + [RFC2251, Section 4.5.1]. From the client's perspective, a server + which does not return all operational attributes when "+" is requested + should be viewed as having other restrictions. + + It is also noted that this mechanism is believed to require no + modification of existing LDAP APIs. + + +4. Security Considerations + + This document provides a mechanism which clients may use to discover + operational attributes. Those relying on security by obscurity SHOULD + implement appropriate access controls to restricts access to + operational attributes per local policy. + + +5. IANA Considerations + + No IANA assignments are requested. + + This document uses the OID 1.3.6.1.4.1.4203.1.5.1 to identify the + feature described above. This OID was assigned [ASSIGN] by OpenLDAP + Foundation under its IANA assigned private enterprise allocation + [PRIVATE] for use in this specification. + + +6. Acknowledgment + + The "+" mechanism is believed to have been first suggested by Bruce + Greenblatt in a November 1998 post to the IETF LDAPext Working Group + mailing list. + + +7. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +8. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access + Protocol (v3)", RFC 2251, December 1997. + + + + +Zeilenga LDAP All Op Attrs [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-opattrs-03 17 May 2002 + + + [FEATURES] K. Zeilenga, "Feature Discovery in LDAP", draft-zeilenga- + ldap-features-xx.txt (a work in progress). + + +9. Informative References + + [RFC2255] T. Howes and M. Smith, "The LDAP URL Format", RFC 2255, + December 1997. + + [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, + Models and Service", 1993. + + [ASSIGN] OpenLDAP Foundation, "OpenLDAP OID Delegations", + http://www.openldap.org/foundation/oid-delegate.txt. + + [PRIVATE] IANA, "Private Enterprise Numbers", + http://www.iana.org/assignments/enterprise-numbers. + + +Copyright 2002, The Internet Society. 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 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. + + + + + + + + +Zeilenga LDAP All Op Attrs [Page 4] + diff --git a/doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt b/doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt new file mode 100644 index 0000000000..af3e08f704 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-rfc2596-xx.txt @@ -0,0 +1,787 @@ + + + + + + +INTERNET-DRAFT Editor: Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 1 March 2002 +Obsoletes: RFC 2596 + + + Language Tags and Ranges in LDAP + draft-zeilenga-ldap-rfc2596-01.txt + + +Status of 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 Extensions Working Group + (LDAPext) mailing list <ietf-ldapext@netscape.com>. Please send + editorial comments directly to the document editor + <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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + +Abstract + + It is often desirable to to be able to indicate the natural language + associated with values held in a directory and to be able to query the + directory for values which fulfill the user's language needs. This + document details the use of Language Tags and Ranges in the + Lightweight Directory Access Protocol (LDAP). + + + +Zeilenga Language Tags and Ranges in LDAP [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + +Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14 [RFC2119]. + + +1. Background and Intended Use + + The Lightweight Directory Access Protocol (LDAP) [Roadmap] provides a + means for clients to interrogate and modify information stored in a + distributed directory system. The information in the directory is + maintained as attributes of entries. Most of these attributes have + syntaxes which are human-readable strings, and it is desirable to be + able to indicate the natural language associated with attribute + values. + + This document describes how language tags and ranges [RFC3066] are + carried in LDAP and are to be interpreted by LDAP implementations. + All implementations MUST be prepared to accept language tags and + ranges in the LDAP protocol. + + This document replaces RFC 2596. Appendix A summaries changes made + since RFC 2596. + + Appendix B discusses differences from X.500(1997) "contexts" + mechanism. + + Appendix A and B are provided for information purposes and are not a + normative part of this specification. + + The remainder of this section provides a summary of Language Tags, + Language Ranges, and Attribute Descriptions. + + +1.1. Language Tags + + Section 2 of BCP 47 [RFC3066] describes the language tag format which + is used in LDAP. Briefly, it is a string of ASCII alphabetic + characters and hyphens. Examples include "fr", "en-US" and "ja-JP". + Language tags are case insensitive. For example, the language tag + "en-us" is the same as "EN-US". + + Section 2 of this document details use of language tags in LDAP. + + +1.2. Language Ranges + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + Section 2.5 of BCP 47 [RFC3066] describes the language ranges. + Language ranges are used to specify sets of language tags. + + A language range matches a language tag if it exactly equals the tag, + or if it exactly equals a prefix of the tag such that the first + character following the prefix is "-". The special tag "*" matches + all tags. + + Due to restrictions upon option naming in LDAP, this document uses a + different language range syntax. However, the semantics of language + ranges in LDAP is consistent with BCP 47. + + Section 3 of this document details use of language ranges in LDAP. + + +1.3. Attribute Descriptions + + This section provides an overview of attributes in LDAP. LDAP + attributes are defined in [Models]. + + An attribute consists of a type, a set of zero or more associated + tagging options, and a set of one or more values. The type and the + options are combined into the AttributeDescription. + AttributeDescriptions can also contain options which are not part of + the attribute, but indicate some other function such as the transfer + encoding. + + An attribute with one or more tagging options is a direct subtype of + each attribute of the same with all but one of the tagging options. + If the attribute's type is a direct subtype of some other type, then + the attribute is also a direct subtype of the attribute whose + description consists of the the supertype and all of the tagging + options. That is, CN;x-bar;x-foo is a direct subtype of CN;x-bar, + CN;x-foo, and name;x-bar;x-foo. Note that CN is a subtype of name. + + If the attribute description contains an unrecognized option, the + attribute description is treated as an unrecognized attribute type. + + As language tags are intended to stored with the attribute, they are + to treated as tagging options as described in Section 2. Language + range are used only to match against language ranges and are not + stored with the attribute. They are not treated tagging options (nor + as transfer options), but as described in Section 3. + + +2. Use of Language Tags in LDAP + + This section describes how LDAP implementations MUST interpret + + + +Zeilenga Language Tags and Ranges in LDAP [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + language tags in performing operations. + + Servers which support storing attributes with language tag options in + the Directory Information Tree (DIT) SHOULD allow any attribute type + it recognizes that has the Directory String, IA5 String, or other + textual string syntax to have language tag options associated with it. + Servers MAY allow language options to be associated with other + attributes types. + + Clients SHOULD NOT assume servers are capable of storing attributes + with language tags in the directory. + + Implementations MUST NOT otherwise interpret the structure of the tag + when comparing two tag, and MUST treat them simply as strings of + characters. Implementations MUST allow any arbitrary string which + conforms to the syntax defined in BCP 47 [RFC3066] to be used as a + language tag. + + +2.1. Language Tag Options + + A language tag option associates a natural language with values of an + attribute. An attribute description MAY contain multiple language tag + options. An entry MAY contain multiple attributes with same attribute + type but different combinations of language tag (and other) options. + + A language tag option conforms to the following ABNF [RFC2234]: + + language-tag-option = "lang-" Language-Tag + + where the Language-Tag production is as defined in BCP 47 [RFC3066]. + This production and those it imports from [RFC2234] are provided here + for convenience: + + Language-Tag = Primary-subtag *( "-" Subtag ) + + Primary-subtag = 1*8ALPHA + + Subtag = 1*8(ALPHA / DIGIT) + + ALPHA = %x41-5A / %x61-7A ; A-Z / a-z + + DIGIT = %x30-39 ; 0-9 + + A language tag option is a tagging option [Models]. A language tag + option has no effect on the syntax of the attribute's values nor their + transfer encoding. + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 4] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + Examples of valid AttributeDescription: + + givenName;lang-en-US + CN;lang-ja + SN;lang-de;lang-gem-PFL + O;lang-i-klingon;x-foobar + description;x-foobar + CN + + Notes: The last two have no language tag options. The x-foobar option + is fictious and used for example purposes. + + +2.2. Search Filter + + If language tag options are present in an AttributeDescription in an + assertion, then for each entry within scope, the values of each + attribute whose AttributeDescription consists of the same attribute + type or its subtypes and contains each of the presented (and possibly + other) options is to be matched. + + Thus for example a filter of an equality match of type + "name;lang-en-US" and assertion value "Billy Ray", against the + following directory entry + + dn: SN=Ray,DC=example,DC=com + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-en-US: Billy Ray MATCHES + name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-US: Billy Ray MATCHES + CN;lang-en-US;x-foobar: Billy Ray MATCHES + CN;lang-en;x-foobar: Billy Ray DOES NOT MATCH (differing lang-) + CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-) + name: Billy Ray DOES NOT MATCH (no lang-) + SN;lang-en-GB;lang-en-US: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (no lang-, + wrong value) + + (Note that "CN" and "SN" are subtypes of "name".) + + It is noted that providing a language tag option in a search filter + AttributeDescription will filter out desirable values where the tag + does not match exactly. For example, the filter (name;lang-en=Billy + Ray) does NOT match the attribute "name;lang-en-US: Billy Ray". + + If the server does not support storing attributes with language tag + options in the DIT, then any assertion which includes a language tag + + + +Zeilenga Language Tags and Ranges in LDAP [Page 5] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + option will not match as such it is an unrecognized attribute type. + No error would be returned because of this; a presence assertion would + evaluate to FALSE and all other assertions to Undefined. + + If no options are specified in the assertion, then only the base + attribute type and the assertion value need match the value in the + directory. + + Thus for example a filter of an equality match of type "name" and + assertion value "Billy Ray", against the following directory entry + + dn: SN=Ray,DC=example,DC=net + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-en-US: Billy Ray MATCHES + name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-US;x-foobar: Billy Ray MATCHES + CN;lang-en;x-foobar: Billy Ray MATCHES + CN;x-foobar: Billy Ray MATCHES + name: Billy Ray MATCHES + SN;lang-en-GB;lang-en-US: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (wrong value) + + +2.3. Requested Attributes in Search + + Clients can provide language tag options in AttributeDescription in + the requested attribute list in a search request. + + If language tag options are provided in an attribute description, then + only attributes in a directory entry whose attribute descriptions have + the same attribute type or its subtype and the provided language tags + options are to be returned. Thus if a client requests just the + attribute "name;lang-en", the server would return "name;lang-en" and + "CN;lang-en;lang-ja" but not "SN" nor "name;lang-fr". + + Clients can provide in the attribute list multiple + AttributeDescription which have the same base attribute type but + different options. For example a client could provide both + "name;lang-en" and "name;lang-fr", and this would permit an attribute + with either language tag option to be returned. Note there would be + no need to provide both "name" and "name;lang-en" since all subtypes + of name would match "name". + + If a server does not support storing attributes with language tag + options in the DIT, then any attribute descriptions in the list which + include language tag options are to be ignored, just as if they were + unknown attribute types. + + + +Zeilenga Language Tags and Ranges in LDAP [Page 6] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + If a request is made specifying all attributes or an attribute is + requested without providing a language tag option, then all attribute + values regardless of their language tag option are returned. + + For example, if the client requests a "description" attribute, and a + matching entry contains the following attributes: + + objectclass: top + objectclass: organization + O: Software GmbH + description: software + description;lang-en: software products + description;lang-de: Softwareprodukte + postalAddress: Berlin 8001 Germany + postalAddress;lang-de: Berlin 8001 Deutschland + + The server would return: + + description: software + description;lang-en: software products + description;lang-de: Softwareprodukte + + +2.4. Compare + + Language tag options can be present in an AttributeDescription used in + a compare request AttributeValueAssertion. This is to be treated by + servers the same as the use of language tag options in a search filter + with an equality match, as described in Section 2.2. If there is no + attribute in the entry with the same subtype and language tag options, + the noSuchAttributeType error will be returned. + + Thus for example a compare request of type "name" and assertion value + "Johann", against an entry containing the following attributes: + + objectclass: top + objectclass: person + givenName;lang-de-DE: Johann + CN: Johann Sibelius + SN: Sibelius + + would cause the server to return compareTrue. + + However, if the client issued a compare request of type "name;lang-de" + and assertion value "Johann" against the above entry, the request + would fail with the noSuchAttributeType error. + + If the server does not support storing attributes with language tag + + + +Zeilenga Language Tags and Ranges in LDAP [Page 7] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + options in the DIT, then any comparison which includes a language tag + option will always fail to locate an attribute, and + noSuchAttributeType will be returned. + + + 2.5. Add Operation + + Clients can provide language options in AttributeDescription in + attributes of a new entry to be created. + + A client can provide multiple attributes with the same attribute type + and value, so long as each attribute has a different set of language + tag options. + + For example, the following is a legal request. + + dn: CN=John Smith,DC=example,DC=com + objectclass: top + objectclass: person + objectclass: residentialPerson + name: John Smith + CN: John Smith + CN;lang-en: John Smith + SN: Smith + SN;lang-en;lang-en-US: Smith + streetAddress: 1 University Street + streetAddress;lang-en: 1 University Street + streetAddress;lang-fr: 1 rue Universite + houseIdentifier;lang-fr: 9e etage + + If a server does not support storing language tag options with + attribute values in the DIT, then it MUST treat an + AttributeDescription with a language tag option as an unrecognized + attribute. If the server forbids the addition of unrecognized + attributes then it MUST fail the add request with an appropriate + result code. + + +2.6. Modify Operation + + A client can provide language tag options in an AttributeDescription + as part of a modification element in the modify operation. + + Attribute types and language tag options MUST match exactly against + values stored in the directory. For example, if the modification is a + "delete", then if the stored values to be deleted have language tag + options, then those language tag options MUST be provided in the + modify operation, and if the stored values to be deleted do not have + + + +Zeilenga Language Tags and Ranges in LDAP [Page 8] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + any language tag option, then no language tag option is to be + provided. + + If the server does not support storing language tag options with + attribute values in the DIT, then it MUST treat an + AttributeDescription with a language tag option as an unrecognized + attribute, and MUST fail the request with an appropriate result code. + + +3. Use of Language Ranges in LDAP + + Since the publication of RFC 2596, it has become apparent that there + is a need to provide a mechanism for a client to request attributes + based upon set of language tag options whose tags all begin with the + same sequence of language sub-tags. + + AttributeDescriptions containing language range options are intended + to be used in attribute value assertions, search attribute lists, and + other places where the client desires to provide an attribute + description matching of a range of language tags associated with + attributes. + + A language range option conforms to the following ABNF [RFC2234]: + + language-range-option = "lang-" [ Language-Tag "-" ] + + where the Language-Tag production is as defined in BCP 47 [RFC3066]. + This production and those it imports from [RFC2234] are provided here + for convenience: + + Language-Tag = Primary-subtag *( "-" Subtag ) + + Primary-subtag = 1*8ALPHA + + Subtag = 1*8(ALPHA / DIGIT) + + ALPHA = %x41-5A / %x61-7A ; A-Z / a-z + + DIGIT = %x30-39 ; 0-9 + + A language range option matches a language tag option if language + range option less the trailing "-" matches exactly the language tag or + if the language range option (including the trailing "-") matches a + prefix of the language tag option. Note that the language range + option "lang-" matches all language tag options. + + Examples of valid AttributeDescription containing language range + options: + + + +Zeilenga Language Tags and Ranges in LDAP [Page 9] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + givenName;lang-en- + CN;lang- + O;lang-x-;x-foobar + + A language range option is not a tagging option. Attributes cannot be + stored with language range options. Any attempt to add or update an + attribute description with a language range option SHALL be treated as + an undefined attribute type and result in an error. + + A language range option has no effect on the transfer encoding nor on + the syntax of the attribute values. + + Servers SHOULD support assertion of language ranges for any attribute + which they allow to stored with language tags. + + +3.1. Search Filter + + If a language range option is present in an AttributeDescription in an + assertion, then for each entry within scope, the values of each + attribute whose AttributeDescription consists of the same attribute + type or its subtypes and contains a language tag option matching the + language range option are to be returned. + + Thus for example a filter of an equality match of type "name;lang-en-" + and assertion value "Billy Ray", against the following directory entry + + dn: SN=Ray,DC=example,DC=com + objectclass: top DOES NOT MATCH (wrong type) + objectclass: person DOES NOT MATCH (wrong type) + name;lang-en-US: Billy Ray MATCHES + name;lang-en-US: Billy Bob DOES NOT MATCH (wrong value) + CN;lang-en-US: Billy Ray MATCHES + CN;lang-en-US;x-foobar: Billy Ray MATCHES + CN;lang-en;x-foobar: Billy Ray MATCHES + CN;x-foobar: Billy Ray DOES NOT MATCH (no lang-) + name: Billy Ray DOES NOT MATCH (no lang-) + SN;lang-en-GB;lang-en-US: Billy Ray MATCHES + SN: Ray DOES NOT MATCH (no lang-, + wrong value) + + (Note that "CN" and "SN" are subtypes of "name".) + + If the server does not support storing attributes with language tag + options in the DIT, then any assertion which includes a language range + option will not match as it is an unrecognized attribute type. No + error would be returned because of this; a presence filter would + evaluate to FALSE and all other assertions to Undefined. + + + +Zeilenga Language Tags and Ranges in LDAP [Page 10] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + +3.2. Requested Attributes in Search + + Clients can provide language range options in AttributeDescription in + the requested attribute list in a search request. + + If a language range option is provided in an attribute description, + then only attributes in a directory entry whose attribute descriptions + have the same attribute type or its subtype and a language tag option + matching the provided language range option are to be returned. Thus + if a client requests just the attribute "name;lang-en-", the server + would return "name;lang-en-US" and "CN;lang-en;lang-ja" but not "SN" + nor "name;lang-fr". + + Clients can provide in the attribute list multiple + AttributeDescription which have the same base attribute type but + different options. For example a client could provide both + "name;lang-en-" and "name;lang-fr-", and this would permit an + attribute whose type was name or subtype of name and with a language + tag option matching either language range option to be returned. + + If a server does not support storing attributes with language tag + options in the DIT, then any attribute descriptions in the list which + include language range options are to be ignored, just as if they were + unknown attribute types. + + +3.3. Compare + + Language range options can be present in an AttributeDescription used + in a compare request AttributeValueAssertion. This is to be treated + by servers the same as the use of language range options in a search + filter with an equality match, as described in Section 3.1. If there + is no attribute in the entry with the same subtype and a matching + language tag option, the noSuchAttributeType error will be returned. + + Thus for example a compare request of type "name;lang-" and assertion + value "Johann", against the entry with the following attributes: + + objectclass: top + objectclass: person + givenName;lang-de-DE: Johann + CN: Johann Sibelius + SN: Sibelius + + will cause the server to return compareTrue. (Note that the language + range option "lang-" matches any language tag option.) + + However, if the client issued a compare request of type "name;lang-de" + + + +Zeilenga Language Tags and Ranges in LDAP [Page 11] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + and assertion value "Sibelius" against the above entry, the request + would fail with the noSuchAttributeType error. + + If the server does not support storing attributes with language tag + options in the DIT, then any comparison which includes a language + range option will always fail to locate an attribute, and + noSuchAttributeType will be returned. + + +4. Discovering Language Option Support + + A server SHOULD indicate that it supports storing attributes with + language tag options in the DIT by publishing OID.TDB as a value of + the supportedFeatures [FEATURES] attribute in the root DSE. + + A server SHOULD indicate that it supports language range matching of + attributes with language tag options stored in the DIT by publishing + OID.TDB as a value of the supportedFeatures [FEATURES] attribute in + the root DSE. + + A server MAY restrict use of language tag options to a subset of the + attribute types it recognizes. This document does not define a + mechanism for determining which subset of attribute types can be used + with language tag options. + + +5. Security Considerations + + Language tags and range options are used solely to indicate the native + language of values and in querying the directory for values which + fulfill the user's language needed. These options are not known to + raise specific security considerations. However, the reader should + consider general directory security issues detailed in the LDAP + technical specification [Roadmap]. + + +6. Acknowledgments + + This document is a revision of RFC 2596 by Mark Wahl and Tim Howes. + RFC 2596 was a product of the IETF ASID and LDAPEXT working groups. + + This document borrows from a number of IETF documents including BCP + 47. + + +7. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + + + +Zeilenga Language Tags and Ranges in LDAP [Page 12] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + [RFC2234] D. Crocker, P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", RFC 2234, November 1997. + + [RFC3066] Alvestrand, H., "Tags for the Identification of Languages", + BCP 47 (also RFC 3066), January 2001. + + [Roadmap] K. Zeilenga (editor), "LDAP: Technical Specification Road + Map", draft-ietf-ldapbis-roadmap-xx.txt, a work in + progress. + + [Models] K. Zeilenga (editor), "LDAP: Directory Information Models", + draft-ietf-ldapbis-models-xx.txt, a work in progress. + + [FEATURES] K. Zeilenga, "Feature Discovery in LDAP", + draft-zeilenga-ldap-features-xx.txt (a work in progress). + + +8. Informative References + + [X.501] "The Directory: Models", ITU-T Recommendation X.501, 1997. + + +Appendix A. Differences from RFC 2596 + + This document adds support for language ranges, provides a mechanism + that a client can use to discover whether a server supports language + tags and ranges, and clarifies how attributes with multiple language + tags are to be treated. This document is a significant rewrite of RFC + 2596. + + +Appendix B. Differences from X.500(1997) + + X.500(1997) [X.501] defines a different mechanism, contexts, as the + means of representing language tags (codes). This section summarizes + the major differences in approach. + + a) An X.500 operation which has specified a language code on a value + matches a value in the directory without a language code. + b) LDAP references BCP 47 [RFC3066], which allows for IANA + registration of new tags as well as unregistered tags. + c) LDAP supports language ranges. + d) LDAP does not allow language tags (and ranges) in distinguished + names. + e) X.500 describes subschema administration procedures to allow + language codes to be associated with particular attributes types. + + + +Zeilenga Language Tags and Ranges in LDAP [Page 13] + +INTERNET-DRAFT draft-zeilenga-ldap-rfc2596-01.txt 1 March 2002 + + +Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Zeilenga Language Tags and Ranges in LDAP [Page 14] + diff --git a/doc/drafts/draft-zeilenga-ldap-subentry-xx.txt b/doc/drafts/draft-zeilenga-ldap-subentry-xx.txt new file mode 100644 index 0000000000..e8eb3ca014 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-subentry-xx.txt @@ -0,0 +1,619 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Date: 17 May 2002 Steven Legg +Expires in six months Adacel Technologies + + + Subentries in LDAP + <draft-zeilenga-ldap-subentry-05.txt> + + +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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + In X.500 directories, subentries are special entries used to hold + information associated with a subtree or subtree refinement. This + document adapts X.500 subentries mechanisms for use with Lightweight + Directory Access Protocol (LDAP). + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 1] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + +Conventions + + Schema definitions are provided using LDAP description formats + [RFC2252]. Definitions provided here are formatted (line wrapped) for + readability. + + Protocol elements are described using ASN.1 [X.680]. The term + "BER-encoded" means the element is to be encoded using the Basic + Encoding Rules [X.690] under the restrictions detailed in Section 5.1 + of [RFC2251]. + + 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 BCP 14 [RFC2119]. + + +1. Overview + + From [X.501]: + A subentry is a special kind of entry immediately subordinate to + an administrative point. It contains attributes that pertain to a + subtree (or subtree refinement) associated with its administrative + point. The subentries and their administrative point are part of + the same naming context. + + A single subentry may serve all or several aspects of + administrative authority. Alternatively, a specific aspect of + administrative authority may be handled through one or more of its + own subentries. + + Subentries in Lightweight Directory Access Protocol (LDAP) [LDAPTS] + SHALL behave in accordance with X.501 unless noted otherwise in this + specification. + + In absence of the subentries control (detailed in Section 3), + subentries SHALL NOT be considered in one-level and subtree scope + search operations. For all other operations, including base scope + search operations, subentries SHALL be considered. + + +2. Subentry Schema + +2.1. Subtree Specification Syntax + + The Subtree Specification syntax provides a general purpose mechanism + for the specification of a subset of entries in a subtree of the + Directory Information Tree (DIT). A subtree begins at some base entry + and includes the subordinates of that entry down to some identified + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 2] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + lower boundary, possibly extending to the leaf entries. A subtree + specification is always used within a context or scope which + implicitly determines the bounds of the subtree. For example, the + scope of a subtree specification for a subschema administrative area + does not include the subtrees of any subordinate administrative point + entries for subschema administration. Where a subtree specification + does not identify a contiguous subset of the entries within a single + subtree the collection is termed a subtree refinement. + + This syntax corresponds to the SubtreeSpecification ASN.1 type + described in [X.501], Section 11.3. This ASN.1 data type definition + is reproduced here for completeness. + + SubtreeSpecification ::= SEQUENCE { + base [0] LocalName DEFAULT { }, + COMPONENTS OF ChopSpecification, + specificationFilter [4] Refinement OPTIONAL } + + + LocalName ::= RDNSequence + + ChopSpecification ::= SEQUENCE { + specificExclusions [1] SET OF CHOICE { + chopBefore [0] LocalName, + chopAfter [1] LocalName } OPTIONAL, + minimum [2] BaseDistance DEFAULT 0, + maximum [3] BaseDistance OPTIONAL} + + BaseDistance ::= INTEGER (0 .. MAX) + + Refinement ::= CHOICE { + item [0] OBJECT-CLASS.&id, + and [1] SET OF Refinement, + or [2] SET OF Refinement, + not [3] Refinement } + + The components of SubtreeSpecification are: base, which identifies the + base entry of the subtree or subtree refinement, and + specificExclusions, minimum, maximum and specificationFilter, which + then reduce the set of subordinate entries of the base entry. The + subtree or subtree refinement contains all the entries within scope + that are not excluded by any of the components of the subtree + specification. When all of the components of SubtreeSpecification are + absent (i.e. when a value of the Subtree Specification syntax is the + empty sequence, {}), the subtree so specified implicitly includes all + the entries within scope. + + Any particular use of this mechanism MAY impose limitations or + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 3] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + constraints on the components of SubtreeSpecification. + + The LDAP syntax specification is: + + ( 1.3.6.1.4.1.1466.115.121.1.45 DESC 'SubtreeSpecification' ) + + The native LDAP encoding of values of this syntax is defined by the + Generic String Encoding Rules [GSER]. Appendix A provides an + equivalent ABNF for this syntax. + + +2.1.1. Base + + The base component of SubtreeSpecification nominates the base entry of + the subtree or subtree refinement. The base entry may be an entry + which is subordinate to the root entry of the scope in which the + subtree specification is used, in which case the base component + contains a sequence of RDNs relative to the root entry of the scope, + or may be the root entry of the scope itself (the default), in which + case the base component is absent or contains an empty sequence of + RDNs. + + Entries that are not subordinates of the base entry are excluded from + the subtree or subtree refinement. + + +2.1.2. Specific Exclusions + + The specificExclusions component of a ChopSpecification is a list of + exclusions that specify entries and their subordinates to be excluded + from the the subtree or subtree refinement. The entry is specified by + a sequence of RDNs relative to the base entry (i.e. a LocalName). + Each exclusion is of either the chopBefore or chopAfter form. If the + chopBefore form is used then the specified entry and its subordinates + are excluded from the subtree or subtree refinement. If the chopAfter + form is used then only the subordinates of the specified entry are + excluded from the subtree or subtree refinement. + + +2.1.3. Minimum and Maximum + + The minimum and maximum components of a ChopSpecification allow the + exclusion of entries based on their depth in the DIT. + + Entries that are less than the minimum number of RDN arcs below the + base entry are excluded from the subtree or subtree refinement. A + minimum value of zero (the default) corresponds to the base entry. + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 4] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + Entries that are more than the maximum number of RDN arcs below the + base entry are excluded from the subtree or subtree refinement. An + absent maximum component indicates that there is no upper limit on the + number of RDN arcs below the base entry for entries in the subtree or + subtree refinement. + +2.1.4. Specification Filter + + The specificationFilter component is a boolean expression of + assertions about the values of the objectClass attribute of the base + entry and its subordinates. A Refinement assertion item evaluates to + true for an entry if that entry's objectClass attribute contains the + OID nominated in the assertion. Entries for which the overall filter + evaluates to false are excluded from the subtree refinement. If the + specificationFilter is absent then no entries are excluded from the + subtree or subtree refinement because of their objectClass attribute + values. + + +2.2. Administrative Role Attribute Type + + The Administrative Model defined in [X.501], clause 10 requires that + administrative entries contain an administrativeRole attribute to + indicate that the associated administrative area is concerned with one + or more administrative roles. + + The administrativeRole operational attribute is specified as follows: + + ( 2.5.18.5 NAME 'administrativeRole' + EQUALITY objectIdentifierMatch + USAGE directoryOperation + SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 ) + + The possible values of this attribute defined in X.501 are: + + OID NAME + -------- ------------------------------- + 2.5.23.1 autonomousArea + 2.5.23.2 accessControlSpecificArea + 2.5.23.3 accessControlInnerArea + 2.5.23.4 subschemaAdminSpecificArea + 2.5.23.5 collectiveAttributeSpecificArea + 2.5.23.6 collectiveAttributeInnerArea + + Other values may be defined in other specifications. Names associated + with each administrative role are Object Identifier Descriptors + [LDAPIANA]. + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 5] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + The administrativeRole operational attribute is also used to regulate + the subentries permitted to be subordinate to an administrative entry. + A subentry not of a class permitted by the administrativeRole + attribute cannot be subordinate to the administrative entry. + + +2.3. Subtree Specification Attribute Type + + The subtreeSpecification operational attribute is defined as follows: + + ( 2.5.18.6 NAME 'subtreeSpecification' + SINGLE-VALUE + USAGE directoryOperation + SYNTAX 1.3.6.1.4.1.1466.115.121.1.45 ) + + This attribute is present in all subentries. See [X.501], clause 10. + Values of the subtreeSpecification attribute nominate collections of + entries within the DIT for one or more aspects of administrative + authority. + + +2.4. Subentry Object Class + + The subentry object class is a structural object class. + + ( 2.5.20.0 NAME 'subentry' + SUP top STRUCTURAL + MUST ( cn $ subtreeSpecification ) ) + + +3. Subentries Control + + The subentries control MAY be sent with a searchRequest to control the + visibility of entries and subentries which are within scope. + Non-visible entries or subentries are not returned in response to the + request. + + The subentries control is an LDAP Control whose controlType is + 1.3.6.1.4.1.4203.1.10.1, criticality is TRUE or FALSE (hence absent), + and controlValue contains a BER-encoded BOOLEAN indicating visibility. + A controlValue containing the value TRUE indicates that subentries are + visible and normal entries are not. A controlValue containing the + value FALSE indicates that normal entries are visible and subentries + are not. + + Note that TRUE visibility has the three octet encoding { 01 01 FF } + and FALSE visibility has the three octet encoding { 01 01 00 }. + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 6] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + The controlValue SHALL NOT be absent. + + In absence of this control, subentries are not visible to singleLevel + and wholeSubtree scope Search requests but are visible to baseObject + scope Search requests. + + There is no corresponding response control. + + This control is not appropriate for non-Search operations. + + +4. Security Considerations + + Subentries often hold administrative information or other sensitive + information and should be protected from unauthorized access and + disclosure as described in [RFC2829][RFC2830]. + + General LDAP [LDAPTS] security considerations also apply. + + +5. IANA Considerations + +5.1 Descriptors + + It is requested that IANA register the LDAP descriptors used in this + document per the following registration template: + + Subject: Request for LDAP Descriptor Registration + Descriptor (short name): see comment + Object Identifier: see comment + Person & email address to contact for further information: + Kurt Zeilenga <kurt@OpenLDAP.org> + Usage: see comment + Specification: RFCXXXX + Author/Change Controller: IESG + Comments: + + NAME Type OID + ------------------------ ---- -------- + accessControlInnerArea R 2.5.23.3 + accessControlSpecificArea R 2.5.23.2 + administrativeRole A 2.5.18.5 + autonomousArea R 2.5.23.1 + collectiveAttributeInnerArea R 2.5.23.6 + collectiveAttributeSpecificArea R 2.5.23.5 + subentry O 2.5.20.0 + subschemaAdminSpecificArea R 2.5.23.4 + subtreeSpecification A 2.5.18.6 + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 7] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + where Type A is Attribute, Type O is ObjectClass, and Type R is + Administrative Role. + + +5.2 Object Identifiers + + No IANA assignment of object identifiers is requested. + + This document uses the OID 1.3.6.1.4.1.4203.1.10.1 to identify an LDAP + protocol element defined herein. This OID was assigned [ASSIGN] by + OpenLDAP Foundation under its IANA assigned private enterprise + allocation [PRIVATE] for use in this specification. + + Other OIDs which appear in this document were either assigned by the + ISO/IEC Joint Technical Committee 1 - Subcommitte 6 to identify + elements of X.500 schema or assigned in RFC 2252 for the use described + here. + + +6. Acknowledgment + + This document is based on engineering done by IETF LDUP and LDAPext + Working Groups including "LDAP Subentry Schema" by Ed Reed. This + document also borrows from a number of ITU documents including X.501. + + +7. Authors' Addresses + + Kurt D. Zeilenga + OpenLDAP Foundation + + Email: Kurt@OpenLDAP.org + + Steven Legg + Adacel Technologies Ltd. + 405-409 Ferntree Gully Road + Mount Waverley, Victoria 3149 + AUSTRALIA + + Phone: +61 3 9451 2107 + Fax: +61 3 9541 2121 + EMail: steven.legg@adacel.com.au + + +8. Normative References + + [X.501] ITU-T, "The Directory -- Models," X.501, 1993. + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 8] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + [X.680] ITU-T, "Abstract Syntax Notation One (ASN.1) - + Specification of Basic Notation", X.680, 1994. + + [X.690] ITU-T, "Specification of ASN.1 encoding rules: Basic, + Canonical, and Distinguished Encoding Rules", X.690, 1994. + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (was RFC 2119), 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. + + [RFC2829] M. Wahl, H. Alvestrand, J. Hodges, R. Morgan, + "Authentication Methods for LDAP", RFC 2829, May 2000 + + [RFC2830] J. Hodges, R. Morgan, M. Wahl, "Lightweight Directory + Access Protocol (v3): Extension for Transport Layer + Security", RFC 2830, May 2000. + + [LDAPTS] J. Hodges, R.L. Morgan, "Lightweight Directory Access + Protocol (v3): Technical Specification", + draft-ietf-ldapbis-ldapv3-ts-xx.txt, a work in progress. + + [GSER] S. Legg, "Generic String Encoding Rules for ASN.1 Types", + draft-legg-ldapext-gser--xx.txt, a work in progress. + + [LDAPIANA] K. Zeilenga, "IANA Considerations for LDAP", draft-ietf- + ldapbis-iana-xx.txt, a work in progress. + + +9. Informative References + + [RFC2234] D. Crocker, P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", RFC 2234, November 1997. + + [GCE] S. Legg, "Common Elements of GSER Encodings", + draft-legg-ldap-gser-abnf-xx.txt, a work in progress. + + [ASSIGN] OpenLDAP Foundation, "OpenLDAP OID Delegations", + http://www.openldap.org/foundation/oid-delegate.txt. + + [PRIVATE] IANA, "Private Enterprise Numbers", + http://www.iana.org/assignments/enterprise-numbers. + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 9] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + +A. Subtree Specification ABNF + + This appendix is non-normative. + + The LDAP-specific native string encoding for the Subtree Specification + syntax is specified by the Generic String Encoding Rules [GSER]. The + ABNF [RFC2234] in this appendix for this syntax is provided only as a + convenience and is equivalent to the encoding specified by the + application of [GSER]. Since the SubtreeSpecification ASN.1 type may + be extended in future editions of [X.501], the provided ABNF should be + regarded as a snapshot in time. The native LDAP encoding for any + extension to the SubtreeSpecification ASN.1 type can be determined + from [GSER]. + + In the event that there is a discrepancy between this ABNF and the + encoding determined by [GSER], [GSER] is to be taken as definitive. + + SubtreeSpecification = "{" [ sp base ] + [ sep sp specificExclusions ] + [ sep sp minimum ] + [ sep sp maximum ] + [ sep sp specificationFilter ] + sp "}" + + base = id-base msp LocalName + specificExclusions = id-specificExclusions msp SpecificExclusions + minimum = id-minimum msp BaseDistance + maximum = id-maximum msp BaseDistance + specificationFilter = id-specificationFilter msp Refinement + + id-base = %x62.61.73.65 ; "base" + id-specificExclusions = %x73.70.65.63.69.66.69.63.45.78.63.6C.75.73 + %x69.6F.6E.73 ; "specificExclusions" + id-minimum = %x6D.69.6E.69.6D.75.6D ; "minimum" + id-maximum = %x6D.61.78.69.6D.75.6D ; "maximum" + id-specificationFilter = %x73.70.65.63.69.66.69.63.61.74.69.6F.6E.46 + %x69.6C.74.65.72 ; "specificationFilter" + + SpecificExclusions = "{" sp SpecificExclusion + *( "," sp SpecificExclusion ) sp "}" + SpecificExclusion = chopBefore / chopAfter + chopBefore = id-chopBefore ":" LocalName + chopAfter = id-chopAfter ":" LocalName + id-chopBefore = %x63.68.6F.70.42.65.66.6F.72.65 ; "chopBefore" + id-chopAfter = %x63.68.6F.70.41.66.74.65.72 ; "chopAfter" + + Refinement = item / and / or / not + item = id-item ":" OBJECT-IDENTIFIER + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 10] + +INTERNET-DRAFT Subentries in LDAP 17 May 2002 + + + and = id-and ":" Refinements + or = id-or ":" Refinements + not = id-not ":" Refinement + Refinements = "{" [ sp Refinement + *( "," sp Refinement ) ] sp "}" + id-item = %x69.74.65.6D ; "item" + id-and = %x61.6E.64 ; "and" + id-or = %x6F.72 ; "or" + id-not = %x6E.6F.74 ; "not" + + BaseDistance = INTEGER + + The <sp>, <msp>, <sep>, <INTEGER>, <OBJECT-IDENTIFIER> and <LocalName> + rules are defined in [GCE]. + + +Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + + +Zeilenga draft-zeilenga-ldap-subentry-05 [Page 11] + diff --git a/doc/drafts/draft-zeilenga-ldap-t-f-02.txt b/doc/drafts/draft-zeilenga-ldap-t-f-02.txt new file mode 100644 index 0000000000..4ef977c070 --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-t-f-02.txt @@ -0,0 +1,227 @@ + + + + + + +INTERNET-DRAFT Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 + + + + LDAP True/False Filters + <draft-zeilenga-ldap-t-f-02.txt> + + +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 Extensions 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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + This document extends the Lightweight Directory Access Protocol (LDAP) + to support absolute True and False filters based upon similar + capabilities found in X.500 directory systems. The document also + extends the String Representation of LDAP Search Filters to support + these filters. + + + +Zeilenga LDAP True/False Filters [Page 1] + +INTERNET-DRAFT draft-zeilenga-ldap-t-f-02.txt 17 May 2002 + + +1. Background and Intended Use + + The X.500 Directory Access Protocol (DAP) [X.511] supports absolute + True and False assertions. An 'and' filter with zero elements always + evaluates to True. An 'or' filter with zero elements always evaluates + to False. These filters are commonly used when requesting DSA- + specific Entries (DSEs) which do not necessarily have objectClass + attributes. That is, where "(objectClass=*)" may evaluate to False. + + While LDAPv2 [RFC1777] placed no restriction on the number of elements + in 'and' and 'or' filter sets, the LDAPv2 string representation + [RFC1960] could not represent empty 'and' and 'or' filter sets. Due + to this, LDAPv3 [RFC2251] required 'and' and 'or' filter sets to have + at least one element. Hence, LDAPv3 does not provide absolute True or + False filters. + + This documents extends LDAPv3 [RFC2251] to support absolute True and + False matches by allowing empty 'and' and 'or' and extends the filter + string representation [RFC2254] to allow empty filter lists. + + 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 BCP 14 [RFC2119]. + + +2. Absolute True and False Filters + + Implementations of this extension SHALL allow 'and' and 'or' choices + with zero filter elements. + + An 'and' Filter consisting of an empty set of filters SHALL evaluate + to True. This filter is to represented by the string "(&)". + + An 'or' Filter consisting of an empty set of filters SHALL evaluate to + False. This filter is to represented by the string "(|)". + + Servers supporting this feature SHOULD publish the Object Identifier + 1.3.6.1.4.1.4203.1.5.3 as a value of the supportedFeatures [FEATURES] + attribute in the root DSE. + + Clients supporting this feature SHOULD NOT use the feature unless they + have knowledge the server supports it. + + +3. Security Considerations + + The (re)introduction of absolute True and False filters does not raise + any new security considerations. + + + +Zeilenga LDAP True/False Filters [Page 2] + +INTERNET-DRAFT draft-zeilenga-ldap-t-f-02.txt 17 May 2002 + + + Implementors of this (or any) LDAP extension should be familiar with + general LDAP general security considerations [LDAPTS]. + + +4. IANA Considerations + + No IANA assignments are requested. + + This document uses the OID 1.3.6.1.4.1.4203.1.5.3 to identify the + feature described above. This OID was assigned [ASSIGN] by OpenLDAP + Foundation under its IANA assigned private enterprise allocation + [PRIVATE] for use in this specification. + + +5. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +6. Normative References + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access + Protocol (v3)", RFC 2251, December 1997. + + [RFC2254] T. Howes, "A String Representation of LDAP Search Filters", + RFC 2254, December 1997. + + [LDAPTS] J. Hodges, R. Morgan, "Lightweight Directory Access + Protocol (v3): Technical Specification", + draft-ietf-ldapbis-ldapv3-ts-xx.txt (a work in progress). + + [FEATURES] K. Zeilenga, "Feature Discovery in LDAP", + draft-zeilenga-ldap-features-xx.txt (a work in progress). + + +7. Informative References + + [RFC1777] Yeong, W., Howes, T., and S. Kille, "Lightweight Directory + Access Protocol", RFC 1777, March 1995. + + [RFC1960] T. Howes, "A String Representation of LDAP Search Filters", + RFC 1960, June 1996. + + + + +Zeilenga LDAP True/False Filters [Page 3] + +INTERNET-DRAFT draft-zeilenga-ldap-t-f-02.txt 17 May 2002 + + + [X.500] ITU-T Rec. X.500, "The Directory: Overview of Concepts, + Models and Service", 1993. + + [X.511] ITU-T Rec. X.511, "The Directory: Abstract Service + Definition", 1993. + + [ASSIGN] OpenLDAP Foundation, "OpenLDAP OID Delegations", + http://www.openldap.org/foundation/oid-delegate.txt. + + [PRIVATE] IANA, "Private Enterprise Numbers", + http://www.iana.org/assignments/enterprise-numbers. + + + +Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + + + + +Zeilenga LDAP True/False Filters [Page 4] + diff --git a/doc/drafts/draft-zeilenga-ldap-user-schema-xx.txt b/doc/drafts/draft-zeilenga-ldap-user-schema-xx.txt new file mode 100644 index 0000000000..34390d437c --- /dev/null +++ b/doc/drafts/draft-zeilenga-ldap-user-schema-xx.txt @@ -0,0 +1,1123 @@ + + + + + + +INTERNET-DRAFT Editor: Kurt D. Zeilenga +Intended Category: Standard Track OpenLDAP Foundation +Expires in six months 17 May 2002 +Obsoletes: RFC 1274 +Updates: RFC 2798 + + + LDAPv3: A Collection of User Schema + <draft-zeilenga-ldap-user-schema-06.txt> + + +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 Directory Interest mailing list + <directory@apps.ietf.org>. 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 2002, The Internet Society. All Rights Reserved. + + Please see the Copyright section near the end of this document for + more information. + + +Abstract + + This document provides a collection of user schema elements for use + with LDAP (Lightweight Directory Access Protocol) from both ITU-T + Recommendations for the X.500 Directory and COSINE and Internet X.500 + pilot projects. + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 1] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + +Conventions + + Schema definitions are provided using LDAPv3 description formats + [RFC2252]. Definitions provided here are formatted (line wrapped) for + readability. + + 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 BCP 14 [RFC2119]. + + +Table of Contents (to be expanded by editor) + + Status of this Memo 1 + Abstract + Conventions 2 + Table of Contents + 1. Background and Intended Use 3 + 2. Matching Rules + 2.1. booleanMatch 4 + 2.2. caseExactMatch + 2.3. caseExactOrderingMatch + 2.4. caseExactSubstringsMatch + 2.5. caseIgnoreListSubstringsMatch + 2.6. directoryStringFirstComponentMatch 5 + 2.7. integerOrderingMatch + 2.8. keywordMatch + 2.9. numericStringOrderingMatch 6 + 2.10. octetStringOrderingMatch + 2.11. storedPrefixMatch + 2.12. wordMatch 7 + 3. Attribute Types + 3.1. associatedDomain + 3.2. associatedName + 3.3. buildingName + 3.3. co 8 + 3.5. documentAuthor + 3.6. documentIdentifier + 3.7. documentLocation + 3.8. documentPublisher 9 + 3.9. documentTitle + 3.10. documentVersion + 3.11. drink + 3.12. homePhone 10 + 3.13. homePostalAddress + 3.14. host + 3.16. info + 3.17. mail 11 + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 2] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + 3.18. manager + 3.19. mobile + 3.20. organizationalStatus + 3.21. otherMailbox 12 + 3.22. pager + 3.23. personalTitle + 3.24. roomNumber 13 + 3.25. secretary + 3.26. uid + 3.27. uniqueIdentifier + 3.28. userClass 14 + 4. Object Classes + 4.1. account + 4.2. document 15 + 4.3. documentSeries + 4.4. domainRelatedObject + 4.5. friendlyCountry + 4.6. rFC822LocalPart 16 + 4.7. room + 4.8. simpleSecurityObject + 5. Security Considerations 17 + 6. IANA Considerations + 7. Acknowledgments 19 + 8. Author's Address + 9. Normative References + 10. Informative References + Full Copyright 20 + + +1. Background and Intended Use + + This document provides descriptions [RFC2252] of user schema for use + with LDAP [LDAPTS] collected from numerous sources. + + This document includes a summary of select schema introduced for the + COSINE and Internet X.500 pilot projects [RFC1274]. This document + obsoletes RFC 1274. + + This document includes a summary of X.500 user schema [X.520] not + previously specified for use with LDAP. Some of these items were + described in the inetOrgPerson [RFC2798] schema. This document + supersedes these descriptions, replacing sections 9.1.3 and 9.3.3 of + RFC 2798. + + +2. Matching Rules + + This section introduces LDAP matching rules based upon descriptions of + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 3] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + their X.500 counterparts. + + +2.1. booleanMatch + + BooleanMatch compares for equality a asserted Boolean value with an + attribute value of BOOLEAN syntax. The rule returns TRUE if and only + if the values are the same, i.e. both are TRUE or both are FALSE. + (Source: X.520) + + ( 2.5.13.13 NAME 'booleanMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + + +2.2. caseExactMatch + + CaseExactMatch compares for equality the asserted value with an + attribute value of DirectoryString syntax. The rule is identical to + the caseIgnoreMatch [RFC2252] rule except that case is not ignored. + (Source: X.520) + + ( 2.5.13.5 NAME 'caseExactMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +2.3. caseExactOrderingMatch + + CaseExactOrderingMatch compares the collation order of the asserted + string with an attribute value of DirectoryString syntax. The rule is + identical to the caseIgnoreOrderingMatch [RFC2252] rule except that + letters are not folded. (Source: X.520) + + ( 2.5.13.6 NAME 'caseExactOrderingMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +2.4. caseExactSubstringsMatch + + CaseExactSubstringsMatch determines whether the asserted value(s) are + substrings of an attribute value of DirectoryString syntax. The rule + is identical to the caseIgnoreSubstringsMatch [RFC2252] rule except + that case is not ignored. (Source: X.520) + + ( 2.5.13.7 NAME 'caseExactSubstringsMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 ) + + +2.5. caseIgnoreListSubstringsMatch + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 4] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + CaseIgnoreListSubstringMatch compares the asserted substring with an + attribute value which is a sequence of DirectoryStrings, but where the + case (upper or lower) is not significant for comparison purposes. The + asserted value matches a stored value if and only if the asserted + value matches the string formed by concatenating the strings of the + stored value. This matching is done according to the + caseIgnoreSubstringsMatch [RFC2252] rule; however, none of the + initial, any, or final values of the asserted value are considered to + match a substring of the concatenated string which spans more than one + of the strings of the stored value. (Source: X.520) + + ( 2.5.13.12 NAME 'caseIgnoreListSubstringsMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 ) + + +2.6. directoryStringFirstComponentMatch + + DirectoryStringFirstComponentMatch compares for equality the asserted + DirectoryString value with an attribute value of type SEQUENCE whose + first component is mandatory and of type DirectoryString. The rule + returns TRUE if and only if the attribute value has a first component + whose value matches the asserted DirectoryString using the rules of + caseIgnoreMatch [RFC2252]. A value of the assertion syntax is derived + from a value of the attribute syntax by using the value of the first + component of the SEQUENCE. (Source: X.520) + + ( 2.5.13.31 NAME 'directoryStringFirstComponentMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +2.7. integerOrderingMatch + + The integerOrderingMatch rule compares the ordering of the asserted + integer with an attribute value of Integer syntax. The rule returns + True if the attribute value is less than the asserted value. (Source: + X.520) + + ( 2.5.13.15 NAME 'integerOrderingMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + + +2.8. keywordMatch + + The keywordMatch rule compares the asserted string with keywords in an + attribute value of DirectoryString syntax. The rule returns TRUE if + and only if the asserted value matches any keyword in the attribute + value. The identification of keywords in an attribute value and of + the exactness of match are both implementation specific. (Source: + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 5] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + X.520) + + ( 2.5.13.32 NAME 'keywordMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +2.9. numericStringOrderingMatch + + NumericStringOrderingMatch compares the collation order of the + asserted string with an attribute value of NumericString syntax. The + rule is identical to the caseIgnoreOrderingMatch [RFC2252] rule except + that all space characters are skipped during comparison (case is + irrelevant as characters are numeric). (Source: X.520) + + ( 2.5.13.9 NAME 'numericStringOrderingMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 ) + + +2.10. octetStringOrderingMatch + + OctetStringOrderingMatch compares the collation order of the asserted + octet string with an attribute value of OCTET STRING syntax. The rule + compares octet strings from first octet to last octet, and from the + most significant bit to the least significant bit within the octet. + The first occurrence of a different bit determines the ordering of the + strings. A zero bit precedes a one bit. If the strings are identical + but contain different numbers of octets, the shorter string precedes + the longer string. (Source: X.520) + + ( 2.5.13.18 NAME 'octetStringOrderingMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) + + +2.11. storedPrefixMatch + + StoredPrefixMatch determines whether an attribute value, whose syntax + is DirectoryString, is a prefix (i.e. initial substring) of the + asserted value, without regard to the case (upper or lower) of the + strings. The rule returns TRUE if and only if the attribute value is + an initial substring of the asserted value with corresponding + characters identical except possibly with regard to case. (Source: + X.520) + + ( 2.5.13.41 NAME 'storedPrefixMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + Note: This rule can be used, for example, to compare values in the + Directory which are telephone area codes with a purported value + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 6] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + which is a telephone number. + + +2.12. wordMatch + + The wordMatch rule compares the asserted string with words in an + attribute value of DirectoryString syntax. The rule returns TRUE if + and only if the asserted word matches any word in the attribute value. + Individual word matching is as for the caseIgnoreMatch [RFC2252] + matching rule. The precise definition of a "word" is implementation + specific. (Source: X.520) + + ( 2.5.13.32 NAME 'wordMatch' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +3. Attribute Types + + This section details attribute types for use in LDAP. + + +3.1. associatedDomain + + The associatedDomain attribute type specifies a DNS domain [RFC1034] + which is associated with an object. For example, the entry in the DIT + with a distinguished name "DC=example,DC=com" might have an associated + domain of "example.com". (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + + +3.2. associatedName + + The associatedName attribute type specifies an entry in the + organizational DIT associated with a DNS domain [RFC1034]. (Source: + RFC 1274) + + ( 0.9.2342.19200300.100.1.38 NAME 'associatedName' + EQUALITY distinguishedNameMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) + + +3.3. buildingName + + The buildingName attribute type specifies the name of the building + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 7] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + where an organization or organizational unit is based. (Source: RFC + 1274) + + ( 0.9.2342.19200300.100.1.48 NAME 'buildingName' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.3. co + + The co (Friendly Country Name) attribute type specifies names of + countries in human readable format. It is commonly used in + conjunction with the c (Country Name) [RFC2256] attribute type (which + restricted to one of the two-letter codes defined in [ISO3166]). + (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.43 + NAME ( 'co' 'friendlyCountryName' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +3.5. documentAuthor + + The documentAuthor attribute type specifies the distinguished name of + the author of a document. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' + EQUALITY distinguishedNameMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) + + +3.6. documentIdentifier + + The documentIdentifier attribute type specifies a unique identifier + for a document. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.7. documentLocation + + The documentLocation attribute type specifies the location of the + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 8] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + document original. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.8. documentPublisher + + The documentPublisher attribute is the person and/or organization that + published a document. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +3.9. documentTitle + + The documentTitle attribute type specifies the title of a document. + (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.10. documentVersion + + The documentVersion attribute type specifies the version number of a + document. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.11. drink + + The drink (Favourite Drink) attribute type specifies the favorite + drink of an object (or person). (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.5 NAME ( 'drink' 'favouriteDrink' ) + EQUALITY caseIgnoreMatch + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 9] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.12. homePhone + + The homePhone (Home Telephone Number) attribute type specifies a home + telephone number (e.g., "+44 71 123 4567") associated with a person. + (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.20 + NAME ( 'homePhone' 'homeTelephoneNumber' ) + EQUALITY telephoneNumberMatch + SUBSTR telephoneNumberSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) + + +3.13. homePostalAddress + + The homePostalAddress attribute type specifies a home postal address + for an object. This SHOULD be limited to up to 6 lines of 30 + characters each. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.39 + NAME 'homePostalAddress' + EQUALITY caseIgnoreListMatch + SUBSTR caseIgnoreListSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) + + +3.14. host + + The host attribute type specifies a host computer. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.9 + NAME 'host' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.16. info + + The info (Information) attribute type specifies any general + information pertinent to an object. It is RECOMMENDED that specific + usage of this attribute type is avoided, and that specific + requirements are met by other (possibly additional) attribute types. + Note that the description attribute type [RFC2256] is available for + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 10] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + specifying descriptive information pertinent to an object. (Source: + RFC 1274) + + ( 0.9.2342.19200300.100.1.4 + NAME 'info' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} ) + + +3.17. mail + + The mail (rfc822mailbox) attribute type holds an the electronic mail + address in [RFC822] form (e.g.: user@example.com). Note that this + attribute SHOULD NOT be used to hold non-Internet addresses. (Source: + RFC 1274) + + + ( 0.9.2342.19200300.100.1.3 + NAME ( 'mail' 'rfc822Mailbox' ) + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + + +3.18. manager + + The Manager attribute type specifies the manager of an object + represented by an entry. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.10 + NAME 'manager' + EQUALITY distinguishedNameMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) + + +3.19. mobile + + The mobile (Mobile Telephone Number) attribute type specifies a mobile + telephone number (e.g., "+44 71 123 4567") associated with a person. + (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.41 + NAME ( 'mobile' 'mobileTelephoneNumber' ) + EQUALITY telephoneNumberMatch + SUBSTR telephoneNumberSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) + + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 11] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + +3.20. organizationalStatus + + The organizationalStatus attribute type specifies a category by which + a person is often referred to in an organization. Examples of usage + in academia might include undergraduate student, researcher, lecturer, + etc. + + A Directory administrator SHOULD consider carefully the distinctions + between this and the title and userClass attributes. (Source: RFC + 1274) + + ( 0.9.2342.19200300.100.1.45 + NAME 'organizationalStatus' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.21. otherMailbox + + The otherMailbox attribute type specifies values for electronic + mailbox types other than X.400 and RFC822. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.22 + NAME 'otherMailbox' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.39 ) + + +3.22. pager + + The pager (Pager Telephone Number) attribute type specifies a pager + telephone number (e.g., "+44 71 123 4567") for an object. (Source: + RFC 1274) + + ( 0.9.2342.19200300.100.1.42 + NAME ( 'pager' 'pagerTelephoneNumber' ) + EQUALITY telephoneNumberMatch + SUBSTR telephoneNumberSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) + + +3.23. personalTitle + + The personalTitle attribute type specifies a personal title for a + person. Examples of personal titles are "Frau", "Dr", "Herr", and + "Prof". (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.40 + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 12] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + NAME 'personalTitle' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.24. roomNumber + + The roomNumber attribute type specifies the room number of an object. + Note that the cn (commonName) attribute type SHOULD be used for naming + room objects. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.6 + NAME 'roomNumber' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.25. secretary + + The secretary attribute type specifies the secretary of a person. The + attribute value for Secretary is a distinguished name. (Source: RFC + 1274) + + ( 0.9.2342.19200300.100.1.21 + NAME 'secretary' + EQUALITY distinguishedNameMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 ) + + +3.26. uid + + The uid (userid) attribute type specifies a computer system login + name. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.1 + NAME ( 'uid' 'userid' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +3.27. uniqueIdentifier + + The Unique Identifier attribute type specifies a "unique identifier" + for an object represented in the Directory. The domain within which + the identifier is unique, and the exact semantics of the identifier, + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 13] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + are for local definition. For a person, this might be an institution- + wide payroll number. For an organizational unit, it might be a + department code. An attribute value for uniqueIdentifier is a + directoryString. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + Note: X.520 describes an attribute also called 'uniqueIdentifier' + (2.5.4.45) which is called 'x500UniqueIdentifier' in LDAP + [RFC2256]. The attribute detailed here ought not be confused + with x500UniqueIdentifier. + + +3.28. userClass + + The userClass attribute type specifies a category of computer user. + The semantics placed on this attribute are for local interpretation. + Examples of current usage od this attribute in academia are + undergraduate student, researcher, lecturer, etc. Note that the + organizationalStatus attribute type is now often be preferred as it + makes no distinction between computer users and others. (Source: RFC + 1274) + + ( 0.9.2342.19200300.100.1.8 NAME 'userClass' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + + +4. Object Classes + + This section details object classes for use in LDAP. + + +4.1. account + + The account object class is used to define entries representing + computer accounts. The uid (userid) attribute SHOULD be used for + naming entries of this object class. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.5 + NAME 'account' + SUP top STRUCTURAL + MUST uid + MAY ( description $ seeAlso $ l $ o $ ou $ host ) ) + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 14] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + +4.2. document + + The document object class is used to define entries which represent + documents. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.6 + NAME 'document' + SUP top STRUCTURAL + MUST documentIdentifier + MAY ( cn $ description $ seeAlso $ l $ o $ ou $ + documentTitle $ documentVersion $ documentAuthor $ + documentLocation $ documentPublisher ) ) + + +4.3. documentSeries + + The documentSeries object class is used to define an entry which + represents a series of documents (e.g., The Request For Comments + memos). (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.9 + NAME 'documentSeries' + SUP top STRUCTURAL + MUST cn + MAY ( description $ l $ o $ ou $ seeAlso $ + telephonenumber ) ) + + +4.4. domainRelatedObject + + The domainRelatedObject object class is used to define entries which + represent DNS domains which are "equivalent" to an X.500 domain: e.g., + an organization or organizational unit. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.17 + NAME 'domainRelatedObject' + SUP top AUXILIARY + MUST associatedDomain ) + + +4.5. friendlyCountry + + The friendlyCountry object class is used to define country entries in + the DIT. The object class is used to allow friendlier naming of + countries than that allowed by the object class country [RFC2256]. + (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.18 + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 15] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + NAME 'friendlyCountry' + SUP country STRUCTURAL + MUST co ) + + +4.6. rFC822LocalPart + + The rFC822LocalPart object class is used to define entries which + represent the local part of [RFC822] mail addresses. This treats this + part of an RFC 822 address as a domain [RFC2247]. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.14 + NAME 'rFC822localPart' + SUP domain STRUCTURAL + MAY ( cn $ description $ destinationIndicator $ + facsimileTelephoneNumber $ internationaliSDNNumber $ + physicalDeliveryOfficeName $ postalAddress $ + postalCode $ postOfficeBox $ preferredDeliveryMethod $ + registeredAddress $ seeAlso $ sn $ street $ + telephoneNumber $ teletexTerminalIdentifier $ + telexNumber $ x121Address ) ) + + +4.7. room + + The room object class is used to define entries representing rooms. + The cn (commonName) attribute SHOULD be used for naming entries of + this object class. (Source: RFC 1274) + + ( 0.9.2342.19200300.100.4.7 NAME 'room' + SUP top STRUCTURAL + MUST cn + MAY ( roomNumber $ description $ + seeAlso $ telephoneNumber ) ) + + +4.8. simpleSecurityObject + + The simpleSecurityObject object class is used to require an entry to + have a userPassword attribute when the entry's structural object class + does not require (or allow) the userPassword attribute. (Source: RFC + 1274) + + + ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' + SUP top AUXILIARY + MUST userPassword ) + + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 16] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + Note: Security considerations related to the use of simple + authentication mechanisms in LDAP are discussed in RFC 2829 + [RFC2829]. + + +5. Security Considerations + + General LDAP security considerations [LDAPTS] is applicable to the use + of this schema. Additional considerations are noted above where + appropriate. + + +6. IANA Considerations + + It is requested that IANA update the LDAP descriptors registry as + indicated the following template: + + Subject: Request for LDAP Descriptor Registration Update + Descriptor (short name): see comment + Object Identifier: see comment + Person & email address to contact for further information: + Kurt Zeilenga <kurt@OpenLDAP.org> + Usage: see comment + Specification: RFCXXXX + Author/Change Controller: IESG + Comments: + + The following descriptors should be added: + + NAME Type OID + ------------------------ ---- --------- + booleanMatch M 2.5.13.13 + caseExactMatch M 2.5.13.5 + caseExactOrderingMatch M 2.5.13.6 + caseExactSubstringsMatch M 2.5.13.7 + caseIgnoreListSubstringsMatch M 2.5.13.12 + directoryStringFirstComponentMatch M 2.5.13.31 + integerOrderingMatch M 2.5.13.15 + keywordMatch M 2.5.13.32 + numericStringOrderingMatch M 2.5.13.9 + octetStringOrderingMatch M 2.5.13.18 + storedPrefixMatch M 2.5.13.41 + wordMatch M 2.5.13.32 + + The following descriptors should be updated to refer to RFC XXXX. + + NAME Type OID + ------------------------ ---- -------------------------- + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 17] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + account O 0.9.2342.19200300.100.4.5 + associatedDomain A 0.9.2342.19200300.100.1.37 + associatedName A 0.9.2342.19200300.100.1.38 + buildingName A 0.9.2342.19200300.100.1.48 + co A 0.9.2342.19200300.100.1.43 + document O 0.9.2342.19200300.100.4.6 + documentAuthor A 0.9.2342.19200300.100.1.14 + documentIdentifier A 0.9.2342.19200300.100.1.11 + documentLocation A 0.9.2342.19200300.100.1.15 + documentPublisher A 0.9.2342.19200300.100.1.56 + documentSeries O 0.9.2342.19200300.100.4.8 + documentTitle A 0.9.2342.19200300.100.1.12 + documentVersion A 0.9.2342.19200300.100.1.13 + domainRelatedObject O 0.9.2342.19200300.100.4.17 + drink A 0.9.2342.19200300.100.1.5 + favouriteDrink A 0.9.2342.19200300.100.1.5 + friendlyCountry O 0.9.2342.19200300.100.4.18 + friendlyCountryName A 0.9.2342.19200300.100.1.43 + homePhone A 0.9.2342.19200300.100.1.20 + homePostalAddress A 0.9.2342.19200300.100.1.39 + homeTelephone A 0.9.2342.19200300.100.1.20 + host A 0.9.2342.19200300.100.1.9 + info A 0.9.2342.19200300.100.1.4 + mail A 0.9.2342.19200300.100.1.3 + manager A 0.9.2342.19200300.100.1.10 + mobile A 0.9.2342.19200300.100.1.41 + mobileTelephoneNumber A 0.9.2342.19200300.100.1.41 + organizationalStatus A 0.9.2342.19200300.100.1.45 + otherMailbox A 0.9.2342.19200300.100.1.22 + pager A 0.9.2342.19200300.100.1.42 + pagerTelephoneNumber A 0.9.2342.19200300.100.1.42 + personalTitle A 0.9.2342.19200300.100.1.40 + RFC822LocalPart O 0.9.2342.19200300.100.4.14 + RFC822Mailbox A 0.9.2342.19200300.100.1.3 + room O 0.9.2342.19200300.100.4.7 + roomNumber A 0.9.2342.19200300.100.1.6 + secretary A 0.9.2342.19200300.100.1.21 + simpleSecurityObject O 0.9.2342.19200300.100.4.19 + singleLevelQuality A 0.9.2342.19200300.100.1.50 + uid A 0.9.2342.19200300.100.1.1 + uniqueIdentifier A 0.9.2342.19200300.100.1.44 + userClass A 0.9.2342.19200300.100.1.8 + userId A 0.9.2342.19200300.100.1.1 + + where Type A is Attribute, Type O is ObjectClass, and Type M + is Matching Rule. + + + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 18] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + + This document make no OID assignments, it only associates LDAP schema + descriptions with existing elements of X.500 schema. + + +7. Acknowledgments + + This document borrows from a number of IETF documents including RFC + 1274 by Paul Barker and Steve Kille. This document also borrows from + a number of ITU documents including X.520. + + +8. Author's Address + + Kurt D. Zeilenga + OpenLDAP Foundation + <Kurt@OpenLDAP.org> + + +9. Normative References + + [RFC822] D. Crocker, "Standard for the format of ARPA Internet text + messages", STD 11 (also RFC 822), August 1982. + + [RFC1034] P.V. Mockapetris, "Domain names - concepts and facilities", + STD 13 (also RFC 1034), November 1987. + + [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14 (also RFC 2119), March 1997. + + [RFC2247] S. Kille, M. Wahl, A. Grimstad, R. Huber, S. Sataluri, + "Using Domains in LDAP/X.500 Distinguished Names", January + 1998. + + [RFC2252] M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight + Directory Access Protocol (v3): Attribute Syntax + Definitions", RFC 2252, December 1997. + + [RFC2256] M. Wahl, "A Summary of the X.500(96) User Schema for use + with LDAPv3", RFC 2256, December 1997. + + [RFC2829] M. Wahl, H. Alvestrand, J. Hodges, R. Morgan, + "Authentication Methods for LDAP", RFC 2829, May 2000. + + [LDAPTS] J. Hodges, R. Morgan, "Lightweight Directory Access Protocol + (v3): Technical Specification", draft-ietf-ldapbis- + ldapv3-ts-00.txt. + + + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 19] + +INTERNET-DRAFT LDAPv3: A Collection of User Schema 17 May 2002 + + +10. Informative References + + [ISO3166] International Standards Organization, "Codes for the + representation of names of countries", ISO 3166. + + [RFC1274] P. Barker, S. Kille, "The COSINE and Internet X.500 Schema", + November 1991. + + [RFC2798] M. Smith, "The LDAP inetOrgPerson Object Class", RFC 2798, + April 2000. + + [X.520] International Telephone Union, "The Directory: Selected + Attribute Types", X.520, 1997. + + +Full Copyright + + Copyright 2002, The Internet Society. 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 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. + + + + + + + + + + +Zeilenga draft-zeilenga-ldap-user-schema-06 [Page 20] + -- GitLab