3 draft-legg-ldap-acm-bac-03.txt Adacel Technologies
4 Intended Category: Standards Track June 16, 2004
8 Lightweight Directory Access Protocol (LDAP):
9 Basic and Simplified Access Control
11 Copyright (C) The Internet Society (2004). All Rights Reserved.
16 This document is an Internet-Draft and is in full conformance with
17 all provisions of Section 10 of RFC2026.
19 Internet-Drafts are working documents of the Internet Engineering
20 Task Force (IETF), its areas, and its working groups. Note that
21 other groups may also distribute working documents as
24 Internet-Drafts are draft documents valid for a maximum of six months
25 and may be updated, replaced, or obsoleted by other documents at any
26 time. It is inappropriate to use Internet-Drafts as reference
27 material or to cite them other than as "work in progress".
29 The list of current Internet-Drafts can be accessed at
30 http://www.ietf.org/ietf/1id-abstracts.txt
32 The list of Internet-Draft Shadow Directories can be accessed at
33 http://www.ietf.org/shadow.html.
35 Distribution of this document is unlimited. Comments should be sent
38 This Internet-Draft expires on 16 December 2004.
43 An access control scheme describes the means by which access to
44 directory information and potentially to access rights themselves may
45 be controlled. This document adapts the X.500 directory Basic Access
46 Control and Simplied Access Control schemes for use by the
47 Lightweight Directory Access Protocol.
53 Legg Expires 16 December 2004 [Page 1]
55 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
61 2. Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . 3
62 3. Basic Access Control . . . . . . . . . . . . . . . . . . . . . 4
63 3.1. Permissions. . . . . . . . . . . . . . . . . . . . . . . 5
64 3.1.1. Read . . . . . . . . . . . . . . . . . . . . . . 5
65 3.1.2. Compare. . . . . . . . . . . . . . . . . . . . . 6
66 3.1.3. Browse . . . . . . . . . . . . . . . . . . . . . 6
67 3.1.4. ReturnDN . . . . . . . . . . . . . . . . . . . . 6
68 3.1.5. FilterMatch. . . . . . . . . . . . . . . . . . . 6
69 3.1.6. Modify . . . . . . . . . . . . . . . . . . . . . 6
70 3.1.7. Add. . . . . . . . . . . . . . . . . . . . . . . 6
71 3.1.8. Remove . . . . . . . . . . . . . . . . . . . . . 7
72 3.1.9. DiscloseOnError. . . . . . . . . . . . . . . . . 7
73 3.1.10. Rename . . . . . . . . . . . . . . . . . . . . . 7
74 3.1.11. Export . . . . . . . . . . . . . . . . . . . . . 7
75 3.1.12. Import . . . . . . . . . . . . . . . . . . . . . 8
76 3.1.13. Invoke . . . . . . . . . . . . . . . . . . . . . 8
77 3.2. Representation of Access Control Information . . . . . . 8
78 3.2.1. Identification Tag . . . . . . . . . . . . . . . 11
79 3.2.2. Precedence . . . . . . . . . . . . . . . . . . . 11
80 3.2.3. Authentication Level . . . . . . . . . . . . . . 11
81 3.2.4. itemFirst and userFirst Components . . . . . . . 12
82 3.2.5. Determining Group Membership . . . . . . . . . . 16
83 3.3. ACI Operational Attributes . . . . . . . . . . . . . . . 17
84 3.3.1. Prescriptive ACI . . . . . . . . . . . . . . . . 17
85 3.3.2. Entry ACI. . . . . . . . . . . . . . . . . . . . 17
86 3.3.3. Subentry ACI . . . . . . . . . . . . . . . . . . 18
87 3.3.4. Protecting the ACI . . . . . . . . . . . . . . . 18
88 3.4. Access Control Decision Points for LDAP Operations . . . 18
89 3.4.1. Common Elements of Procedure . . . . . . . . . . 19
90 3.4.1.1. Alias Dereferencing. . . . . . . . . . 19
91 3.4.1.2. Return of Names in Errors. . . . . . . 19
92 3.4.1.3. Non-disclosure of Entry Existence. . . 20
93 3.4.2. Compare Operation Decision Points. . . . . . . . 20
94 3.4.3. Search Operation Decision Points . . . . . . . . 20
95 3.4.4. Add Operation Decision Points. . . . . . . . . . 23
96 3.4.5. Delete Operation Decision Points . . . . . . . . 24
97 3.4.6. Modify Operation Decision Points . . . . . . . . 24
98 3.4.7. Modify DN Operation Decision Points. . . . . . . 25
99 3.5. Access Control Decision Function . . . . . . . . . . . . 26
100 3.5.1. Inputs . . . . . . . . . . . . . . . . . . . . . 26
101 3.5.2. Tuples . . . . . . . . . . . . . . . . . . . . . 26
102 3.5.3. Discarding Irrelevant Tuples . . . . . . . . . . 27
103 3.5.4. Highest Precedence and Specificity . . . . . . . 28
104 4. Simplified Access Control. . . . . . . . . . . . . . . . . . . 28
105 5. Security Considerations. . . . . . . . . . . . . . . . . . . . 29
109 Legg Expires 16 December 2004 [Page 2]
111 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
114 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 29
115 7. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 29
116 Appendix A. LDAP Specific Encoding for the ACI Item Syntax . . . . 30
117 Normative References . . . . . . . . . . . . . . . . . . . . . . . 39
118 Informative References . . . . . . . . . . . . . . . . . . . . . . 40
119 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 40
120 Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 40
124 An access control scheme describes the means by which access to
125 directory information and potentially to access rights themselves may
126 be controlled. Control of access to information means the prevention
127 of unauthorized detection, disclosure, or modification of that
128 information. The definition of an access control scheme in the
129 context of a Lightweight Directory Access Protocol (LDAP) [RFC3371]
130 directory includes methods to specify Access Control Information
131 (ACI), and to enforce access rights defined by that ACI.
133 This document adapts the X.500 Basic Access Control and Simplied
134 Access Control schemes [X501] for use in LDAP. Both schemes conform
135 to, and make use of, the access control administrative framework for
138 Section 3 describes the Basic Access Control scheme and defines how
139 it applies to LDAP operations [RFC2251].
141 Simplified Access Control is a functional subset of the Basic Access
142 Control scheme. This subset is described in Section 4.
144 As a matter of security policy, an implementation supporting Basic
145 Access Control or Simplified Access Control is permitted to grant or
146 deny any form of access to particular attributes (e.g., password
147 attributes) irrespective of access controls which may otherwise
148 apply. However, since such security policy has no standardized
149 representation, it cannot be propagated in replicated information.
151 This document is derived from, and duplicates substantial portions
152 of, Section 8 of X.501 [X501], and selected extracts from X.511
157 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
158 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
159 document are to be interpreted as described in BCP 14, RFC 2119
165 Legg Expires 16 December 2004 [Page 3]
167 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
170 Schema definitions are provided using LDAP description formats
171 [RFC2252]. Note that the LDAP descriptions have been rendered with
172 additional white-space and line breaks for the sake of readability.
174 3. Basic Access Control
176 This section describes the functionality of the Basic Access Control
179 When Basic Access Control is used, the accessControlScheme
180 operational attribute [ACA] SHALL have the value basic-access-control
183 This LDAP profile for Basic Access Control defines, for every LDAP
184 operation, one or more points at which access control decisions take
185 place. An access control decision will involve a requestor,
186 protected items, and permissions.
188 A requestor is the user requesting the operation. Basic Access
189 Control requires a user's authorization identity to be represented as
190 a distinguished name (with an optional unique identifier). The
191 mapping of the authentication identity to an authorization identity,
192 and the mapping of the authorization identity to a distinguished name
193 and optional unique identifier, are outside the scope of this
196 A protected item is the element of directory information being
197 accessed. The protected items are entries, attributes, attribute
198 values and distinguished names. Access to each protected item can be
199 separately controlled through ACI.
201 A permission is a particular right necessary to complete a portion of
204 The Access Control Information, which is used to make access control
205 decisions, associates protected items and user classes with
206 permissions. ACI is represented in the directory as values of
207 operational attributes with the ACI Item syntax [RFC2252]. Each such
208 value is referred to as an ACI item.
210 The scope of access controls can be a single entry or a collection of
211 entries that are logically related by being within the scope of an
212 access control subentry of an administrative point (see [ACA]).
214 The Access Control Decision Function (ACDF) (Section 3.5) is used to
215 decide whether a particular requestor has a particular access right
216 by virtue of applicable ACI items.
221 Legg Expires 16 December 2004 [Page 4]
223 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
226 Access to DSEs and operational attributes is controlled in the same
227 way as for entries and user attributes.
229 For query purposes, collective attributes [COLLECT] that are
230 associated with an entry are protected precisely as if they were
231 attributes actually stored in that entry.
233 For the purposes of modification, collective attributes are
234 associated with the subentry that holds them, not with entries within
235 the scope of the subentry. Modify-related access controls are
236 therefore not relevant to collective attributes, except when they
237 apply to the collective attribute and its values within the subentry.
241 Access is controlled by granting or denying permissions. Access is
242 allowed only when there is an explicitly provided grant present in
243 the ACI used to make the access control decision. The only default
244 access decision provided in the model is to deny access in the
245 absence of explicit ACI that grants access. All other factors being
246 equal, a denial specified in ACI always overrides a grant.
248 Certain combinations of grants or denials are illogical, but it is
249 the responsibility of directory clients, rather than the directory
250 server, to ensure that such combinations are absent.
252 The decision whether or not to permit access to an entry or its
253 contents is strictly determined by the position of the entry in the
254 Directory Information Tree (DIT), in terms of its distinguished name,
255 and is independent of how the directory server locates that entry.
257 The following sections introduce the permissions by indicating the
258 intent associated with the granting of each. The actual influence of
259 a particular granted permission on access control decisions are,
260 however, determined by the ACDF and the access control decision
261 points for each LDAP operation, described in detail in Section 3.4.
265 If granted for an entry, Read permits the entry to be accessed using
266 LDAP Compare and baseObject Search operations, but does not imply
267 access to all the attributes and values.
269 If granted for an attribute type, Read permits the attribute type to
270 be returned as entry information in a Search result. Read or Browse
271 permission for the entry is a prerequisite.
273 If granted for an attribute value, Read permits the attribute value
277 Legg Expires 16 December 2004 [Page 5]
279 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
282 to be returned as entry information in a Search result. Read or
283 Browse permission for the entry and Read permission for the attribute
284 type are prerequisites.
288 If granted for an attribute type, Compare permits the attribute type
289 to be tested by the assertion in an LDAP Compare operation. Read
290 permission for the entry is a prerequisite.
292 If granted for an attribute value, Compare permits the value to be
293 tested by the assertion in an LDAP Compare operation. Read
294 permission for the entry and Compare permission for the attribute
295 type are prerequisites.
299 If granted for an entry, Browse permits the entry to be accessed by
300 the LDAP Search operation, including baseObject searches, but does
301 not imply access to all the attributes and values.
305 If granted for an entry, ReturnDN allows the distinguished name of
306 the entry to be disclosed in a search result.
310 If granted for an attribute type, Filtermatch permits the attribute
311 type to satisfy a Filter item.
313 If granted for an attribute value, Filtermatch permits the attribute
314 value to satisfy a Filter item. FilterMatch permission for the
315 attribute type is a prerequisite.
319 If granted for an entry, Modify permits the information contained
320 within an entry to be modified by the LDAP Modify operation, subject
321 to controls on the attribute types and values.
325 If granted for an entry, Add permits creation of an entry in the DIT,
326 subject to being able to add all specified attributes and attribute
327 values. Add permission granted for an entry is ineffective if Add
328 permission is not also granted for at least the mandatory attributes
329 and their values. There is no specific "add subordinate permission".
333 Legg Expires 16 December 2004 [Page 6]
335 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
338 Permission to add an entry is controlled using prescriptive ACI.
340 If granted for an attribute type, Add permits adding a new attribute,
341 subject to being able to add all specified attribute values. Add or
342 Modify permission for the entry is a prerequisite.
344 If granted for an attribute value, Add permits adding that value to
345 an existing attribute. Add or Modify permission for the entry is a
350 If granted for an entry, Remove permits the entry to be removed from
351 the DIT regardless of controls on attributes or attribute values
354 If granted for an attribute, Remove permits removing an attribute,
355 subject to being able to remove any explicitly specified attribute
356 values. Remove permission for values not explicitly specified is not
359 If granted for an attribute value, Remove permits the attribute value
360 to be removed from an existing attribute.
362 3.1.9. DiscloseOnError
364 If granted for an entry, DiscloseOnError permits the name of an entry
365 to be disclosed in an error result.
367 If granted for an attribute, DiscloseOnError permits the presence of
368 the attribute to be disclosed by an error.
370 If granted for an attribute value, DiscloseOnError permits the
371 presence of the attribute value to be disclosed by an error.
375 If granted for an entry, Rename permits an entry to be renamed with a
376 new RDN. No permissions are required for the attributes and values
377 altered by the operation, even if they are added or removed as a
378 result of the changes to the RDN.
382 If granted for an entry, Export permits the entry and its
383 subordinates, if any, to be removed from the current location and
384 placed in a new location, subject to the granting of Import
385 permission at the destination.
389 Legg Expires 16 December 2004 [Page 7]
391 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
394 If the last RDN is changed, Rename permission at the current location
399 If granted for an entry, Import permits an entry and its
400 subordinates, if any, to be placed at the location to which the
401 permission applies, subject to the granting of Export permission at
406 Invoke, if granted for an operational attribute, or value thereof,
407 permits the directory server to carry out some function associated
408 with the operational attribute on behalf of the user. The specific
409 function carried out by invocation depends on the attribute. No
410 other permissions are required by user for the operational attribute,
411 or on the entry/subentry that holds it, in order for it to be
414 3.2. Representation of Access Control Information
416 Access Control Information is represented as a set of ACI items,
417 where each ACI item grants or denies permissions in regard to certain
418 specified users and protected items.
420 An ACI item is represented as a value of an operational attribute
421 with the ACI Item syntax (1.3.6.1.4.1.1466.115.121.1.1) [RFC2252].
423 This document updates [RFC2252] by specifying a human-readable
424 LDAP-specific encoding for ACI items. The LDAP-specific encoding of
425 values of the ACI Item syntax is defined by the Generic String
426 Encoding Rules [GSER]. Appendix A provides an equivalent ABNF for
429 For convenience in specifying access control policies, the ACI Item
430 syntax provides the means to identify collections of related items,
431 such as attributes in an entry or all attribute values of a given
432 attribute, and to specify a common protection for them.
434 The ACI Item syntax corresponds to the ACIItem ASN.1 [ASN1] type
435 defined in X.501 [X501]. It is reproduced here for convenience:
437 ACIItem ::= SEQUENCE {
438 identificationTag DirectoryString { ub-tag },
439 precedence Precedence,
440 authenticationLevel AuthenticationLevel,
441 itemOrUserFirst CHOICE {
445 Legg Expires 16 December 2004 [Page 8]
447 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
450 itemFirst [0] SEQUENCE {
451 protectedItems ProtectedItems,
452 itemPermissions SET OF ItemPermission },
453 userFirst [1] SEQUENCE {
454 userClasses UserClasses,
455 userPermissions SET OF UserPermission } } }
457 Precedence ::= INTEGER (0..255)
459 ProtectedItems ::= SEQUENCE {
460 entry [0] NULL OPTIONAL,
461 allUserAttributeTypes [1] NULL OPTIONAL,
462 attributeType [2] SET SIZE (1..MAX) OF
463 AttributeType OPTIONAL,
464 allAttributeValues [3] SET SIZE (1..MAX) OF
465 AttributeType OPTIONAL,
466 allUserAttributeTypesAndValues [4] NULL OPTIONAL,
467 attributeValue [5] SET SIZE (1..MAX) OF
468 AttributeTypeAndValue OPTIONAL,
469 selfValue [6] SET SIZE (1..MAX) OF
470 AttributeType OPTIONAL,
471 rangeOfValues [7] Filter OPTIONAL,
472 maxValueCount [8] SET SIZE (1..MAX) OF
473 MaxValueCount OPTIONAL,
474 maxImmSub [9] INTEGER OPTIONAL,
475 restrictedBy [10] SET SIZE (1..MAX) OF
476 RestrictedValue OPTIONAL,
477 contexts [11] SET SIZE (1..MAX) OF
478 ContextAssertion OPTIONAL,
479 classes [12] Refinement OPTIONAL }
481 MaxValueCount ::= SEQUENCE {
485 RestrictedValue ::= SEQUENCE {
487 valuesIn AttributeType }
489 UserClasses ::= SEQUENCE {
490 allUsers [0] NULL OPTIONAL,
491 thisEntry [1] NULL OPTIONAL,
492 name [2] SET SIZE (1..MAX) OF NameAndOptionalUID OPTIONAL,
493 userGroup [3] SET SIZE (1..MAX) OF NameAndOptionalUID OPTIONAL,
494 -- dn component shall be the name of an
495 -- entry of GroupOfUniqueNames
496 subtree [4] SET SIZE (1..MAX) OF
497 SubtreeSpecification OPTIONAL }
501 Legg Expires 16 December 2004 [Page 9]
503 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
506 NameAndOptionalUID ::= SEQUENCE {
507 dn DistinguishedName,
508 uid UniqueIdentifier OPTIONAL }
510 UniqueIdentifier ::= BIT STRING
512 ItemPermission ::= SEQUENCE {
513 precedence Precedence OPTIONAL,
514 -- defaults to precedence in ACIItem
515 userClasses UserClasses,
516 grantsAndDenials GrantsAndDenials }
518 UserPermission ::= SEQUENCE {
519 precedence Precedence OPTIONAL,
520 -- defaults to precedence in ACIItem
521 protectedItems ProtectedItems,
522 grantsAndDenials GrantsAndDenials }
524 AuthenticationLevel ::= CHOICE {
525 basicLevels SEQUENCE {
526 level ENUMERATED { none(0), simple(1), strong(2) },
527 localQualifier INTEGER OPTIONAL,
528 signed BOOLEAN DEFAULT FALSE },
531 GrantsAndDenials ::= BIT STRING {
532 -- permissions that may be used in conjunction
533 -- with any component of ProtectedItems
536 grantDiscloseOnError (2),
537 denyDiscloseOnError (3),
542 -- permissions that may be used only in conjunction
543 -- with the entry component
557 Legg Expires 16 December 2004 [Page 10]
559 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
564 -- permissions that may be used in conjunction
565 -- with any component, except entry, of ProtectedItems
568 grantFilterMatch (22),
569 denyFilterMatch (23),
573 AttributeTypeAndValue ::= SEQUENCE {
574 type ATTRIBUTE.&id ({SupportedAttributes}),
575 value ATTRIBUTE.&Type ({SupportedAttributes}{@type}) }
577 The SubtreeSpecification and Refinement ASN.1 types are defined in
578 X.501 [X501], and separately described for LDAP [SUBENTRY].
580 The following sections describe the components of ACIItem.
582 3.2.1. Identification Tag
584 identificationTag is used to identify a particular ACI item. This is
585 used to discriminate among individual ACI items for the purposes of
586 protection and administration.
590 Precedence is used to control the relative order in which ACI items
591 are considered during the course of making an access control decision
592 using the ACDF. ACI items having higher precedence values prevail
593 over others with lower precedence values, other factors being equal.
594 Precedence values are integers and are compared as such.
596 3.2.3. Authentication Level
598 AuthenticationLevel defines the minimum requestor authentication
599 level required for this ACI item. It has two forms:
601 1) basicLevels: which indicates the level of authentication,
602 optionally qualified by positive or negative integer
605 2) other: an externally defined measure.
607 When basicLevels is used, an AuthenticationLevel consisting of a
608 level and optional localQualifier SHALL be assigned to the requestor
609 by the directory server according to local policy. For a requestor's
613 Legg Expires 16 December 2004 [Page 11]
615 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
618 authentication level to meet or exceed the minimum requirement, the
619 requestor's level must meet or exceed that specified in the ACI item,
620 and in addition the requestor's localQualifier must be arithmetically
621 greater than or equal to that of the ACI item. Strong authentication
622 of the requestor is considered to exceed a requirement for simple or
623 no authentication, and simple authentication exceeds a requirement
624 for no authentication. For access control purposes, the "simple"
625 authentication level requires at least a password; the case of
626 identification only, with no password supplied, is considered "none".
627 If a localQualifier is not specified in the ACI item, then the
628 requestor need not have a corresponding value (if such a value is
629 present it is ignored).
631 The signed component of basicLevels is ignored for LDAP.
633 When other is used, an appropriate AuthenticationLevel shall be
634 assigned to the requestor by the directory server according to local
635 policy. The form of this AuthenticationLevel and the method by which
636 it is compared with the AuthenticationLevel in the ACI is a local
639 An authentication level associated with an explicit grant indicates
640 the minimum level to which a requestor shall be authenticated in
641 order to be granted access.
643 An authentication level associated with an explicit deny indicates
644 the minimum level to which a requestor shall be authenticated in
645 order not to be denied access. For example, an ACI item that denies
646 access to a particular user class and requires strong authentication
647 will deny access to all requestors who cannot prove, by means of a
648 strongly authenticated identity, that they are not in that user
651 The directory server may base authentication level on factors other
652 than values received in protocol exchanges.
654 3.2.4. itemFirst and userFirst Components
656 Each ACI item contains a choice of itemFirst or userFirst. The
657 choice allows grouping of permissions depending on whether they are
658 most conveniently grouped by user classes or by protected items. The
659 itemFirst and userFirst components are equivalent in the sense that
660 they capture the same access control information; however, they
661 organize that information differently. The choice between them is
662 based on administrative convenience. The subcomponents of itemFirst
663 and userFirst are described below.
665 a) ProtectedItems defines the items to which the specified access
669 Legg Expires 16 December 2004 [Page 12]
671 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
674 controls apply. It is defined as a set selected from the
677 - entry means the entry contents as a whole. It does not
678 necessarily include the information in these entries. This
679 element SHALL be ignored if the classes component is present,
680 since this latter element selects protected entries on the basis
681 of their object class.
683 - allUserAttributeTypes means all user attribute type information
684 associated with the entry, but not values associated with those
687 - allUserAttributeTypesAndValues means all user attribute
688 information associated with the entry, including all values of
691 The allUserAttributeTypes and allUserAttributeTypesAndValues
692 components do not include operational attributes, which MUST be
693 specified on a per attribute basis, using attributeType,
694 allAttributeValues or attributeValue.
696 - attributeType means attribute type information pertaining to
697 specific attributes but not values associated with the type.
699 - allAttributeValues means all attribute value information
700 pertaining to specific attributes.
702 - attributeValue means specific values of specific attribute
705 - selfValue means the attribute values of the specified attribute
706 types that match the distinguished name (and unique identifier)
707 of the requestor. It can only apply in the specific case where
708 the attribute specified is of DN syntax
709 (1.3.6.1.4.1.1466.115.121.1.12) or Name And Optional UID syntax
710 (1.3.6.1.4.1.1466.115.121.1.34) [RFC2252].
712 - rangeOfValues means any attribute value which matches the
713 specified filter, i.e., for which the specified filter evaluated
714 on that attribute value would return TRUE. The filter is not
715 evaluated on any entries in the DIB, rather it is evaluated
716 using the semantics defined in 7.8 of [X511], operating on a
717 fictitious entry that contains only the single attribute value
718 which is the protected item. Note that the filter is an X.500
719 search Filter. It has a different syntax from the LDAP search
720 Filter, but the same semantics.
725 Legg Expires 16 December 2004 [Page 13]
727 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
730 The following items provide constraints that may disable the
731 granting of certain permissions to protected items in the same
732 value of ProtectedItems:
734 - maxValueCount restricts the maximum number of attribute values
735 allowed for a specified attribute type. It is examined if the
736 protected item is an attribute value of the specified type and
737 the permission sought is Add. Values of that attribute in the
738 entry are counted, without regard to attribute options and
739 access control, as though the operation which is attempting to
740 add the values is successful. If the number of values in the
741 attribute exceeds maxCount, the ACI item is treated as not
742 granting Add permission.
744 - maxImmSub restricts the maximum number of immediate subordinates
745 of the superior entry to an entry being added or imported. It
746 is examined if the protected item is an entry, the permission
747 sought is Add or Import, and the immediate superior entry is in
748 the same server as the entry being added or imported. Immediate
749 subordinates of the superior entry are counted, without regard
750 to access control, as though the entry addition or importing is
751 successful. If the number of subordinates exceeds maxImmSub,
752 the ACI item is treated as not granting Add or Import
755 - restrictedBy restricts values added to the attribute type to
756 being values that are already present in the same entry as
757 values of the attribute identified by the valuesIn component.
758 It is examined if the protected item is an attribute value of
759 the specified type and the permission sought is Add. Values of
760 the valuesIn attribute are checked, without regard to attribute
761 options and access control, as though the operation which adds
762 the values is successful. If the value to be added is not
763 present in valuesIn the ACI item is treated as not granting Add
766 - contexts is not used in this version of the LDAP profile for
767 Basic Access Control.
769 - classes means the contents of entries that have object class
770 values that satisfy the predicate defined by Refinement (see
773 b) UserClasses defines a set of zero or more users the permissions
774 apply to. The set of users is selected from the following:
776 - allUsers means every directory user (with possible requirements
777 for AuthenticationLevel).
781 Legg Expires 16 December 2004 [Page 14]
783 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
786 - thisEntry means the user with the same distinguished name as the
787 entry being accessed.
789 - name is the set of users with the specified distinguished names
790 (each with an optional unique identifier).
792 - userGroup is the set of users who are members of the groups
793 (i.e., groupOfNames or groupOfUniqueNames entries [RFC2256])
794 identified by the specified distinguished names (each with an
795 optional unique identifier). Members of a group of unique names
796 are treated as individual user distinguished names, and not as
797 the names of other groups of unique names. How group membership
798 is determined is described in 5.2.5.
800 - subtree is the set of users whose distinguished names fall
801 within the scope of the unrefined subtrees (specificationFilter
802 components SHOULD NOT be used - they SHALL be ignored if
805 c) SubtreeSpecification is used to specify a subtree relative to the
806 root DSE, and is not constrained by administrative areas. The
807 specificationFilter component SHOULD NOT be used. It SHALL be
810 A subtree refinement is not allowed because membership in a
811 subtree whose specification includes only base and/or a
812 ChopSpecification can be evaluated in isolation, whereas
813 membership in a subtree definition using specificationFilter can
814 only be evaluated by obtaining information from the user's entry,
815 which is potentially in another directory server. Basic Access
816 Control is designed to avoid remote operations in the course of
817 making an access control decision.
819 d) ItemPermission contains a collection of users and their
820 permissions with respect to ProtectedItems within an itemFirst
821 specification. The permissions are specified in grantsAndDenials
822 as discussed in item f). Each of the permissions specified in
823 grantsAndDenials is considered to have the precedence level
824 specified in precedence for the purpose of the ACDF. If
825 precedence is omitted within ItemPermission, then precedence is
826 taken from the precedence specified for ACIItem.
828 e) UserPermission contains a collection of protected items and the
829 associated permissions with respect to userClasses within a
830 userFirst specification. The associated permissions are specified
831 in grantsAndDenials as discussed in item f). Each of the
832 permissions specified in grantsAndDenials is considered to have
833 the precedence level specified in precedence for the purpose of
837 Legg Expires 16 December 2004 [Page 15]
839 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
842 the ACDF. If precedence is omitted within UserPermission, the
843 precedence is taken from the precedence specified for ACIItem.
845 f) GrantsAndDenials specify the access rights that are granted or
846 denied by the ACI item.
848 g) UniqueIdentifier may be used by the authentication mechanism to
849 distinguish between instances of distinguished name reuse. If
850 this component is present, then for a requestor's name to match
851 the UserClasses of an ACIItem that grants permissions, in addition
852 to the requirement that the requestor's distinguished name match
853 the specified distinguished name, the authentication of the
854 requestor shall yield an associated unique identifier, and that
855 value shall match for equality with the specified value.
857 3.2.5. Determining Group Membership
859 Determining whether a given requestor is a group member requires
860 checking two criteria. The determination may also be constrained if
861 the group definition is not known locally. The criteria for
862 membership and the treatment of non-local groups are discussed below.
864 a) A directory server is not required to perform a remote operation
865 to determine whether the requestor belongs to a particular group
866 for the purposes of Basic Access Control. If membership in the
867 group cannot be evaluated, the server shall assume that the
868 requestor does not belong to the group if the ACI item grants the
869 permission sought, and does belong to the group if it denies the
872 Access control administrators should beware of basing access
873 controls on membership of non-locally available groups or groups
874 which are available only through replication (and which may,
875 therefore, be out of date).
877 b) In order to determine whether the requestor is a member of a
878 userGroup user class, the following criteria apply:
880 - The entry named by the userGroup specification is an instance of
881 the object class groupOfNames or groupOfUniqueNames.
883 - The name of the requestor is a value of the member or
884 uniqueMember attribute of that entry.
886 Values of the member or uniqueMember attribute that do not match
887 the name of the requestor are ignored, even if they represent the
888 names of groups of which the originator could be found to be a
889 member. Hence, nested groups are not supported when evaluating
893 Legg Expires 16 December 2004 [Page 16]
895 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
900 3.3. ACI Operational Attributes
902 ACI is stored as values of operational attributes of entries and
903 subentries. The operational attributes are multi-valued, which
904 allows ACI to be represented as a set of ACI items.
906 3.3.1. Prescriptive ACI
908 The prescriptiveACI attribute is defined as an operational attribute
909 of an access control subentry. It contains prescriptive ACI
910 applicable to entries within that subentry's scope.
912 The LDAP description [RFC2252] for the prescriptiveACI operational
915 ( 2.5.24.4 NAME 'prescriptiveACI'
916 EQUALITY directoryStringFirstComponentMatch
917 SYNTAX 1.3.6.1.4.1.1466.115.121.1.1
918 USAGE directoryOperation )
920 The directoryStringFirstComponentMatch matching rule is described in
923 Prescriptive ACI within the subentries of a particular administrative
924 point never applies to the same or any other subentry of that
925 administrative point, but can be applicable to the subentries of
926 subordinate administrative points.
928 Note that prescriptiveACI attributes are not collective attributes.
929 Although the values of a prescriptiveACI attribute contribute to
930 access control decisions for each entry within the scope of the
931 subentry that holds the attribute, the prescriptiveACI attribute does
932 not appear as part of those entries.
936 The entryACI attribute is defined as an operational attribute of an
937 entry or subentry (not just access control subentries). It contains
938 entry ACI applicable to the entry or subentry in which it appears,
939 and that (sub)entry's contents.
941 The LDAP description [RFC2252] for the entryACI operational attribute
944 ( 2.5.24.5 NAME 'entryACI'
945 EQUALITY directoryStringFirstComponentMatch
949 Legg Expires 16 December 2004 [Page 17]
951 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
954 SYNTAX 1.3.6.1.4.1.1466.115.121.1.1
955 USAGE directoryOperation )
959 The subentryACI attribute is defined as an operational attribute of
960 administrative entries [ADMIN] (for any aspect of administration).
961 It contains subentry ACI that applies to each of the subentries of
962 the administrative entry in which it appears. Only administrative
963 entries are permitted to contain a subentryACI attribute.
965 The LDAP description [RFC2252] for the subentryACI operational
968 ( 2.5.24.6 NAME 'subentryACI'
969 EQUALITY directoryStringFirstComponentMatch
970 SYNTAX 1.3.6.1.4.1.1466.115.121.1.1
971 USAGE directoryOperation )
973 3.3.4. Protecting the ACI
975 ACI operational attributes are subject to the same protection
976 mechanisms as other attributes.
978 The identificationTag provides an identifier for each ACI item. This
979 tag can be used to remove a specific ACI item value, or to protect it
980 by prescriptive ACI, entry ACI or subentry ACI. Directory rules
981 ensure that only one ACI item per access control operational
982 attribute possesses any specific identificationTag value.
984 The creation of subentries for an administrative entry may be
985 controlled by means of the subentryACI operational attribute in the
986 administrative entry. The right to create prescriptive access
987 controls may also be governed directly by security policy; this
988 provision is required to create access controls in new autonomous
989 administrative areas [ADMIN].
991 3.4. Access Control Decision Points for LDAP Operations
993 Each LDAP operation involves making a series of access control
994 decisions on the various protected items that the operation accesses.
996 For some operations (e.g., the Modify operation), each such access
997 control decision must grant access for the operation to succeed; if
998 access is denied to any protected item, the whole operation fails.
999 For other operations (e.g., the Search operation), protected items to
1000 which access is denied are simply omitted from the operation result
1001 and processing continues.
1005 Legg Expires 16 December 2004 [Page 18]
1007 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1010 If the requested access is denied, further access control decisions
1011 may be needed to determine if the user has DiscloseOnError
1012 permissions to the protected item. Only if DiscloseOnError
1013 permission is granted may the server respond with an error that
1014 reveals the existence of the protected item. In all other cases, the
1015 server MUST act so as to conceal the existence of the protected item.
1017 The permissions required to access each protected item, are specified
1018 for each operation in the following sections. The algorithm by which
1019 a permission is determined to be granted or not granted is specified
1022 3.4.1. Common Elements of Procedure
1024 This section defines the elements of procedure that are common to all
1025 LDAP operations when Basic Access Control is in effect.
1027 3.4.1.1. Alias Dereferencing
1029 If, in the process of locating a target object entry (nominated in an
1030 LDAP request), alias dereferencing is required, no specific
1031 permissions are necessary for alias dereferencing to take place.
1032 However, if alias dereferencing would result in a referral being
1033 returned, the following sequence of access controls applies.
1035 1) Read permission is required to the alias entry. If permission is
1036 not granted, the operation fails in accordance to the procedure
1037 described in 5.4.1.3.
1039 2) Read permission is required to the aliasedEntryName attribute and
1040 to the single value that it contains. If permission is not
1041 granted, the operation fails and the resultCode
1042 aliasDereferencingProblem SHALL be returned. The matchedDN field
1043 of the LDAPResult SHALL contain the name of the alias entry.
1045 In addition to the access controls described above, security policy
1046 may prevent the disclosure of knowledge of other servers which would
1047 otherwise be conveyed in a referral. If such a policy is in effect
1048 the resultCode insufficientAccessRights SHALL be returned.
1050 3.4.1.2. Return of Names in Errors
1052 Certain LDAP result codes, i.e., noSuchObject, aliasProblem,
1053 invalidDNSyntax and aliasDereferencingProblem, provide the name of an
1054 entry in the matchedDN field of an LDAPResult. The DN of an entry
1055 SHALL only be provided in the matchedDN field if DiscloseOnError
1056 permission is granted to that entry, otherwise, the matchedDN field
1057 of the LDAPResult SHALL either contain the name of the next superior
1061 Legg Expires 16 December 2004 [Page 19]
1063 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1066 entry to which DiscloseOnError permission is granted, or, if
1067 DiscloseOnError permission is not granted to any superior entry, the
1068 name of the root DSE (i.e., a zero-length LDAPDN).
1070 3.4.1.3. Non-disclosure of Entry Existence
1072 If, while performing an LDAP operation, the necessary entry level
1073 permission is not granted to the specified target object entry -
1074 e.g., the entry to be modified - the operation fails; if
1075 DiscloseOnError permission is granted to the target entry, the
1076 resultCode insufficientAccessRights SHALL be returned, otherwise, the
1077 resultCode noSuchObject SHALL be returned. The matchedDN field of
1078 the LDAPResult SHALL either contain the name of the next superior
1079 entry to which DiscloseOnError permission is granted, or, if
1080 DiscloseOnError permission is not granted to any superior entry, the
1081 name of the root DSE (i.e., a zero-length LDAPDN).
1083 Additionally, whenever the server detects an operational error
1084 (including a referral resultCode), it shall ensure that in returning
1085 that error it does not compromise the existence of the named target
1086 entry and any of its superiors. For example, before returning a
1087 resultCode of timeLimitExceeded or notAllowedOnNonLeaf, the server
1088 verifies that DiscloseOnError permission is granted to the target
1089 entry. If it is not, the procedure described in the paragraph above
1092 3.4.2. Compare Operation Decision Points
1094 The following sequence of access controls applies for an entry being
1097 1) Read permission for the entry to be compared is required. If
1098 permission is not granted, the operation fails in accordance with
1101 2) Compare permission for the attribute to be compared is required.
1102 If permission is not granted, the operation fails: if
1103 DiscloseOnError permission is granted to the attribute being
1104 compared, a resultCode of insufficientAccessRight SHALL be
1105 returned, otherwise, the resultCode noSuchAttribute SHALL be
1108 3) If there exists a value within the attribute being compared that
1109 matches the purported argument and for which Compare permission is
1110 granted, the operation returns the resultCode compareTrue,
1111 otherwise the operation returns the resultCode compareFalse.
1113 3.4.3. Search Operation Decision Points
1117 Legg Expires 16 December 2004 [Page 20]
1119 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1122 The following sequence of access controls applies for a portion of
1123 the DIT being searched.
1125 1) No specific permission is required to the entry identified by the
1126 baseObject argument in order to initiate a search. However, if
1127 the baseObject is within the scope of the SearchArgument (i.e.,
1128 when the subset argument specifies baseObject or wholeSubtree) the
1129 access controls specified in 2) through 5) will apply.
1131 2) Browse or Read permission is required for the single entry within
1132 the scope of a baseObject search. An entry for which neither of
1133 these permissions is granted is ignored.
1135 This differs from the X.500 DAP Search operation where the Browse
1136 permission alone is required. An entry with Read permission but
1137 not Browse permission cannot be searched but can still be examined
1138 with an X.500 DAP Read operation. LDAP relies on baseObject
1139 search operations to provide the functionality of the DAP Read
1140 operation. Accepting Read permission for the target entry in a
1141 baseObject search gives an LDAP baseObject search the same access
1142 rights to the entry as the DAP Read operation.
1144 3) Browse permission is required for an entry within the scope of a
1145 singleLevel or wholeSubtree search to be a candidate for
1146 consideration. Entries for which this permission is not granted
1149 4) The filter argument is applied to each entry left to be considered
1150 after taking 2) and 3) into account, in accordance with the
1153 a) For a present Filter item, if there exists an attribute value
1154 such that the attribute type of the value (possibly a subtype
1155 of the attribute type in the FilterItem) satisfies the Filter
1156 item and FilterMatch permission is granted for the value and
1157 for the attribute type then the FilterItem evaluates to TRUE,
1158 otherwise, it evaluates to FALSE.
1160 If a directory server does not support True/False filters
1161 [FILTER] on LDAP searches, or if directory clients do not
1162 exploit this capability, then access control administrators
1163 SHOULD grant FilterMatch permission for the objectClass
1164 attribute over entries where Read permission is also granted so
1165 that an LDAP baseObject search with a filter testing for the
1166 presence of the objectClass attribute will have the same access
1167 rights to the target entry as the DAP Read operation. An LDAP
1168 baseObject search with a True filter does not require
1169 FilterMatch permission for any particular attribute type.
1173 Legg Expires 16 December 2004 [Page 21]
1175 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1178 b) For an equalityMatch, substrings, greaterOrEqual, lessOrEqual,
1179 approxMatch or extensibleMatch Filter item, if there exists an
1180 attribute value such that the value satisfies the Filter item
1181 and FilterMatch permission is granted for the value and for its
1182 attribute type (possibly a subtype of the attribute type in the
1183 FilterItem) then the FilterItem evaluates to TRUE, otherwise,
1184 it evaluates to FALSE.
1186 Once the access controls defined in 2) through 4) have been applied,
1187 an entry is either selected or discarded.
1189 5) For each selected entry the information returned is as follows:
1191 a) ReturnDN permission for an entry is required in order to return
1192 its distinguished name in a SearchResultEntry response. If
1193 this permission is not granted, the server SHALL either, return
1194 the name of a valid alias to the entry, or, omit the entry from
1197 If the base entry of the search was located using an alias,
1198 then that alias is known to be a valid alias. Otherwise, how
1199 it is ensured that the alias is valid is outside the scope of
1202 Where a server has a choice of alias names available to it for
1203 return, it is RECOMMENDED that where possible it choose the
1204 same alias name for repeated requests by the same client, in
1205 order to provide a consistent service.
1207 b) If the typesOnly field of the SearchRequest is TRUE then, for
1208 each attribute type that is to be returned, Read permission for
1209 the attribute type and Read permission for at least one value
1210 of the attribute is required. If permission is not granted,
1211 the attribute type is omitted from the attribute list in the
1212 SearchResultEntry. If as a consequence of applying these
1213 controls no attribute type information is selected, the
1214 SearchResultEntry is returned but no attribute type information
1215 is conveyed with it (i.e., the attribute list is empty).
1217 c) If the typesOnly field of the SearchRequest is FALSE then Read
1218 permission is required for each attribute type and for each
1219 attribute value that is to be returned. If permission to an
1220 attribute type is not granted, the attribute is omitted from
1221 the SearchResultEntry. If permission to an attribute value is
1222 not granted, the value is omitted from its corresponding
1223 attribute. If all values of an attribute are omitted then the
1224 attribute type is omitted from the attribute list in the
1225 SearchResultEntry. If as a consequence of applying these
1229 Legg Expires 16 December 2004 [Page 22]
1231 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1234 controls no attribute information is selected, the
1235 SearchResultEntry is returned but no attribute information is
1236 conveyed with it (i.e., the attribute list is empty).
1238 6) If as a consequence of applying the above controls to the entire
1239 scoped subtree the search result contains no entries (excluding
1240 any SearchResultReferences) and if DiscloseOnError permission is
1241 not granted to the entry identified by the baseObject argument,
1242 the operation fails and the resultCode noSuchObject SHALL be
1243 returned. The matchedDN field of the LDAPResult SHALL either
1244 contain the name of the next superior entry to which
1245 DiscloseOnError permission is granted, or the name of the root DSE
1246 (i.e., a zero-length LDAPDN). Otherwise, the operation succeeds
1247 but no subordinate information is conveyed with it.
1249 Security policy may prevent the disclosure of knowledge of other
1250 servers which would otherwise be conveyed as SearchResultReferences.
1251 If such a policy is in effect SearchResultReferences are omitted from
1254 No specific permissions are necessary to allow alias dereferencing to
1255 take place in the course of a search operation. However, for each
1256 alias entry encountered, if alias dereferencing would result in a
1257 SearchResultReference being returned, the following access controls
1258 apply: Read permission is required to the alias entry, the
1259 aliasedEntryName attribute and to the single value that it contains.
1260 If any of these permissions is not granted, the SearchResultReference
1261 SHALL be omitted from the search result.
1263 3.4.4. Add Operation Decision Points
1265 The following sequence of access controls apply for an entry being
1268 1) No specific permission is required for the immediate superior of
1269 the entry identified by the entry field of the AddRequest.
1271 2) If an entry already exists with a distinguished name equal to the
1272 entry field the operation fails; if DiscloseOnError or Add
1273 permission is granted to the existing entry, the resultCode
1274 entryAlreadyExists SHALL be returned, otherwise, the procedure
1275 described in 5.4.1.3 is followed with respect to the entry being
1278 3) Add permission is required for the new entry being added. If this
1279 permission is not granted, the operation fails; the procedure
1280 described in 5.4.1.3 is followed with respect to the entry being
1285 Legg Expires 16 December 2004 [Page 23]
1287 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1290 The Add permission is provided as prescriptive ACI when attempting
1291 to add an entry and as prescriptive ACI or subentry ACI when
1292 attempting to add a subentry. Any values of the entryACI
1293 attribute in the entry being added SHALL be ignored.
1295 4) Add permission is required for each attribute type and for each
1296 value that is to be added. If any permission is absent, the
1297 operation fails and the resultCode insufficientAccessRights SHALL
1300 3.4.5. Delete Operation Decision Points
1302 The following sequence of access controls apply for an entry being
1305 1) Remove permission is required for the entry being removed. If
1306 this permission is not granted, the operation fails in accordance
1309 2) No specific permissions are required for any of the attributes and
1310 attribute values present within the entry being removed.
1312 3.4.6. Modify Operation Decision Points
1314 The following sequence of access controls apply for an entry being
1317 1) Modify permission is required for the entry being modified. If
1318 this permission is not granted, the operation fails in accordance
1321 2) For each of the specified modification arguments applied in
1322 sequence, the following permissions are required:
1324 a) Add permission is required for each of the attribute values
1325 specified in an add modification. If the attribute does not
1326 currently exist then Add permission for the attribute type is
1327 also required. If these permissions are not granted, or any of
1328 the attribute values already exist, the operation fails; if an
1329 attribute value already exists and DiscloseOnError or Add is
1330 granted to that attribute value, the resultCode
1331 attributeOrValueExists SHALL be returned, otherwise, the
1332 resultCode insufficientAccessRights SHALL be returned.
1334 b) Remove permission is required for the attribute type specified
1335 in a delete modification with no listed attribute values. If
1336 this permission is not granted, the operation fails; if
1337 DiscloseOnError permission is granted to the attribute being
1341 Legg Expires 16 December 2004 [Page 24]
1343 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1346 removed and the attribute exists, the resultCode
1347 insufficientAccessRights SHALL be returned, otherwise, the
1348 resultCode noSuchAttribute SHALL be returned.
1350 No specific permissions are required for any of the attribute
1351 values present within the attribute being removed.
1353 c) Remove permission is required for each of the values in a
1354 delete modification with listed attribute values. If all
1355 current values of the attribute are specified to be removed
1356 (which causes the attribute itself to be removed), then Remove
1357 permission for the attribute type is also required. If these
1358 permissions are not granted, the operation fails; if
1359 DiscloseOnError permission is granted to any of the attribute
1360 values being removed, the resultCode insufficientAccessRights
1361 SHALL be returned, otherwise, the resultCode noSuchAttribute
1364 d) Remove and Add permission is required for the attribute type,
1365 and Add permission is required for each of the specified
1366 attribute values, in a replace modification. If these
1367 permissions are not granted the operation fails and the
1368 resultCode insufficientAccessRights SHALL be returned.
1370 No specific permissions are required to remove any existing
1371 attribute values of the attribute being replaced.
1373 3.4.7. Modify DN Operation Decision Points
1375 The following sequence of access controls apply for an entry having
1378 1) If the effect of the operation is to change the RDN of the entry
1379 then Rename permission (determined with respect to its original
1380 name) is required for the entry. If this permission is not
1381 granted, the operation fails; the procedure described in 5.4.1.3
1382 is followed with respect to the entry being renamed (considered
1383 with its original name).
1385 No additional permissions are required even if, as a result of
1386 modifying the RDN of the entry, a new distinguished value needs to
1387 be added, or an old one removed. No specific permissions are
1388 required for the subordinates of the renamed entry.
1390 2) If the effect of the operation is to move an entry to a new
1391 superior in the DIT then Export permission (determined with
1392 respect to its original name) and Import permission (determined
1393 with respect to its new name) are required for the entry. If
1397 Legg Expires 16 December 2004 [Page 25]
1399 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1402 either of these permissions is not granted, the operation fails;
1403 the procedure described in 5.4.1.3 is followed with respect to the
1404 entry being moved (considered with its original name).
1406 The Import permission is provided as prescriptive ACI when
1407 attempting to move an entry and as prescriptive ACI or subentry
1408 ACI when attempting to move a subentry. Any values of the
1409 entryACI attribute in the entry or subentry being moved SHALL be
1412 No specific permissions are required for the subordinates of the
1415 Note that a single Modify DN Operation may simultaneously rename and
1418 3.5. Access Control Decision Function
1420 This section describes how ACI items are processed in order to decide
1421 whether to grant or deny a particular requestor a specified
1422 permission to a given protected item.
1424 Section 3.5.1 describes the inputs to the ACDF. Sections 3.5.2
1425 through 3.5.4 describe the steps in the ACDF. The output is a
1426 decision to grant or deny access to the protected item.
1430 For each invocation of the ACDF, the inputs are:
1432 a) the requestor's Distinguished Name, unique identifier, and
1433 authentication level, or as many of these as are available;
1435 b) the protected item (an entry, an attribute, or an attribute value)
1436 being considered at the current decision point for which the ACDF
1439 c) the requested permission specified for the current decision point;
1441 d) the ACI items applicable to the entry containing (or which is) the
1444 In addition, if the ACI items include any of the protected item
1445 constraints described in 5.2.1.4, the whole entry and the number of
1446 immediate subordinates of its superior entry may also be required as
1453 Legg Expires 16 December 2004 [Page 26]
1455 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1458 For each ACI item, expand the item into a set of tuples, one tuple
1459 for each element of the itemPermissions and userPermissions sets,
1460 containing the following elements:
1462 ( userClasses, authenticationLevel, protectedItems,
1463 grantsAndDenials, precedence )
1465 Collect all tuples from all ACI items into a single set.
1467 For any tuple whose grantsAndDenials specify both grants and denials,
1468 replace the tuple with two tuples - one specifying only grants and
1469 the other specifying only denials.
1471 3.5.3. Discarding Irrelevant Tuples
1473 Perform the following steps to discard all irrelevant tuples:
1475 1) Discard all tuples that do not include the requestor in the
1476 tuple's userClasses as follows:
1478 a) For tuples that grant access, discard all tuples that do not
1479 include the requestor's identity in the tuples's userClasses
1480 element, taking into account UniqueIdentifier elements if
1481 relevant. Where a tuple's userClasses specifies a
1482 UniqueIdentifier, a matching value shall be present in the
1483 requestor's identity if the tuple is not to be discarded.
1484 Discard tuples that specify an authentication level higher than
1485 that associated with the requestor.
1487 b) For tuples that deny access, retain all tuples that include the
1488 requestor in the tuple's userClasses element, taking into
1489 account uniqueIdentifier elements if relevant. Also retain all
1490 tuples that deny access and which specify an authentication
1491 level higher than that associated with the requestor. This
1492 reflects the fact that the requestor has not adequately proved
1493 non-membership in the user class for which the denial is
1494 specified. All other tuples that deny access are discarded.
1496 2) Discard all tuples that do not include the protected item in
1499 3) Examine all tuples that include maxValueCount, maxImmSub or
1500 restrictedBy. Discard all such tuples which grant access and
1501 which do not satisfy any of these constraints.
1503 4) Discard all tuples that do not include the requested permission as
1504 one of the set bits in grantsAndDenials.
1509 Legg Expires 16 December 2004 [Page 27]
1511 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1514 The order in which tuples are discarded does not change the output of
1517 3.5.4. Highest Precedence and Specificity
1519 Perform the following steps to select those tuples of highest
1520 precedence and specificity:
1522 1) Discard all tuples having a precedence less than the highest
1523 precedence among the remaining tuples.
1525 2) If more than one tuple remains, choose the tuples with the most
1526 specific user class. If there are any tuples matching the
1527 requestor with UserClasses element name or thisEntry, discard all
1528 other tuples. Otherwise if there are any tuples matching
1529 UserGroup, discard all other tuples. Otherwise if there are any
1530 tuples matching subtree, discard all other tuples.
1532 3) If more than one tuple remains, choose the tuples with the most
1533 specific protected item. If the protected item is an attribute
1534 and there are tuples that specify the attribute type explicitly,
1535 discard all other tuples. If the protected item is an attribute
1536 value, and there are tuples that specify the attribute value
1537 explicitly, discard all other tuples. A protected item which is a
1538 rangeOfValues is to be treated as specifying an attribute value
1541 Grant access if and only if one or more tuples remain and all grant
1542 access. Otherwise deny access.
1544 4. Simplified Access Control
1546 This section describes the functionality of the Simplified Access
1547 Control scheme. It provides a subset of the functionality found in
1548 Basic Access Control.
1550 When Simplified Access Control is used, the accessControlScheme
1551 operational attribute [ACA] SHALL have the value
1552 simplified-access-control (2.5.28.2).
1554 The functionality of Simplified Access Control is the same as Basic
1555 Access Control except that:
1557 1) Access control decisions shall be made only on the basis of values
1558 of prescriptiveACI and subentryACI operational attributes. Values
1559 of the entryACI attribute, if present, SHALL NOT be used to make
1560 access control decisions.
1565 Legg Expires 16 December 2004 [Page 28]
1567 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1570 2) Access Control Inner Areas are not used. Values of
1571 prescriptiveACI attributes appearing in subentries of ACIPs SHALL
1572 NOT be used to make access control decisions.
1574 All other provisions SHALL be as defined for Basic Access Control.
1576 5. Security Considerations
1578 Access control administrators should beware of basing access controls
1579 on membership of non-locally available groups or groups which are
1580 available only through replication (and which may, therefore, be out
1583 A particular DSA might not have the ACI governing any data that it
1584 caches. Administrators should be aware that a directory server with
1585 the capability of caching may pose a significant security risk to
1586 other directory servers, in that it may reveal information to
1591 This document is derived from, and duplicates substantial portions
1592 of, Section 8 of X.501 [X501], and selected extracts from X.511
1595 7. IANA Considerations
1597 The Internet Assigned Numbers Authority (IANA) is requested to update
1598 the LDAP descriptors registry [BCP64] as indicated by the following
1601 Subject: Request for LDAP Descriptor Registration
1602 Descriptor (short name): basic-access-control
1603 Object Identifier: 2.5.28.1
1604 Person & email address to contact for further information:
1605 Steven Legg <steven.legg@adacel.com.au>
1606 Usage: other (access control scheme)
1607 Specification: RFC XXXX
1608 Author/Change Controller: IESG
1610 Subject: Request for LDAP Descriptor Registration
1611 Descriptor (short name): simplified-access-control
1612 Object Identifier: 2.5.28.2
1613 Person & email address to contact for further information:
1614 Steven Legg <steven.legg@adacel.com.au>
1615 Usage: other (access control scheme)
1616 Specification: RFC XXXX
1617 Author/Change Controller: IESG
1621 Legg Expires 16 December 2004 [Page 29]
1623 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1626 Subject: Request for LDAP Descriptor Registration
1627 Descriptor (short name): prescriptiveACI
1628 Object Identifier: 2.5.24.4
1629 Person & email address to contact for further information:
1630 Steven Legg <steven.legg@adacel.com.au>
1631 Usage: attribute type
1632 Specification: RFC XXXX
1633 Author/Change Controller: IESG
1635 Subject: Request for LDAP Descriptor Registration
1636 Descriptor (short name): entryACI
1637 Object Identifier: 2.5.24.5
1638 Person & email address to contact for further information:
1639 Steven Legg <steven.legg@adacel.com.au>
1640 Usage: attribute type
1641 Specification: RFC XXXX
1642 Author/Change Controller: IESG
1644 Subject: Request for LDAP Descriptor Registration
1645 Descriptor (short name): subentryACI
1646 Object Identifier: 2.5.24.6
1647 Person & email address to contact for further information:
1648 Steven Legg <steven.legg@adacel.com.au>
1649 Usage: attribute type
1650 Specification: RFC XXXX
1651 Author/Change Controller: IESG
1653 Appendix A. LDAP Specific Encoding for the ACI Item Syntax
1655 This appendix is non-normative.
1657 The LDAP-specific encoding for the ACI Item syntax is specified by
1658 the Generic String Encoding Rules [GSER]. The ABNF [RFC2234] in this
1659 appendix for this syntax is provided only as a convenience and is
1660 equivalent to the encoding specified by the application of GSER.
1661 Since the ACI Item ASN.1 type may be extended in future editions of
1662 X.501 [X501], the provided ABNF should be regarded as a snapshot in
1663 time. The LDAP-specific encoding for any extension to the ACI Item
1664 ASN.1 type can be determined from the rules of GSER.
1666 In the event that there is a discrepancy between this ABNF and the
1667 encoding determined by GSER, then GSER is to be taken as definitive.
1669 ACIItem = "{" sp aci-identificationTag ","
1670 sp aci-precedence ","
1671 sp aci-authenticationLevel ","
1672 sp aci-itemOrUserFirst
1677 Legg Expires 16 December 2004 [Page 30]
1679 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1682 aci-identificationTag = id-identificationTag msp
1684 aci-precedence = id-precedence msp Precedence
1685 aci-authenticationLevel = id-authenticationLevel msp
1687 aci-itemOrUserFirst = id-itemOrUserFirst msp
1689 id-identificationTag = %x69.64.65.6E.74.69.66.69.63.61.74.69.6F
1690 %x6E.54.61.67 ; "identificationTag"
1691 id-precedence = %x70.72.65.63.65.64.65.6E.63.65
1693 id-authenticationLevel = %x61.75.74.68.65.6E.74.69.63.61.74.69.6F
1695 ; "authenticationLevel"
1696 id-itemOrUserFirst = %x69.74.65.6D.4F.72.55.73.65.72.46.69.72
1697 %x73.74 ; "itemOrUserFirst"
1699 Precedence = INTEGER-0-MAX ; MUST be less than 256
1701 AuthenticationLevel = al-basicLevels / al-other
1702 al-basicLevels = id-basicLevels ":" BasicLevels
1703 al-other = id-other ":" EXTERNAL
1704 id-basicLevels = %x62.61.73.69.63.4C.65.76.65.6C.73
1706 id-other = %x6F.74.68.65.72 ; "other"
1708 BasicLevels = "{" sp bl-level
1709 [ "," sp bl-localQualifier ]
1710 [ "," sp bl-signed ]
1713 bl-level = id-level msp Level
1714 bl-localQualifier = id-localQualifier msp INTEGER
1715 bl-signed = id-signed msp BOOLEAN
1716 Level = id-none / id-simple / id-strong
1717 id-level = %x6C.65.76.65.6C ; "level"
1718 id-localQualifier = %x6C.6F.63.61.6C.51.75.61.6C.69.66.69.65.72
1720 id-signed = %x73.69.67.6E.65.64 ; "signed"
1721 id-none = %x6E.6F.6E.65 ; "none"
1722 id-simple = %x73.69.6D.70.6C.65 ; "simple"
1723 id-strong = %x73.74.72.6F.6E.67 ; "strong"
1725 ItemOrUserFirst = ( id-itemFirst ":" ItemFirst ) /
1726 ( id-userFirst ":" UserFirst )
1727 id-itemFirst = %x69.74.65.6D.46.69.72.73.74 ; "itemFirst"
1728 id-userFirst = %x75.73.65.72.46.69.72.73.74 ; "userFirst"
1733 Legg Expires 16 December 2004 [Page 31]
1735 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1738 ItemFirst = "{" sp if-protectedItems ","
1739 sp if-itemPermissions
1741 if-protectedItems = id-protectedItems msp ProtectedItems
1742 if-itemPermissions = id-itemPermissions msp ItemPermissions
1743 id-protectedItems = %x70.72.6F.74.65.63.74.65.64.49.74.65.6D.73
1745 id-itemPermissions = %x69.74.65.6D.50.65.72.6D.69.73.73.69.6F.6E
1746 %x73 ; "itemPermissions"
1748 UserFirst = "{" sp uf-userClasses ","
1749 sp uf-userPermissions
1751 uf-userClasses = id-userClasses msp UserClasses
1752 uf-userPermissions = id-userPermissions msp UserPermissions
1753 id-userClasses = %x75.73.65.72.43.6C.61.73.73.65.73
1755 id-userPermissions = %x75.73.65.72.50.65.72.6D.69.73.73.69.6F.6E
1756 %x73 ; "userPermissions"
1758 ItemPermissions = "{" [ sp ItemPermission
1759 *( "," sp ItemPermission ) ] sp "}"
1760 ItemPermission = "{" [ sp ip-precedence "," ]
1761 sp ip-userClasses ","
1762 sp ip-grantsAndDenials
1764 ip-precedence = id-precedence msp Precedence
1765 ip-userClasses = id-userClasses msp UserClasses
1766 ip-grantsAndDenials = id-grantsAndDenials msp GrantsAndDenials
1767 id-grantsAndDenials = %x67.72.61.6E.74.73.41.6E.64.44.65.6E.69.61
1768 %x6C.73 ; "grantsAndDenials"
1770 UserClasses = "{" [ sp uc-allUsers ]
1771 [ sep sp uc-thisEntry ]
1773 [ sep sp uc-userGroup ]
1774 [ sep sp uc-subtree ]
1776 uc-allUsers = id-allUsers msp NULL
1777 uc-thisEntry = id-thisEntry msp NULL
1778 uc-name = id-name msp NameAndOptionalUIDs
1779 uc-userGroup = id-userGroup msp NameAndOptionalUIDs
1780 uc-subtree = id-subtree msp SubtreeSpecifications
1781 id-allUsers = %x61.6C.6C.55.73.65.72.73 ; "allUsers"
1782 id-thisEntry = %x74.68.69.73.45.6E.74.72.79 ; "thisEntry"
1783 id-name = %x6E.61.6D.65 ; "name"
1784 id-userGroup = %x75.73.65.72.47.72.6F.75.70 ; "userGroup"
1785 id-subtree = %x73.75.62.74.72.65.65 ; "subtree"
1789 Legg Expires 16 December 2004 [Page 32]
1791 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1794 NameAndOptionalUIDs = "{" sp NameAndOptionalUID
1795 *( "," sp NameAndOptionalUID ) sp "}"
1796 NameAndOptionalUID = "{" sp nu-dn
1799 nu-dn = id-dn msp DistinguishedName
1800 nu-uid = id-uid msp UniqueIdentifier
1801 UniqueIdentifier = BIT-STRING
1802 id-dn = %x64.6E ; "dn"
1803 id-uid = %x75.69.64 ; "uid"
1805 SubtreeSpecifications = "{" sp SubtreeSpecification
1806 *( "," sp SubtreeSpecification ) sp "}"
1808 UserPermissions = "{" [ sp UserPermission
1809 *( "," sp UserPermission ) ] sp "}"
1810 UserPermission = "{" [ sp up-precedence "," ]
1811 sp up-protectedItems ","
1812 sp up-grantsAndDenials
1814 up-precedence = id-precedence msp Precedence
1815 up-protectedItems = id-protectedItems msp ProtectedItems
1816 up-grantsAndDenials = id-grantsAndDenials msp GrantsAndDenials
1818 ProtectedItems = "{" [ sp pi-entry ]
1819 [ sep sp pi-allUserAttributeTypes ]
1820 [ sep sp pi-attributeType ]
1821 [ sep sp pi-allAttributeValues ]
1822 [ sep sp pi-allUserTypesAndValues ]
1823 [ sep sp pi-attributeValue ]
1824 [ sep sp pi-selfValue ]
1825 [ sep sp pi-rangeOfValues ]
1826 [ sep sp pi-maxValueCount ]
1827 [ sep sp pi-maxImmSub ]
1828 [ sep sp pi-restrictedBy ]
1830 [ sep sp pi-classes ]
1833 pi-entry = id-entry msp NULL
1834 pi-allUserAttributeTypes = id-allUserAttributeTypes msp NULL
1835 pi-attributeType = id-attributeType msp AttributeTypes
1836 pi-allAttributeValues = id-allAttributeValues msp
1838 pi-allUserTypesAndValues = id-allUserAttributeTypesAndValues msp
1840 pi-attributeValue = id-attributeValue msp
1841 AttributeTypeAndValues
1845 Legg Expires 16 December 2004 [Page 33]
1847 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1850 pi-selfValue = id-selfValue msp AttributeTypes
1851 pi-rangeOfValues = id-rangeOfValues msp Filter
1852 pi-maxValueCount = id-maxValueCount msp MaxValueCounts
1853 pi-maxImmSub = id-maxImmSub msp INTEGER
1854 pi-restrictedBy = id-restrictedBy msp RestrictedValues
1855 pi-classes = id-classes msp Refinement
1856 id-entry = %x65.6E.74.72.79 ; "entry"
1857 id-allUserAttributeTypes = %x61.6C.6C.55.73.65.72.41.74.74.72.69
1858 %x62.75.74.65.54.79.70.65.73
1859 ; "allUserAttributeTypes"
1860 id-attributeType = %x61.74.74.72.69.62.75.74.65.54.79.70
1861 %x65 ; "attributeType"
1862 id-allAttributeValues = %x61.6C.6C.41.74.74.72.69.62.75.74.65
1864 ; "allAttributeValues"
1865 id-attributeValue = %x61.74.74.72.69.62.75.74.65.56.61.6C
1866 %x75.65 ; "attributeValue"
1867 id-selfValue = %x73.65.6C.66.56.61.6C.75.65
1869 id-rangeOfValues = %x72.61.6E.67.65.4F.66.56.61.6C.75.65
1870 %x73 ; "rangeOfValues"
1871 id-maxValueCount = %x6D.61.78.56.61.6C.75.65.43.6F.75.6E
1872 %x74 ; "maxValueCount"
1873 id-maxImmSub = %x6D.61.78.49.6D.6D.53.75.62
1875 id-restrictedBy = %x72.65.73.74.72.69.63.74.65.64.42.79
1877 id-classes = %x63.6C.61.73.73.65.73 ; "classes"
1879 id-allUserAttributeTypesAndValues = %x61.6C.6C.55.73.65.72.41.74
1880 %x74.72.69.62.75.74.65.54.79.70.65.73
1881 %x41.6E.64.56.61.6C.75.65.73
1882 ; "allUserAttributeTypesAndValues"
1884 AttributeTypes = "{" sp AttributeType
1885 *( "," sp AttributeType ) sp "}"
1887 AttributeTypeAndValues = "{" sp AttributeTypeAndValue
1888 *( "," sp AttributeTypeAndValue )
1891 AttributeTypeAndValue = "{" sp atav-type ","
1894 atav-type = id-type msp AttributeType
1895 atav-value = id-value msp Value
1896 id-type = %x74.79.70.65 ; "type"
1897 id-value = %x76.61.6C.75.65 ; "value"
1901 Legg Expires 16 December 2004 [Page 34]
1903 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1906 MaxValueCounts = "{" sp MaxValueCount
1907 *( "," sp MaxValueCount ) sp "}"
1908 MaxValueCount = "{" sp mvc-type ","
1911 mvc-type = id-type msp AttributeType
1912 mvc-maxCount = id-maxCount msp INTEGER
1913 id-maxCount = %x6D.61.78.43.6F.75.6E.74 ; "maxCount"
1915 RestrictedValues = "{" sp RestrictedValue
1916 *( "," sp RestrictedValue ) sp "}"
1917 RestrictedValue = "{" sp rv-type ","
1920 rv-type = id-type msp AttributeType
1921 rv-valuesin = id-valuesin msp AttributeType
1922 id-valuesin = %x76.61.6C.75.65.73.69.6E ; "valuesin"
1924 GrantsAndDenials = "{" [ sp grantOrDeny
1925 *( "," sp grantOrDeny ) ] sp "}"
1926 grantOrDeny = id-grantAdd
1928 / id-grantDiscloseOnError
1929 / id-denyDiscloseOnError
1948 / id-grantFilterMatch
1949 / id-denyFilterMatch
1950 ; grantInvoke omitted
1951 ; denyInvoke omitted
1953 id-grantAdd = %x67.72.61.6E.74.41.64.64 ; "grantAdd"
1957 Legg Expires 16 December 2004 [Page 35]
1959 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
1962 id-denyAdd = %x64.65.6E.79.41.64.64 ; "denyAdd"
1963 id-grantBrowse = %x67.72.61.6E.74.42.72.6F.77.73.65
1965 id-denyBrowse = %x64.65.6E.79.42.72.6F.77.73.65 ; "denyBrowse"
1966 id-grantCompare = %x67.72.61.6E.74.43.6F.6D.70.61.72.65
1968 id-denyCompare = %x64.65.6E.79.43.6F.6D.70.61.72.65
1971 id-grantDiscloseOnError = %x67.72.61.6E.74.44.69.73.63.6C.6F.73.65
1972 %x4F.6E.45.72.72.6F.72
1973 ; "grantDiscloseOnError"
1974 id-denyDiscloseOnError = %x64.65.6E.79.44.69.73.63.6C.6F.73.65.4F
1976 ; "denyDiscloseOnError"
1978 id-grantExport = %x67.72.61.6E.74.45.78.70.6F.72.74
1980 id-denyExport = %x64.65.6E.79.45.78.70.6F.72.74
1982 id-grantFilterMatch = %x67.72.61.6E.74.46.69.6C.74.65.72.4D.61.74
1983 %x63.68 ; "grantFilterMatch"
1984 id-denyFilterMatch = %x64.65.6E.79.46.69.6C.74.65.72.4D.61.74.63
1985 %x68 ; "denyFilterMatch"
1986 id-grantImport = %x67.72.61.6E.74.49.6D.70.6F.72.74
1988 id-denyImport = %x64.65.6E.79.49.6D.70.6F.72.74
1990 id-grantModify = %x67.72.61.6E.74.4D.6F.64.69.66.79
1992 id-denyModify = %x64.65.6E.79.4D.6F.64.69.66.79
1994 id-grantRead = %x67.72.61.6E.74.52.65.61.64 ; "grantRead"
1995 id-denyRead = %x64.65.6E.79.52.65.61.64 ; "denyRead"
1996 id-grantRemove = %x67.72.61.6E.74.52.65.6D.6F.76.65
1998 id-denyRemove = %x64.65.6E.79.52.65.6D.6F.76.65
2000 id-grantRename = %x67.72.61.6E.74.52.65.6E.61.6D.65
2002 id-denyRename = %x64.65.6E.79.52.65.6E.61.6D.65
2004 id-grantReturnDN = %x67.72.61.6E.74.52.65.74.75.72.6E.44.4E
2006 id-denyReturnDN = %x64.65.6E.79.52.65.74.75.72.6E.44.4E
2009 The <sp>, <msp>, <sep>, <AttributeType>, <BIT-STRING>, <BOOLEAN>,
2013 Legg Expires 16 December 2004 [Page 36]
2015 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
2018 <DirectoryString>, <DistinguishedName>, <EXTERNAL>, <INTEGER>,
2019 <INTEGER-0-MAX> and <NULL> rules are described in [GCE].
2021 The <SubtreeSpecification> and <Refinement> rules are described in
2024 The <Value> rule is described in [GSER].
2026 Filter = filter-item / filter-and / filter-or / filter-not
2027 filter-item = id-item ":" FilterItem
2028 filter-and = id-and ":" SetOfFilter
2029 filter-or = id-or ":" SetOfFilter
2030 filter-not = id-not ":" Filter
2031 id-and = %x61.6E.64 ; "and"
2032 id-item = %x69.74.65.6D ; "item"
2033 id-not = %x6E.6F.74 ; "not"
2034 id-or = %x6F.72 ; "or"
2036 SetOfFilter = "{" [ sp Filter *( "," sp Filter ) ] sp "}"
2038 FilterItem = fi-equality
2043 / fi-approximateMatch
2044 / fi-extensibleMatch
2045 ; contextPresent omitted
2047 fi-equality = id-equality ":" AttributeValueAssertion
2048 fi-substrings = id-substrings ":" SubstringsAssertion
2049 fi-greaterOrEqual = id-greaterOrEqual ":"
2050 AttributeValueAssertion
2051 fi-lessOrEqual = id-lessOrEqual ":" AttributeValueAssertion
2052 fi-present = id-present ":" AttributeType
2053 fi-approximateMatch = id-approximateMatch ":"
2054 AttributeValueAssertion
2055 fi-extensibleMatch = id-extensibleMatch ":" MatchingRuleAssertion
2056 id-equality = %x65.71.75.61.6C.69.74.79 ; "equality"
2057 id-substrings = %x73.75.62.73.74.72.69.6E.67.73
2059 id-greaterOrEqual = %x67.72.65.61.74.65.72.4F.72.45.71.75.61.6C
2061 id-lessOrEqual = %x6C.65.73.73.4F.72.45.71.75.61.6C
2063 id-present = %x70.72.65.73.65.6E.74 ; "present"
2064 id-approximateMatch = %x61.70.70.72.6F.78.69.6D.61.74.65.4D.61.74
2065 %x63.68 ; "approximateMatch"
2069 Legg Expires 16 December 2004 [Page 37]
2071 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
2074 id-extensibleMatch = %x65.78.74.65.6E.73.69.62.6C.65.4D.61.74.63
2075 %x68 ; "extensibleMatch"
2077 AttributeValueAssertion = "{" sp ava-type ","
2079 ; assertedContexts omitted
2082 ava-type = id-type msp AttributeType
2083 ava-assertion = id-assertion msp Value
2084 id-assertion = %x61.73.73.65.72.74.69.6F.6E ; "assertion"
2086 SubstringsAssertion = "{" sp sa-type ","
2090 sa-type = id-type msp AttributeType
2091 sa-strings = id-strings msp Substrings
2092 id-strings = %x73.74.72.69.6E.67.73 ; "strings"
2094 Substrings = "{" [ sp Substring *( "," sp Substring ) ] sp "}"
2095 Substring = ss-initial
2099 ss-initial = id-initial ":" Value
2100 ss-any = id-any ":" Value
2101 ss-final = id-final ":" Value
2102 id-initial = %x69.6E.69.74.69.61.6C ; "initial"
2103 id-any = %x61.6E.79 ; "any"
2104 id-final = %x66.69.6E.61.6C ; "final"
2106 MatchingRuleAssertion = "{" sp mra-matchingRule
2108 "," sp mra-matchValue
2109 [ "," sp mra-dnAttributes ]
2112 mra-matchingRule = id-matchingRule msp MatchingRuleIds
2113 mra-type = id-type msp AttributeType
2114 mra-matchValue = id-matchValue msp Value
2115 mra-dnAttributes = id-dnAttributes msp BOOLEAN
2116 id-matchingRule = %x6D.61.74.63.68.69.6E.67.52.75.6C.65
2118 id-matchValue = %x6D.61.74.63.68.56.61.6C.75.65 ; "matchValue"
2119 id-dnAttributes = %x64.6E.41.74.74.72.69.62.75.74.65.73
2125 Legg Expires 16 December 2004 [Page 38]
2127 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
2130 MatchingRuleIds = "{" sp MatchingRuleId *( "," sp MatchingRuleId ) sp "}"
2131 MatchingRuleId = OBJECT-IDENTIFIER
2133 The <OBJECT-IDENTIFIER> rule is described in [GCE].
2135 Normative References
2137 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
2138 Requirement Levels", BCP 14, RFC 2119, March 1997.
2140 [RFC2251] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
2141 Access Protocol (v3)", RFC 2251, December 1997.
2143 [RFC2252] Wahl, M., Coulbeck, A., Howes, T. and S. Kille,
2144 "Lightweight Directory Access Protocol (v3): Attribute
2145 Syntax Definitions", RFC 2252, December 1997.
2147 [RFC2256] Wahl, M., "A Summary of the X.500(96) User Schema for use
2148 with LDAPv3", RFC 2256, December 1997.
2150 [RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access
2151 Protocol (v3): Technical Specification", RFC 3377,
2154 [BCP64] Zeilenga, K., "Internet Assigned Numbers
2155 Authority (IANA) Considerations for the Lightweight
2156 Directory Access Protcol (LDAP)", BCP 64, RFC 3383,
2159 [GSER] Legg, S., "Generic String Encoding Rules for ASN.1 Types",
2160 RFC 3641, October 2003.
2162 [COLLECT] Zeilenga, K., "Collective Attributes in the Lightweight
2163 Directory Access Protocol (LDAP)", RFC 3671, December
2166 [SUBENTRY] Zeilenga, K. and S. Legg, "Subentries in the Lightweight
2167 Directory Access Protocol (LDAP)", RFC 3672, December
2170 [SCHEMA] Zeilenga, K., "Lightweight Directory Access Protocol
2171 (LDAP): Additional Matching Rules", RFC 3698, February
2174 [ADMIN] Legg, S., "Lightweight Directory Access Protocol (LDAP):
2175 Directory Administrative Model",
2176 draft-legg-ldap-admin-xx.txt, a work in progress, June
2181 Legg Expires 16 December 2004 [Page 39]
2183 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
2186 [ACA] Legg, S., "Lightweight Directory Access Protocol (LDAP):
2187 Access Control Administration",
2188 draft-legg-ldap-acm-admin-xx.txt, a work in progress, June
2191 [FILTER] Zeilenga, K., "LDAP Absolute True and False Filters",
2192 draft-zeilenga-ldap-t-f-xx.txt, a work in progress,
2195 [ASN1] ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1,
2196 Information technology - Abstract Syntax Notation One
2197 (ASN.1): Specification of basic notation
2199 Informative References
2201 [RFC2234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
2202 Specifications: ABNF", RFC 2234, November 1997.
2204 [GCE] Legg, S., "Common Elements of Generic String Encoding
2205 Rules (GSER) Encodings", RFC 3642, October 2003.
2207 [X501] ITU-T Recommendation X.501 (02/01) | ISO/IEC 9594-2:2001,
2208 Information technology - Open Systems Interconnection -
2209 The Directory: Models
2211 [X511] ITU-T Recommendation X.511 (02/01) | ISO/IEC 9594-3:2001,
2212 Information technology - Open Systems Interconnection -
2213 The Directory: Abstract service definition
2218 Adacel Technologies Ltd.
2220 Brighton, Victoria 3186
2223 Phone: +61 3 8530 7710
2224 Fax: +61 3 8530 7888
2225 EMail: steven.legg@adacel.com.au
2227 Full Copyright Statement
2229 Copyright (C) The Internet Society (2004). This document is subject
2230 to the rights, licenses and restrictions contained in BCP 78, and
2231 except as set forth therein, the authors retain all their rights.
2233 This document and the information contained herein are provided on an
2237 Legg Expires 16 December 2004 [Page 40]
2239 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
2242 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
2243 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
2244 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
2245 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
2246 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
2247 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
2249 Intellectual Property
2251 The IETF takes no position regarding the validity or scope of any
2252 Intellectual Property Rights or other rights that might be claimed to
2253 pertain to the implementation or use of the technology described in
2254 this document or the extent to which any license under such rights
2255 might or might not be available; nor does it represent that it has
2256 made any independent effort to identify any such rights. Information
2257 on the procedures with respect to rights in RFC documents can be
2258 found in BCP 78 and BCP 79.
2260 Copies of IPR disclosures made to the IETF Secretariat and any
2261 assurances of licenses to be made available, or the result of an
2262 attempt made to obtain a general license or permission for the use of
2263 such proprietary rights by implementers or users of this
2264 specification can be obtained from the IETF on-line IPR repository at
2265 http://www.ietf.org/ipr.
2267 The IETF invites any interested party to bring to its attention any
2268 copyrights, patents or patent applications, or other proprietary
2269 rights that may cover technology that may be required to implement
2270 this standard. Please address the information to the IETF at
2275 The Internet draft draft-legg-ldap-acm-admin-00.txt has been split
2276 into two drafts, draft-legg-ldap-admin-00.txt and
2277 draft-legg-ldap-acm-admin-01.txt. Section 8 of
2278 draft-legg-ldapext-component-matching-06.txt has been extracted to
2279 become a separate Internet draft, draft-legg-ldap-gser-xx.txt. The
2280 references in this document have been updated accordingly.
2282 The term "native LDAP encoding" has been replaced by the term
2283 "LDAP-specific encoding" to align with terminology anticipated to be
2284 used in the revision of RFC 2252.
2286 Changes have been made to the Search Operation Decision Points
2289 In 4) a), the assumed FilterMatch permission for a present match of
2293 Legg Expires 16 December 2004 [Page 41]
2295 INTERNET-DRAFT Basic and Simplified Access Control June 16, 2004
2298 the objectClass attribute has been removed. An LDAP search with a
2299 True filter [FILTER] is the best analogue of the DAP read operation.
2300 A True filter does not filter any attribute type and therefore does
2301 not require FilterMatch permissions to succeed.
2303 In 5) b) and c), there is an additional requirement for Read
2304 permission for at least one attribute value before an attribute type
2305 can be returned in a search result. Without this change a search
2306 result could, in some circumstances, disclose the existence of
2307 particular hidden attribute values.
2311 RFC 3377 replaces RFC 2251 as the reference for LDAP.
2313 An IANA Considerations section has been added.
2317 The document has been reformatted in line with current practice.
2349 Legg Expires 16 December 2004 [Page 42]