1999-08-19 04:07:09 +08:00
|
|
|
|
Internet-Draft E. Stokes
|
|
|
|
|
LDAP Extensions WG D. Byrne
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Intended Category: Standards Track IBM
|
|
|
|
|
Expires: 5 April 2000 B. Blakley
|
|
|
|
|
Dascom
|
|
|
|
|
5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
Access Control Model for LDAP
|
1999-10-07 01:23:54 +08:00
|
|
|
|
<draft-ietf-ldapext-acl-model-04.txt>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
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
|
1999-10-07 01:23:54 +08:00
|
|
|
|
any time. It is inappropriate to use Internet-Drafts as
|
1999-08-19 04:07:09 +08:00
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Comments and suggestions on this document are encouraged.
|
|
|
|
|
Comments on this document should be sent to the LDAPEXT
|
|
|
|
|
working group discussion list:
|
|
|
|
|
|
|
|
|
|
ietf-ldapext@netscape.com
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
COPYRIGHT NOTICE
|
|
|
|
|
Copyright (C) The Internet Society (1997). All Rights
|
|
|
|
|
Reserved.
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
ABSTRACT
|
|
|
|
|
|
|
|
|
|
This document describes the access control model for the
|
|
|
|
|
Lightweight Directory Application Protocol (LDAP)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 1]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
directory service. It includes a description of the
|
1999-08-19 04:15:22 +08:00
|
|
|
|
model, the LDAP controls, and the extended operations to
|
1999-10-07 01:23:54 +08:00
|
|
|
|
the LDAP protocol. The current LDAP APIs are sufficient
|
|
|
|
|
for most access control operations. An API (in a
|
|
|
|
|
separate document) is needed for the extended operation
|
|
|
|
|
getEffectiveAccess and specifyCredentials. RFC2219
|
|
|
|
|
[Bradner97] terminology is used.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. Introduction
|
|
|
|
|
|
|
|
|
|
The ability to securely access (replicate and distribute)
|
|
|
|
|
directory information throughout the network is necessary
|
|
|
|
|
for successful deployment. LDAP's acceptance as an
|
|
|
|
|
access protocol for directory information is driving the
|
|
|
|
|
need to provide an access control model definition for
|
|
|
|
|
LDAP directory content among servers within an enterprise
|
|
|
|
|
and the Internet. Currently LDAP does not define an
|
1999-10-07 01:23:54 +08:00
|
|
|
|
access control model, but one is needed to ensure
|
|
|
|
|
consistent secure access across heterogeneous LDAP
|
|
|
|
|
implementations. The major objective is to provide a
|
|
|
|
|
simple, but secure, highly efficient access control model
|
|
|
|
|
for LDAP while also providing the appropriate flexibility
|
|
|
|
|
to meet the needs of both the Internet and enterprise
|
|
|
|
|
environments and policies. This document defines the
|
|
|
|
|
model and the protocol extensions (controls and extended
|
|
|
|
|
operations).
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Overview
|
|
|
|
|
|
|
|
|
|
Access Control mechanisms evaluate requests for access to
|
|
|
|
|
protected resources and make decisions about whether
|
|
|
|
|
those requests should be granted or denied. In order to
|
|
|
|
|
make a grant/deny decision about a request for access to
|
|
|
|
|
a protected resource, an access control mechanism needs
|
|
|
|
|
to evaluate policy data. This policy data describes
|
|
|
|
|
security-relevant characteristics of the requesting
|
|
|
|
|
subject and the rules which govern the use of the target
|
|
|
|
|
object.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The access control model defines
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 2]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- A wire protocol for interoperability: The existing
|
1999-10-07 01:23:54 +08:00
|
|
|
|
LDAP protocol flows for add, delete, modify, and
|
|
|
|
|
search are used to manipulate access control
|
|
|
|
|
information. There are additional LDAP controls and
|
|
|
|
|
extended protocol operations defined to further help
|
1999-08-19 04:07:09 +08:00
|
|
|
|
management of access control information:
|
1999-08-19 04:15:22 +08:00
|
|
|
|
getEffectiveRights and specifyCredentials.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
- A set of access control information (ACI) attributes
|
|
|
|
|
for application portability: These attributes are
|
1999-08-19 04:07:09 +08:00
|
|
|
|
used as input to the LDAP APIs so access control
|
|
|
|
|
information can be addressed uniformly independent
|
1999-08-19 04:15:22 +08:00
|
|
|
|
of how that information is addressed and stored at
|
|
|
|
|
the server. These same attributes appear in LDIF
|
|
|
|
|
output for interchange of access control
|
|
|
|
|
information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
- A set of attributes to identity the access control
|
1999-10-07 01:23:54 +08:00
|
|
|
|
mechanisms supported by a server and a given part of
|
|
|
|
|
the namespace.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
Encoding of access control information on the wire is per
|
|
|
|
|
the LDAPv3 specifications.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The instantiation of an access control model at the
|
|
|
|
|
directory server is not defined in this document.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
No mechanisms are defined in this document to control
|
|
|
|
|
access to access control information or for storage of
|
|
|
|
|
access control information at the server; this is vendor
|
|
|
|
|
dependent.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A separate requirements document for access control
|
|
|
|
|
exists. The access control model used the requirements
|
|
|
|
|
documents as a guideline for the development of this
|
|
|
|
|
specification and are reflected in this specification to
|
|
|
|
|
the extent that the working group could agree on an
|
|
|
|
|
access control model.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
3. Terminology
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
An "access control list" contains the access control
|
|
|
|
|
policy information controlling access to an object or
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 3]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
collection of objects. An access control list consists
|
|
|
|
|
of a set of access control list entries.
|
|
|
|
|
|
|
|
|
|
An "access control list entry" defines a single subject
|
|
|
|
|
security attribute's granted rights for the objects
|
1999-08-19 04:07:09 +08:00
|
|
|
|
governed by the access control list to which it belongs.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The "access control information" (aci) for an object or a
|
|
|
|
|
collection of objects defines which subject security
|
|
|
|
|
attributes entitle a subject to which granted rights.
|
|
|
|
|
The access control information for an object may be
|
|
|
|
|
stored in an access control list.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
An "access decision" is a boolean-valued function which
|
|
|
|
|
answers the question: "can the subject with these subject
|
|
|
|
|
security attributes perform this operation on this
|
|
|
|
|
object?"
|
|
|
|
|
|
|
|
|
|
An "access decision function" is an algorithm which makes
|
|
|
|
|
an access decision based on subject security attributes,
|
1999-10-07 01:23:54 +08:00
|
|
|
|
access control information, an object identifier, and an
|
|
|
|
|
operation name (possibly augmented by additional
|
1999-08-19 04:07:09 +08:00
|
|
|
|
contextual information).
|
|
|
|
|
|
|
|
|
|
An "access decision function interface" is a programmatic
|
|
|
|
|
interface through which applications can request an
|
|
|
|
|
access decision.
|
|
|
|
|
|
|
|
|
|
An "access identity" is an identity which is used by an
|
|
|
|
|
access decision function to make an access decision.
|
|
|
|
|
|
|
|
|
|
An "audit identity" is an identity which does not, in the
|
|
|
|
|
absence of additional information, enable a party
|
|
|
|
|
receiving and examining it to determine which subject it
|
|
|
|
|
belongs to.
|
|
|
|
|
|
|
|
|
|
A "credential" is a collection of subject security
|
|
|
|
|
attributes.
|
|
|
|
|
|
|
|
|
|
"effective rights" are the complete set of rights a
|
|
|
|
|
subject is entitled to based on all access control lists
|
1999-10-07 01:23:54 +08:00
|
|
|
|
which apply to a specific object and based on all of the
|
|
|
|
|
subject's security attributes.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
"granted rights" are the complete set of rights an access
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 4]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
control list entitles a subject to based on a specific
|
|
|
|
|
subject security attribute.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
A "group" is a privilege attribute asserting a subject's
|
|
|
|
|
membership in the collection of subjects whose name is
|
1999-08-19 04:07:09 +08:00
|
|
|
|
that of the group.
|
|
|
|
|
|
|
|
|
|
An "identity" is a subject security attribute which is
|
|
|
|
|
unique to a single subject.
|
|
|
|
|
|
|
|
|
|
A "privilege attribute" is a subject security attribute
|
|
|
|
|
which may be shared by several subjects.
|
|
|
|
|
|
|
|
|
|
"required rights" are the complete set of rights needed
|
|
|
|
|
to authorize a requester to perform a specific operation
|
|
|
|
|
on an object of a specific type.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A "right" is the basic unit of access control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
administration. For each object type in an information
|
|
|
|
|
system, a security administrator defines a set of
|
|
|
|
|
required rights for each operation. For each object in
|
|
|
|
|
the system, a security administrator defines a set of
|
|
|
|
|
granted rights for each subject security attribute. When
|
|
|
|
|
an access decision is required, an access decision
|
|
|
|
|
function checks to make sure that the requester's subject
|
|
|
|
|
security attributes have been granted all required rights
|
|
|
|
|
needed to perform the requested operation on the
|
|
|
|
|
specified target object.
|
|
|
|
|
|
|
|
|
|
A "role" is a privilege attribute asserting a subject's
|
1999-10-07 01:23:54 +08:00
|
|
|
|
organizational position and entitlement to perform the
|
|
|
|
|
operations appropriate to that organizational position.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A "subject' is an entity which initiate actions in an
|
|
|
|
|
information system.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A "subject security attribute" is a defined property
|
|
|
|
|
which is used by a security policy evaluation system to
|
|
|
|
|
make policy decisions.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4. The Model
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The access control mechanism described in this draft
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 5]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
addresses these activities:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Definition of subject security attributes
|
|
|
|
|
information
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Definition of access control policy
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Retrieval of subject security attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Retrieval of effective access rights
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- Externalization of access control policy information
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4.1 Access Control Information Model
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
This document does not define formats for storage of
|
|
|
|
|
access control information; it does define the
|
|
|
|
|
operational semantics of access control operations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 6]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The diagram below illustrates the componentry of a LDAP
|
1999-08-19 04:07:09 +08:00
|
|
|
|
system and the placement of the function specified in
|
|
|
|
|
this draft.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
+-------------+
|
|
|
|
|
| Application |<--attrs to address ACI
|
|
|
|
|
+-------------+ - aCI
|
|
|
|
|
+--------+ - vendorACI
|
|
|
|
|
| LDAP | - policyOwner
|
|
|
|
|
| Client |
|
|
|
|
|
+--------+
|
|
|
|
|
|
|
|
|
|
|
| <-- LDAP controls
|
|
|
|
|
| - getEffectiveAccess
|
|
|
|
|
| - specifyCredentials
|
|
|
|
|
| <-- LDAP extended operations
|
|
|
|
|
| - getEffectiveAccess
|
|
|
|
|
v
|
|
|
|
|
+-----------------------------+
|
|
|
|
|
| LDAP Server (e.g. SLAPD) |
|
|
|
|
|
+-----------------------------+
|
|
|
|
|
. |
|
|
|
|
|
. |
|
|
|
|
|
. |
|
|
|
|
|
. |
|
|
|
|
|
v v
|
|
|
|
|
+----------+ +-----------+
|
|
|
|
|
| Access | | |<-attrs to define
|
|
|
|
|
| Control |<--| Datastore | access control mechanisms
|
|
|
|
|
| Manager | | | - supportedACIMechanisms
|
|
|
|
|
+----------+ +-----------+ - aCIMechanism
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
LDAP clients use the controls and extended operations
|
|
|
|
|
specified in this document to administer access control
|
|
|
|
|
policy enforced by LDAP servers. Servers may store
|
|
|
|
|
access control information in any way they choose. In
|
|
|
|
|
particular, servers may use the access control mechanisms
|
|
|
|
|
of their datastores to store and enforce LDAP access
|
|
|
|
|
control, or they may implement access control managers
|
|
|
|
|
external to their datastores. Datastores and external
|
|
|
|
|
access control managers may implement any access control
|
|
|
|
|
rule syntax and semantics they choose, as long as the
|
1999-10-07 01:23:54 +08:00
|
|
|
|
semantics are compatible with that defined in the section
|
1999-08-19 04:07:09 +08:00
|
|
|
|
titled "Operational Semantics of Access Control
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Operations".
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 7]
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The access control administration mechanisms specified in
|
|
|
|
|
this document are neutral with respect to policy
|
|
|
|
|
inheritance mechanisms, explicit vs. implicit denial,
|
|
|
|
|
and group nesting.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4.2 Bind and Credentials
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
A bind authenticates a principal to the directory. A
|
|
|
|
|
principal is represented by a DN. A principal has a set
|
1999-10-07 01:23:54 +08:00
|
|
|
|
of credentials that are used to determine access to
|
|
|
|
|
resources specified in ldap operations. These
|
|
|
|
|
credentials may be pushed to the server by the client by
|
|
|
|
|
using the specifyCredentials control (see section on the
|
|
|
|
|
specifyCredentials control) or may be pulled by the
|
|
|
|
|
server from the directory data, i.e. access control
|
|
|
|
|
information associated with a directory entry using
|
|
|
|
|
normal LDAP operations. Credentials may be local with
|
|
|
|
|
respect to the server. If the credentials are not local
|
|
|
|
|
to the server, i.e. owned by another server or
|
|
|
|
|
administrative scope, then the server may decide to
|
|
|
|
|
define a trust model that states how to evaluate the
|
|
|
|
|
trust of a credential at bind time. The definition of
|
|
|
|
|
such a trust model is outside the scope of this document.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. Access Control Mechanism Attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
There are several attributes defined associated with
|
|
|
|
|
access control. Two attributes are defined to identity
|
|
|
|
|
which access control mechanisms are supported by a given
|
|
|
|
|
server and by a given subtree: supportedACIMechanisms
|
|
|
|
|
and aCIMechanism.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5.1 Root DSE Attribute for Access Control Mechanism
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The server advertises which access control mechanisms it
|
|
|
|
|
supports by inclusion of the 'supportedACIMechanisms'
|
|
|
|
|
attribute in the root DSE. This attribute is a list of
|
|
|
|
|
OIDs, each of which identify an access control mechanism
|
|
|
|
|
supported by the server.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
(<OID to be assigned>
|
|
|
|
|
NAME 'supportedACIMechanisms'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 8]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
DESC list of access control mechanisms supported
|
|
|
|
|
by this directory server
|
|
|
|
|
SYNTAX LDAPOID
|
|
|
|
|
USAGE dSAOperation
|
|
|
|
|
)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The access control mechanism defined is:
|
|
|
|
|
LDAPv3 <OID to be assigned>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
Other vendor access control mechanisms can be defined (by
|
|
|
|
|
OID) and are the responsibility of those vendors to
|
|
|
|
|
provide the definition and OID.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
5.2 Subschema Attribute for Access Control Mechanism
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
A given naming context must provide information about
|
|
|
|
|
which access control mechanism is in effect for that
|
|
|
|
|
portion of the namespace. The following attribute must
|
|
|
|
|
be in each subschema entry associated with a naming
|
|
|
|
|
context whose access control mechanism is different from
|
|
|
|
|
adjacent naming contexts supported by that directory
|
|
|
|
|
server.
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aCIMechanism lists the value (an OID) that defines the
|
|
|
|
|
access control mechanism in effect for the scope of that
|
|
|
|
|
subschema entry.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
(<OID to be assigned>
|
|
|
|
|
NAME 'aCIMechanism'
|
|
|
|
|
DESC list of access control mechanism supported
|
|
|
|
|
in this subtree
|
|
|
|
|
SYNTAX LDAPOID
|
|
|
|
|
USAGE dSAOperation
|
|
|
|
|
)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. Access Control Information Attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The intent of the following attribute definitions is to
|
|
|
|
|
design a common interchange format. Any given LDAP
|
|
|
|
|
server should be able to translate the below defined
|
|
|
|
|
attributes into a meaningful operation requests. Each
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 9]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
server should be able to understand the attributes; there
|
|
|
|
|
should not be any ambiguity into what any part of the
|
|
|
|
|
syntax means.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
While the end goal is to have a common behavior model
|
|
|
|
|
between different LDAP server implementations, the
|
|
|
|
|
attribute definition alone will not ensure identical ACL
|
|
|
|
|
processing behavior between servers. The semantics of
|
|
|
|
|
how a server interprets the ACI syntax are defined in the
|
|
|
|
|
"Operational Semantics of Access Control' section of this
|
|
|
|
|
document. Additionally, while the server must recognize
|
|
|
|
|
and act on the attribute when received over the wire,
|
|
|
|
|
there are no requirements for the server to physically
|
|
|
|
|
store this attribute.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The attribute definition maintains an assumption that the
|
|
|
|
|
receiving server supports inheritance within the security
|
|
|
|
|
model. If the server does not support inheritance, the
|
|
|
|
|
receiving server must expand any inherited information
|
|
|
|
|
based on the scope flag.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Three attributes are defined so access control
|
|
|
|
|
information (ACI) can be addressed in a server
|
|
|
|
|
independent of server implementation. These attributes
|
|
|
|
|
are used in typical LDAP APIs and in LDIF output of ACI.
|
|
|
|
|
There are three attributes which may be queried or set on
|
|
|
|
|
all directory objects: aci, vendorAci and policyOwner.
|
|
|
|
|
Their BNF and definitions are defined below.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.1 The BNF
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< aci > ::= < acl entry syntax >
|
|
|
|
|
+ [ '#' <acl entry syntax > ]*
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< vendorAci > ::= <oid> + '#' + < printable string >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< acl entry syntax > ::= <familyOID> + '#' + <scope > + '#'
|
|
|
|
|
+ < rights > + '#' + < dnType >
|
|
|
|
|
+ '#' + < subjectDn >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< policyOwner > ::= < familyOid > + '#' + <scope >
|
|
|
|
|
+ '#' +< dnType > + '#' + < subjectDn >
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< subjectDn > ::= < printable string > | "public" | "this"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 10]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< familyOid > ::= < oid >
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
<scope > ::= "entry" | "subtree" | <level>
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< level > ::= numericstring
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< dnType > ::= "access-id" | "role" | "group"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< rights > ::= [ ] | [ < right > + [ '$'
|
|
|
|
|
+ <right> ] * ]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< rightsList > ::= <permissions> + ';' + <attrs>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< right > ::= <action > + ';' + <rightsList>
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< action > ::= "grant" | "deny"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< permissions > ::= [ ] | [ < permission >
|
|
|
|
|
+ [ ',' + <permission> ] ] *
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< attrs > ::= [ < attributeString>
|
|
|
|
|
+ [ ',' + < attributeString > ] * ]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< attributeString > ::= "[all]" | "[entry]"
|
|
|
|
|
| <printableString >
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
< permission > ::= "a" | "d" | "r" | "s" | "w" |
|
|
|
|
|
"c" | "g" | "s" | "m" | "u" | "e"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
These are the permissions defined for the IETF family OID.
|
|
|
|
|
"a" corresponds to add
|
|
|
|
|
"d" corresponds to delete
|
|
|
|
|
"r" corresponds to read
|
|
|
|
|
"w" corresponds to write
|
|
|
|
|
"c" corresponds to compare
|
|
|
|
|
"g" corresponds to get
|
|
|
|
|
"s" corresponds to set
|
|
|
|
|
"m" corresponds to manage
|
|
|
|
|
"u" corresponds to use
|
|
|
|
|
"e" corresponds to editDn
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.2 Other Defined Parameters
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This section defines additional parameters that are used
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 11]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
in the three (3) attributes that address access control
|
|
|
|
|
information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.2.1 Rights Families and Rights
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The rightsFamilyOID tells what permission set etc. will
|
|
|
|
|
follow in the string. The idea was to allow a different
|
|
|
|
|
permission set, scope etc. but with the same syntax.
|
|
|
|
|
So, for a single aCIMechanism ( the IETF one ) there
|
|
|
|
|
could be multiple rights families; one which IETF
|
|
|
|
|
defines, and MUST be recognized by servers claiming
|
|
|
|
|
support for this ACI mechanism, and other rights families
|
|
|
|
|
for models which can use the defined syntax, but need a
|
|
|
|
|
different permission set etc.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The following rights families are defined:
|
|
|
|
|
LDAPv3 <OID to be assigned>
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Other rights families can be defined (by OID). It is the
|
|
|
|
|
responsibility of those parties to provide the definition
|
|
|
|
|
and OID.
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.2.1.1 LDAPv3 Rights Family
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Access rights can apply to an entire object or to
|
|
|
|
|
attributes of the object. Each of the LDAP access rights
|
|
|
|
|
are discrete. One permission does not imply another
|
|
|
|
|
permission. The rights may be ORed together to provide
|
|
|
|
|
the desired rights list. The rights which apply to
|
|
|
|
|
attributes and the entry parallel the type of ldap
|
|
|
|
|
operations that can be performed.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Rights which apply to attributes:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
1 Read Read attribute values
|
|
|
|
|
2 Write Write attribute values
|
|
|
|
|
4 Search Search entries with specified attributes
|
|
|
|
|
8 Compare Compare attributes
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Rights that apply to an entire entry:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
16 Add Add an entry below this entry
|
|
|
|
|
32 Delete Delete this entry
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 12]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
64 EditDN Edit an entry's DN
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Rights that apply to the object to which the directory
|
|
|
|
|
entry points:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
128 Manage Perform a privileged operation; used to
|
|
|
|
|
restrict access to operations which
|
|
|
|
|
read or write especially sensitive data
|
|
|
|
|
256 Use Execute; useful in controlling access to
|
|
|
|
|
the objects referred to by directory
|
|
|
|
|
entries rather than in controlling
|
|
|
|
|
access
|
|
|
|
|
to the directory entries themselves
|
|
|
|
|
512 Get Get retrieves the attribute values
|
|
|
|
|
1024 Set Set writes the attribute values
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The rights that apply to the object to which the
|
|
|
|
|
directory entry points (manage/use/get/set) are best
|
|
|
|
|
described by example. Suppose the object to which the
|
|
|
|
|
directory entry points is a pointer.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Manage addresses the right to perform a privileged
|
|
|
|
|
operation such as administrative operations on the
|
|
|
|
|
printer. It can be used to restrict access to operations
|
|
|
|
|
which read/write especially sensitive data. Examples of
|
|
|
|
|
these operations are start queue, stop queue, and flush
|
|
|
|
|
queue.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Use addresses the right to execute and is useful to
|
|
|
|
|
control access to the objects referred to by the
|
|
|
|
|
directory entry. This right is not applicable to the
|
|
|
|
|
printer example; however, some objects support access to
|
|
|
|
|
user functions as well as data and administrative
|
|
|
|
|
functions to which this right could apply.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Get in this printer example addresses the right to send
|
|
|
|
|
data access commands to the print that retrieve data. An
|
|
|
|
|
example is list jobs in the queue.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Set in this printer example addresses the right to send
|
|
|
|
|
data modification commands to the printer that affect
|
|
|
|
|
printer operations. Examples are send job to print queue
|
|
|
|
|
and flush job from queue.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 13]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.2.2 DN Types
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The following DN Types strings are defined and MUST be
|
|
|
|
|
supported:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- access-id
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- group
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- role
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
An access-id is a non-collection (non-group and non-role
|
|
|
|
|
objects) DN that can be authenticated.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Other parties can (and will) define other DN Types. It
|
|
|
|
|
is the responsibility of those parties to provide the
|
|
|
|
|
definition and OID.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.3 Basic ACI Attribute (aCI)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
( aciOID NAME 'aCI' DESC 'Access control information'
|
|
|
|
|
EQUALITY caseIgnoreMatch SYNTAX directoryString )
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Within the access control syntax, the family OID
|
|
|
|
|
describes the permissions, dnType, subjectDn and scope
|
|
|
|
|
that will be found in the following string. If the OID
|
|
|
|
|
within the ACI attribute is listed as other than the IETF
|
|
|
|
|
family oid, the syntax is the same as listed below, but
|
|
|
|
|
one or more of the scope, dnType, subjectDn or
|
|
|
|
|
permissions may vary from the IETF defined syntax.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Within the access control syntax, there is a string which
|
|
|
|
|
describes the rights. This is a composite of the
|
|
|
|
|
permissions and resources to which the subject is being
|
|
|
|
|
granted or denied access. The set of permissions is
|
|
|
|
|
fixed. Either of the actions "grant" | "deny" may be
|
|
|
|
|
used when creating or updating ACI.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The attributeString is an attribute Name (defined to be a
|
|
|
|
|
printable string). If the string refers to an attribute
|
|
|
|
|
not defined in the given server's schema, the server
|
|
|
|
|
SHOULD report an error. Another option for the
|
|
|
|
|
attributeString is "[entry]". This is provided to
|
|
|
|
|
describe permissions which apply to an entire object.
|
|
|
|
|
This could mean actions such as delete the object, or add
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 14]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
a child object. The third option for attributeString is
|
|
|
|
|
"[all]" which means the permission set should apply to
|
|
|
|
|
all attributes.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
If the keyword "[all]" and another attribute are both
|
|
|
|
|
specified within an aci, the more specific permission set
|
|
|
|
|
for the attribute overrides the less specific permission
|
|
|
|
|
set for "[all]".
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
If two ACIs contain identical familyOID, scope, DnTypes
|
|
|
|
|
and DNs, the permission given DN is specified in two
|
|
|
|
|
distinct acis on any given entry, the rights lists can be
|
|
|
|
|
combined into one list. For example,
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all]#group#cn=Dept XYZ
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r;attribute1#group#cn=Dept
|
|
|
|
|
XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
is the equivalent of
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all];
|
|
|
|
|
r,attribute1#group#cn=Dept XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Using the defined BNF it is possible for the permission
|
|
|
|
|
string to be empty. The ACI
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;;attribute1$grant;r,s;
|
|
|
|
|
[all]#group#cn=Dept XYZ,c=US
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
means that this group is granted permission to read and
|
|
|
|
|
search all attributes except attribute1.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Similarly, the ACI
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree##group#cn=Dept XYZ, c=US
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
simply means that no permissions have been defined for
|
|
|
|
|
this group. It is up to the server implementation as to
|
|
|
|
|
whether the group does or does not receive permission to
|
|
|
|
|
attributes on an entry with an empty rights list.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Multiple attributeStrings can be listed after any given
|
|
|
|
|
permission set; for instance, "r,w ; attribute1,
|
|
|
|
|
attribute2". This means that if the server supports a
|
|
|
|
|
attribute aggregation mechanism, attribute1 and
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 15]
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
attribute2 should be considered to be part of the same
|
|
|
|
|
group. If the server does not support a grouping
|
|
|
|
|
mechanism, the permission set applies independently to
|
|
|
|
|
attribute1 and attribute2. For servers that do not
|
|
|
|
|
support attribute grouping, "grant ; r,w ; attribute1,
|
|
|
|
|
attribute2" results in the same operations as "grant ;
|
|
|
|
|
r,w; attribute1$grant; r,w; attribute2"
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.3.1 LDAP Operations
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The attributes which are defined for access control
|
|
|
|
|
interchange may be used in all LDAP operations.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Within the ldapmodify-delete operation, the entire acl may
|
|
|
|
|
be deleted by specifying
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn = some Entry
|
|
|
|
|
changetype: modify
|
|
|
|
|
delete: aci
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
In this case, the entry would then inherit its ACI from some
|
|
|
|
|
other node in the tree depending on the server inheritance
|
|
|
|
|
model.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Deleting the last ACI value from an entry is not the same as
|
|
|
|
|
deleting the ACI from the entry. It is possible for an entry
|
|
|
|
|
to contain an ACI with no values. In this case, nothing is
|
|
|
|
|
returned to the client when querying the aci. It is server
|
|
|
|
|
dependent whether access is granted or denied in the absence
|
|
|
|
|
of any ACI information. Deleting an ACI value which does
|
|
|
|
|
not exist will result in an unchanged ACI and a return code
|
|
|
|
|
specifying that the attribute value does not exist.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.4 ACI Examples
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.4.1 Attribute Definition
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Pretend IETFFamilyOID = 1.2.3.4
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The following two examples show an administrative
|
|
|
|
|
subdomain being established. The first example shows a
|
|
|
|
|
single user being assigned the policyOwner for the entire
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 16]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
domain. The second example shows a group of ids assigned
|
|
|
|
|
to the policy Owner.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
policyOwner: 1.2.3.4#subtree#access-id#cn=Hoyt
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
policyOwner: 1.2.3.4#subtree#group#cn=System Owners,
|
|
|
|
|
o=Company
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The next example shows an aci attribute where a group
|
|
|
|
|
"cn=Dept XYZ, c=US" is being given permissions to read,
|
|
|
|
|
search and compare attribute1. The permission should
|
|
|
|
|
apply to the entire subtree below the node containing
|
|
|
|
|
this ACI.
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci:1.2.3.4#subtree#grant;r,s,c;
|
|
|
|
|
attribute1#group#cn=Dept XYZ,c=US
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The next example shows an ACI attribute where a role
|
|
|
|
|
"cn=SysAdmins,o=Company" is being given permissions to
|
|
|
|
|
add objects below this node, and read, search and compare
|
|
|
|
|
attributes 2 and 3. The permission should apply to the
|
|
|
|
|
entire subtree below the node containing this ACI.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;a;[entry]$grant;
|
|
|
|
|
r,s,c;attribute2, attribute3#role#
|
|
|
|
|
cn=SysAdmins,o=Company
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6.4.2 Modifying the ACI Values
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Replace works similarly to all other attributes. If the
|
|
|
|
|
attribute value does not exist, create the value. If the
|
|
|
|
|
attribute does exist, replace the value. If the ACI value
|
|
|
|
|
is replaced, all ACI values are replaced.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
A given aci for an entry:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#deny;r,w;[all]$grant;r,s,c;
|
|
|
|
|
attribute2#group#cn=Dept ABC
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r;[all]$grant;r,s,c;
|
|
|
|
|
attribute1#group#cn=Dept XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
perform the following change:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 17]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn=someEntry
|
|
|
|
|
changetype: modify
|
|
|
|
|
replace: aci
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all];#group#cn=Dept LMN
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The resulting acl is:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all];#group#cn=Dept LMN
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
( aci values for Dept XYZ and ABC are lost through the
|
|
|
|
|
replace )
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
During an ldapmodify-add, if the ACI does not exist, the
|
|
|
|
|
create the ACI with the specific aci value(s). If the ACI
|
|
|
|
|
does exist, then add the specified values to the given ACI.
|
|
|
|
|
For example a given ACI:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all]#group#cn=Dept XYZ
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
with a modification:
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn=someEntry
|
|
|
|
|
changetype: modify
|
|
|
|
|
add: aci
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r;attribute1#group#cn=Dept XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
would yield an multi-valued aci of:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all]#group#cn=Dept XYZ
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r;attribute1#group#cn=Dept XYZ
|
|
|
|
|
To delete a particular aci value, use the regular ldapmodify
|
|
|
|
|
- delete syntax
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Given an ACI of:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all]#group#cn=Dept XYZ
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r;attribute1#group#cn=Dept XYZ
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
dn: cn = some Entry
|
|
|
|
|
changetype: modify
|
|
|
|
|
delete: aci
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r;attribute1#group#cn=Dept XYZ
|
|
|
|
|
|
|
|
|
|
would yield a remaining ACI on the server of
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 18]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aci: 1.2.3.4#subtree#grant;r,w;[all]#group#cn=Dept XYZ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.5 Vendor ACI Attribute (vendorAci)
|
|
|
|
|
|
|
|
|
|
( vendorAciOID NAME 'vendorACI' DESC 'Vendor specific
|
|
|
|
|
Access control information' EQUALITY caseIgnoreMatch SYNTAX
|
|
|
|
|
directoryString )
|
|
|
|
|
|
|
|
|
|
The Vendor specific ACI information is listed in its own
|
|
|
|
|
attribute. This may be used by vendors to provide vendor
|
|
|
|
|
specific access control related information which can not be
|
|
|
|
|
expressed in defined ACISyntax. Within the vendorACI, the
|
|
|
|
|
oid determines the format or the printable string to follow.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.6 Policy Owner Attribute (policyOwner)
|
|
|
|
|
|
|
|
|
|
( policyOwnerOID NAME 'policyOwner' DESC 'Policy Owner
|
|
|
|
|
Access Control Information' EQUALITY caseIgnoreMatch
|
|
|
|
|
SYNTAX directoryString )
|
|
|
|
|
|
|
|
|
|
Policy ownership controls administrative subdomains. It
|
|
|
|
|
can also control who has permission to set / change acls
|
|
|
|
|
for implementations that do not have ACI controlling
|
|
|
|
|
access to itself. If there are multiple policy owners
|
|
|
|
|
it is implementation specific as to the behavior of
|
|
|
|
|
whether policy owner #1 can override policy owner # 2.
|
|
|
|
|
|
|
|
|
|
The syntax for policyOwner includes the 'scope' flag.
|
|
|
|
|
Servers which do not support inheritance must expand the
|
|
|
|
|
policyOwner inheritance similar to the expansion of the
|
|
|
|
|
ACI. The scope and any inheritance hierarchy for policy
|
|
|
|
|
ownership is distinct from any inheritance hierarchy
|
|
|
|
|
defined for ACI values.
|
|
|
|
|
|
|
|
|
|
If the policy owner is not specified for any object in
|
|
|
|
|
the tree, behavior is implementation defined. For
|
|
|
|
|
instance, if no object anywhere in the tree has a
|
|
|
|
|
policy owner, then the server could simply assert that
|
|
|
|
|
the 'root DN' is considered the policy owner for all
|
|
|
|
|
objects. An alternate approach might be that the
|
|
|
|
|
implementation defines the entryDN to be the policy
|
|
|
|
|
owner.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 19]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7. Operational Semantics of Access Control Operations
|
|
|
|
|
|
|
|
|
|
The semantics of access control operations described in
|
|
|
|
|
this document are defined operationally in terms of
|
|
|
|
|
"histories". A history is a sequence of actions (x1, x2,
|
|
|
|
|
..., xN).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7.1 Types of actions
|
|
|
|
|
|
|
|
|
|
We consider five types of actions:
|
|
|
|
|
|
|
|
|
|
- LDAP Access Control Policy Update actions:
|
|
|
|
|
invocations of ldap modify when used to add, delete,
|
|
|
|
|
or replace the aci attribute; invocations of ldap
|
|
|
|
|
add when used to add an entry with an aci attribute.
|
|
|
|
|
A LDAP Access Control Policy Update action may
|
|
|
|
|
replace the policy (by completely replacing the aci
|
|
|
|
|
attribute with new policy information) or it may
|
|
|
|
|
grant or deny specific rights while leaving others
|
|
|
|
|
unaffected.
|
|
|
|
|
|
|
|
|
|
- LDAP Access Control Policy Query operations:
|
|
|
|
|
invocations of ldap search when used to retrieve the
|
|
|
|
|
aci attribute; invocations of ldap search with the
|
|
|
|
|
getEffectiveRightsRequest control; invocations of
|
|
|
|
|
the ldapGetEffectiveRightsRequest extended
|
|
|
|
|
operation.
|
|
|
|
|
|
|
|
|
|
- Datastore Access Control Policy Update Actions: any
|
|
|
|
|
operation implemented by the server which LDAP is
|
|
|
|
|
using as its datastore which changes the access
|
|
|
|
|
policy enforced with respect to attempts to access
|
|
|
|
|
LDAP directory entries and their attributes.
|
|
|
|
|
|
|
|
|
|
- LDAP Access Request operations: invocations of LDAP
|
|
|
|
|
entry or attribute access operations (Read, Update,
|
|
|
|
|
Search, Compare, etc...).
|
|
|
|
|
|
|
|
|
|
- Other operations: anything else, including Datastore
|
|
|
|
|
operations which do not change the access policy
|
|
|
|
|
enforced by the server.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 20]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7.2 Semantics of Histories
|
|
|
|
|
|
|
|
|
|
The semantics of histories are defined as follows:
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation, and no rights not
|
|
|
|
|
granted by the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation. The Query may show
|
|
|
|
|
that the subject also has other rights not granted
|
|
|
|
|
by the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject does not have
|
|
|
|
|
any right denied by the Update operation. The Query
|
|
|
|
|
may show that the subject has rights not denied by
|
|
|
|
|
the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
|
|
|
|
operation. The Request will fail with an access-
|
|
|
|
|
denied exception if it requires any right not
|
|
|
|
|
granted by the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
|
|
|
|
operation. The Request may succeed if it requires
|
|
|
|
|
rights not granted by the Update operation,
|
|
|
|
|
depending on the policy in force before the Update
|
|
|
|
|
operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), LDAP Access Request
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 21]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Request will fail with an access-denied
|
|
|
|
|
exception if it requires any right denied to the
|
|
|
|
|
requesting subject by the Update operation. If the
|
|
|
|
|
Request requires only rights which were not denied
|
|
|
|
|
by the Update operation, it may succeed, depending
|
|
|
|
|
on the policy in force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Other, LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation, and no rights not
|
|
|
|
|
granted by the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Other, LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject has all rights
|
|
|
|
|
granted by the Update operation. The Query may show
|
|
|
|
|
that the subject also has other rights not granted
|
|
|
|
|
by the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Other, LDAP Query
|
|
|
|
|
|
|
|
|
|
The Query will show that the subject does not have
|
|
|
|
|
any right denied by the Update operation. The Query
|
|
|
|
|
may show that the subject has rights not denied by
|
|
|
|
|
the Update operation, depending on the policy in
|
|
|
|
|
force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Other, LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
|
|
|
|
operation. The Request will fail with an access-
|
|
|
|
|
denied exception if it requires any right not
|
|
|
|
|
granted by the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Other, LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will succeed if it requires only rights
|
|
|
|
|
granted to the requesting subject by the Update
|
|
|
|
|
operation. The Request may succeed if it requires
|
|
|
|
|
rights not granted by the Update operation,
|
|
|
|
|
depending on the policy in force before the Update
|
|
|
|
|
operation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 22]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Other, LDAP Access Request
|
|
|
|
|
|
|
|
|
|
The Request will fail with an access-denied
|
|
|
|
|
exception if it requires any right denied to the
|
|
|
|
|
requesting subject by the Update operation. If the
|
|
|
|
|
Request requires only rights which were not denied
|
|
|
|
|
by the Update operation, it may succeed, depending
|
|
|
|
|
on the policy in force before the Update operation.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Datastore Policy Update, LDAP
|
|
|
|
|
Query
|
|
|
|
|
|
|
|
|
|
The result of the Query is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Datastore Policy Update, LDAP
|
|
|
|
|
Query
|
|
|
|
|
|
|
|
|
|
The result of the Query is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Datastore Policy Update, LDAP
|
|
|
|
|
Query
|
|
|
|
|
|
|
|
|
|
The result of the Query is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Replace), Datastore Policy Update, LDAP
|
|
|
|
|
Access Request
|
|
|
|
|
|
|
|
|
|
The result of the Access Request is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Grant), Datastore Policy Update, LDAP
|
|
|
|
|
Access Request
|
|
|
|
|
|
|
|
|
|
The result of the Access Request is not defined.
|
|
|
|
|
|
|
|
|
|
- LDAP Update (Deny), Datastore Policy Update, LDAP
|
|
|
|
|
Access Request
|
|
|
|
|
|
|
|
|
|
The result of the Access Request is not defined.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8. Access Control Parameters for LDAP Controls & Extended
|
|
|
|
|
Operations
|
|
|
|
|
|
|
|
|
|
This section defines the parameters used in the access
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 23]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
control LDAP controls and extended operations in this
|
|
|
|
|
document.
|
|
|
|
|
|
|
|
|
|
targetDN specifies the initial directory entry in DN
|
|
|
|
|
syntax on which the control or extended operation is
|
|
|
|
|
performed.
|
|
|
|
|
|
|
|
|
|
whichObject specifies whether the access control
|
|
|
|
|
information (in the get effective rights control) which
|
|
|
|
|
is retrieved is for the target directory entry (ENTRY) or
|
|
|
|
|
the target directory entry and its subtree (SUBTREE).
|
|
|
|
|
|
|
|
|
|
rightsFamily specifies the family of rights that will be
|
|
|
|
|
retrieved for the get effective rights control or
|
|
|
|
|
extended operation performed. A rights family has a
|
|
|
|
|
defined set of rights.
|
|
|
|
|
|
|
|
|
|
rightsList in the get effective rights control or
|
|
|
|
|
extended operations response is of the form specified in
|
|
|
|
|
the BNF for <rightsList>.
|
|
|
|
|
|
|
|
|
|
dnType speficies the type of subject security attribute.
|
|
|
|
|
Defined types are access-id, group, and role.
|
|
|
|
|
|
|
|
|
|
subjectDN is a LDAP string that defines the subject or
|
|
|
|
|
value of the dnType. The subjectDN may be a DN or
|
|
|
|
|
another string such as IPAddress (dotted-decimal string
|
|
|
|
|
representation) on which access control is get/set. If
|
|
|
|
|
the subject is an entry in the directory, then the syntax
|
|
|
|
|
of the LDAP string is DN. Two well-known subjectDNs
|
|
|
|
|
strings are defined
|
|
|
|
|
|
|
|
|
|
- public - meaning public access for all users
|
|
|
|
|
|
|
|
|
|
- this - meaning the user whose name matches the entry
|
|
|
|
|
being accessed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9. Access Control Information (ACI) Controls
|
|
|
|
|
|
|
|
|
|
The access control information controls provide a way to
|
|
|
|
|
manipulate access control information in conjunction with
|
|
|
|
|
a LDAP operation. Two LDAP controls are defined. These
|
|
|
|
|
controls allow access control information to be get/set
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 24]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while manipulating other directory information for that
|
|
|
|
|
entry. The controls are:
|
|
|
|
|
|
|
|
|
|
- getEffectiveRights to obtain the effective rights
|
|
|
|
|
for a given directory entry(s) for a given subject
|
|
|
|
|
during a ldap_search operation
|
|
|
|
|
|
|
|
|
|
- specifyCredentials to specify a set of credentials
|
|
|
|
|
for the bind identity (DN) during a ldap_bind
|
|
|
|
|
operation
|
|
|
|
|
|
|
|
|
|
9.1 getEffectiveRights Control
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9.1.1 Request Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control may only be included in the ldap_search
|
|
|
|
|
message as part of the controls field of the
|
|
|
|
|
LDAPMessage, as defined in Section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The controlType is set to <OID to be assigned>. The
|
|
|
|
|
criticality MAY be either TRUE or FALSE (where absent is
|
|
|
|
|
also equivalent to FALSE) at the client's option. The
|
|
|
|
|
controlValue is an OCTET STRING, whose value is the BER
|
|
|
|
|
encoding of a value of the following SEQUENCE:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
getEffectiveRightsRequest ::= SEQUENCE {
|
|
|
|
|
effectiveRightsRequest SEQUENCE OF SEQUENCE {
|
|
|
|
|
rightsFamily LDAPOID | "*",
|
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
|
|
|
|
dnType "access-id"|"group"|"role"|"*",
|
|
|
|
|
subjectDN LDAPString,
|
|
|
|
|
}
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The effectiveRightsRequest is a set of sequences that
|
|
|
|
|
state the whichObject (entry or entry plus subtree) and
|
|
|
|
|
specifics of the control request to be performed. One or
|
|
|
|
|
more rightsFamily can be be obtained for a given
|
|
|
|
|
subjectDN ad dnType. A "*" in the rightsFamily field
|
|
|
|
|
indicates that the rights for all rights families defined
|
|
|
|
|
for the subjectDN / dnType are to be returned. A "*" in
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 25]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
the dnType field specifies that all DN types are to be
|
|
|
|
|
used in returning the effective rights. This control is
|
|
|
|
|
applied to the filter and scope set by the ldap_search
|
|
|
|
|
operation, i.e. base, one-level, subtree.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.1.2 Response Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control is included in the ldap_search_response
|
|
|
|
|
message as part of the controls field of the LDAPMessage,
|
|
|
|
|
as defined in Section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The controlType is set to <OID to be assigned>. The
|
|
|
|
|
criticality MAY be either TRUE or FALSE (where absent is
|
|
|
|
|
also equivalent to FALSE). The controlValue is an OCTET
|
|
|
|
|
STRING, whose value is the BER encoding of a value of the
|
|
|
|
|
following SEQUENCE:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
getEffectiveRightsResponse ::= {
|
|
|
|
|
result ENUMERATED {
|
|
|
|
|
success (0),
|
|
|
|
|
operationsError (1),
|
|
|
|
|
unavailableCriticalExtension (12),
|
|
|
|
|
noSuchAttribute (16),
|
|
|
|
|
undefinedAttributeType (17),
|
|
|
|
|
invalidAttributeSyntax (21),
|
|
|
|
|
insufficientRights (50),
|
|
|
|
|
unavailable (52),
|
|
|
|
|
unwillingToPerform (53),
|
|
|
|
|
other (80)
|
1999-08-19 04:07:09 +08:00
|
|
|
|
}
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
The effective rights returned are returned with each
|
|
|
|
|
entry returned by the search result. The control
|
|
|
|
|
response for ldap_search is:
|
|
|
|
|
|
|
|
|
|
PartialEffectiveRightsList ::= SEQUENCE OF SEQUENCE {
|
|
|
|
|
rightFamily LDAPOID,
|
|
|
|
|
rightsList LDAPString,
|
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
}
|
|
|
|
|
dnType LDAPString
|
|
|
|
|
subjectDN LDAPString
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 26]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Although this extends the search operation, there are no
|
|
|
|
|
incompatibilities between versions. LDAPv2 cannot send a
|
|
|
|
|
control, hence the above structure cannot be returned to
|
|
|
|
|
a LDAPv2 client. A LDAPv3 client cannot send this
|
|
|
|
|
request to a LDAPv2 server. A LDAPv3 server not
|
|
|
|
|
supporting this control cannot return the additional
|
|
|
|
|
data.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.1.3 Client-Server Interaction
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The getEffectiveRightsRequest control requests the rights
|
|
|
|
|
that MUST be in effect for requested directory
|
|
|
|
|
entry/attribute based on the subject DN. The server that
|
|
|
|
|
consumes the search operation looks up the rights for the
|
|
|
|
|
returned directory information based on the subject DN
|
|
|
|
|
and returns that rights information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
There are six possible scenarios that may occur as a
|
|
|
|
|
result of the getEffectiveRights control being included
|
|
|
|
|
on the search request:
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
1. If the server does not support this control and the
|
|
|
|
|
client specified TRUE for the control's criticality
|
|
|
|
|
field, then the server MUST return
|
|
|
|
|
unavailableCriticalExtension as a return code in
|
|
|
|
|
the searchResponse message and not send back any
|
|
|
|
|
other results. This behavior is specified in
|
|
|
|
|
section 4.1.12 of [LDAPv3].
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
2. If the server does not support this control and the
|
|
|
|
|
client specified FALSE for the control's
|
|
|
|
|
criticality field, then the server MUST ignore the
|
|
|
|
|
control and process the request as if it were not
|
|
|
|
|
present. This behavior is specified in section
|
|
|
|
|
4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
3. If the server supports this control but for some
|
|
|
|
|
reason such as cannot process specified
|
|
|
|
|
rightsFamily and the client specified TRUE for the
|
|
|
|
|
control's criticality field, then the server SHOULD
|
|
|
|
|
do the following: return
|
|
|
|
|
unavailableCriticalExtension as a return code in
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
|
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 27]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
the searchResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4. If the server supports this control but for some
|
|
|
|
|
reason such as cannot process specified
|
|
|
|
|
rightsFamily and the client specified FALSE for the
|
|
|
|
|
control's criticality field, then the server should
|
|
|
|
|
process as 'no rights returned for that family' and
|
|
|
|
|
include the result Unavailable in the
|
|
|
|
|
getEffectiveRightsResponse control in the
|
|
|
|
|
searchResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. If the server supports this control and can return
|
|
|
|
|
the rights per the rightsFamily information, then
|
|
|
|
|
it should include the getEffectiveRightsResponse
|
|
|
|
|
control in the searchResult message with a result
|
|
|
|
|
of success.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. If the search request failed for any other reason,
|
|
|
|
|
then the server SHOULD omit the
|
|
|
|
|
getEffectiveRightsResponse control from the
|
|
|
|
|
searchResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The client application is assured that the correct rights
|
|
|
|
|
are returned for scope of the search operation if and
|
|
|
|
|
only if the getEffectiveRightsResponse control returns
|
|
|
|
|
the rights. If the server omits the
|
|
|
|
|
getEffectiveRightsResponse control from the searchResult
|
|
|
|
|
message, the client SHOULD assume that the control was
|
|
|
|
|
ignored by the server.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The getEffectiveRightsResponse control, if included by
|
|
|
|
|
the server in the searchResponse message, should have the
|
|
|
|
|
getEffectiveRightsResult set to either success if the
|
|
|
|
|
rights are returned or set to the appropriate error code
|
|
|
|
|
as to why the rights could not be returned.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The server may not be able to return a right because it
|
|
|
|
|
may not exist in that directory object's attribute; in
|
|
|
|
|
this case, the rights request is ignored with success.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.2 specifyCredentials Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control is used with the ldap_bind() operation to
|
|
|
|
|
push credentials from the client to the server. A
|
|
|
|
|
privilege attribute certificate is an example of a
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 28]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
credential that could be pushed from the client to the
|
|
|
|
|
server.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.2.1 Request Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control is included in the ldap_bind message as
|
|
|
|
|
part of the controls field of the LDAPMessage, as
|
|
|
|
|
defined in Section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The controlType is set to <OID to be assigned>. The
|
|
|
|
|
criticality MAY be either TRUE or FALSE (where absent is
|
|
|
|
|
also equivalent to FALSE) at the client's option. The
|
|
|
|
|
controlValue is an OCTET STRING, whose value is the BER
|
|
|
|
|
encoding of a value of the following SEQUENCE:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
specifyCredentialRequest ::= SEQUENCE {
|
|
|
|
|
credential LDAPString
|
|
|
|
|
}
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The credential specifies the credential (e.g. groups,
|
|
|
|
|
roles, etc) that the client is requesting be associated
|
|
|
|
|
with the bind DN for access control determination in
|
|
|
|
|
subsequent ldap operations. This provides a 'push' model
|
|
|
|
|
for credentials where the client attempts to 'push' the
|
|
|
|
|
credential to the server. The server may process at bind
|
|
|
|
|
time as follows:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- server may unconditionally ignore
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- server may unconditionally accept
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- server may define trust model and evaluate of the
|
|
|
|
|
trust of each credential
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
If this control is not used, it is assumed that the
|
|
|
|
|
server determines (pulls) the credentials associated with
|
|
|
|
|
the bind DN when needed in subsequent ldap operations to
|
|
|
|
|
provide access control.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.2.2 Response Control
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This control is included in the ldap_bind message as part
|
|
|
|
|
of the controls field of the LDAPMessage, as defined in
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 29]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The controlType is set to <OID to be assigned>. The
|
|
|
|
|
criticality MAY be either TRUE or FALSE (where absent is
|
|
|
|
|
also equivalent to FALSE). The controlValue is an OCTET
|
|
|
|
|
STRING, whose value is the BER encoding of a value of the
|
|
|
|
|
following SEQUENCE:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
specifyCredentialsResponse ::= {
|
|
|
|
|
result ENUMERATED {
|
|
|
|
|
success (0),
|
|
|
|
|
operationsError (1),
|
|
|
|
|
unavailableCriticalExtension (12),
|
|
|
|
|
unavailable (52),
|
|
|
|
|
unwillingToPerform (53),
|
|
|
|
|
other (80)
|
|
|
|
|
}
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
No data is returned; just the result is returned.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Although this extends the bind operation, there are no
|
|
|
|
|
incompatibilities between versions. LDAPv2 cannot send a
|
|
|
|
|
control. A LDAPv3 client cannot send this request to a
|
|
|
|
|
LDAPv2 server. A LDAPv3 server not supporting this
|
|
|
|
|
control cannot return the additional data.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.2.3 Client-Server Interaction
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The specifyCredentialsRequest control specifies the
|
|
|
|
|
credentials that the client wants the server to use for
|
|
|
|
|
access control in subsequent ldap operations. The server
|
|
|
|
|
that consumes the bind operation may unconditionally
|
|
|
|
|
accept, ignore, or evaluate the trust of the specified
|
|
|
|
|
credentials at bind time and returns only a success or
|
|
|
|
|
failure response (no data returned).
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
There are six possible scenarios that may occur as a
|
|
|
|
|
result of the specifyCredential control being included on
|
|
|
|
|
the bind request:
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
1. If the server does not support this control and the
|
|
|
|
|
client specified TRUE for the control's criticality
|
|
|
|
|
field, then the server MUST return
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 30]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
unavailableCriticalExtension as a return code in
|
|
|
|
|
the bindResponse message. This behavior is
|
|
|
|
|
specified in section 4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
2. If the server does not support this control and the
|
|
|
|
|
client specified FALSE for the control's
|
|
|
|
|
criticality field, then the server MUST ignore the
|
|
|
|
|
control and process the request as if it were not
|
|
|
|
|
present. This behavior is specified in section
|
|
|
|
|
4.1.12 of [LDAPv3].
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
3. If the server supports this control but for some
|
|
|
|
|
reason such as cannot process specified credential
|
|
|
|
|
(e.g. server decided to evaluate the trust of that
|
|
|
|
|
credential and the result is the server not
|
|
|
|
|
trusting all the credentials or unconditionally
|
|
|
|
|
ignores the credential) and the client specified
|
|
|
|
|
TRUE for the control's criticality field, then the
|
|
|
|
|
server SHOULD do the following: return
|
|
|
|
|
unavailableCriticalExtension as a return code in
|
|
|
|
|
the bindResult message and omit the
|
|
|
|
|
specifyCredentialResponse control in the bindResult
|
|
|
|
|
message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4. If the server supports this control but for some
|
|
|
|
|
reason such as cannot process specified credential
|
|
|
|
|
(e.g. server decided to evaluate the trust of that
|
|
|
|
|
credential and the result is the server not
|
|
|
|
|
trusting all the credentials or unconditionally
|
|
|
|
|
ignores the credential) and the client specified
|
|
|
|
|
FALSE for the control's criticality field, then the
|
|
|
|
|
server should process as 'credential ignored' and
|
|
|
|
|
include the result Unavailable in the
|
|
|
|
|
specifyCredentialResponse control in the bindResult
|
|
|
|
|
message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. If the server supports this control and evaulates
|
|
|
|
|
the trust of that credential and the result is the
|
|
|
|
|
server trusting all the credentials, then it should
|
|
|
|
|
include the specifyCredentialResponse control in
|
|
|
|
|
the bindResult message with a result of success.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. If the bind request failed for any other reason,
|
|
|
|
|
then the server SHOULD omit the
|
|
|
|
|
specifyCredentialResponse control from the
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 31]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
bindResult message.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The client application is assured that the correct
|
|
|
|
|
credentials are used by the server when specified by the
|
|
|
|
|
client for subsequent ldap operations if and only if the
|
|
|
|
|
specifyCredentialResponse is successful. If the server
|
|
|
|
|
omits the specifyCredentialResponse control from the
|
|
|
|
|
bindResponse message, the client SHOULD assume that the
|
|
|
|
|
control was ignored by the server.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The specifyCredentialResponse control, if included by the
|
|
|
|
|
server in the bindResponse message, should have the
|
|
|
|
|
bindResult set to either success if the credentials were
|
|
|
|
|
accepted by the server or set to the appropriate error
|
|
|
|
|
code as to why the credentials were not accepted.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
10. Access Control Extended Operation
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
An extended operation, get effective rights, is defined
|
|
|
|
|
to obtain the effective rights for a given directory
|
|
|
|
|
entry for a given subject. This operation may help with
|
|
|
|
|
the management of access control information independent
|
|
|
|
|
of manipulating other directory information.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
10.1 LDAP Get Effective Rights Operation
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
ldapGetEffectiveRightsRequest ::= [APPLICATION 23]
|
|
|
|
|
SEQUENCE {
|
|
|
|
|
requestName [0] <OID to be assigned>,
|
|
|
|
|
requestValue [1] OCTET STRING OPTIONAL }
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
where
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
requestValue ::= SEQUENCE {
|
|
|
|
|
targetDN LDAPDN,
|
|
|
|
|
updates SEQUENCE OF SEQUENCE {
|
|
|
|
|
rightsFamily LDAPOID | "*",
|
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
|
|
|
|
dnType LDAPOID | "*",
|
|
|
|
|
subjectDN LDAPString,
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 32]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The requestName is a dotted-decimal representation of the
|
|
|
|
|
OBJECT IDENTIFIER corresponding to the request. The
|
|
|
|
|
requestValue is information in a form defined by that
|
|
|
|
|
request, encapsulated inside an OCTET STRING.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
The server will respond to this with an LDAPMessage
|
|
|
|
|
containing the ExtendedResponse which is a rights list.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
ldapGetEffectiveRightsResponse ::= [APPLICATION 24]
|
|
|
|
|
SEQUENCE {
|
|
|
|
|
COMPONENTS OF LDAPResult,
|
|
|
|
|
responseName [10] <OID to be assigned> OPTIONAL,
|
|
|
|
|
effectiveRights [11] OCTET STRING OPTIONAL }
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
where
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
effectiveRights ::= SEQUENCE OF SEQUENCE {
|
|
|
|
|
rightFamily LDAPOID,
|
|
|
|
|
rightsList ENUMERATED,
|
|
|
|
|
whichObject ENUMERATED {
|
|
|
|
|
LDAP_ENTRY (1),
|
|
|
|
|
LDAP_SUBTREE (2)
|
|
|
|
|
},
|
|
|
|
|
subjectDnType LDAPOID,
|
|
|
|
|
subjectDN LDAPSTRING
|
|
|
|
|
}
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
If the server does not recognize the request name, it
|
|
|
|
|
MUST return only the response fields from LDAPResult,
|
|
|
|
|
containing the protocolError result code.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
11. Security Considerations
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
This document proposes protocol elements for transmission
|
|
|
|
|
of security policy information. Security considerations
|
|
|
|
|
are discussed throughout this draft. Because subject
|
|
|
|
|
security attribute information is used to evaluate
|
|
|
|
|
decision requests, it is security-sensitive information
|
|
|
|
|
and must be protected against unauthorized modification
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 33]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
whenever it is stored or transmitted.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
12. References
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[LDAPv3] M. Wahl, T. Howes, S. Kille, "Lightweight
|
|
|
|
|
Directory Access Protocol (v3)", RFC 2251, December 1997.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[ECMA] ECMA, "Security in Open Systems: A Security
|
|
|
|
|
Framework" ECMA TR/46, July 1988
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[REQTS] Stokes, Byrne, Blakley, "Access Control
|
|
|
|
|
Requirements for LDAP, INTERNET-DRAFT <draft-ietf-
|
|
|
|
|
ldapext-acl-reqts-02.txt>, August 1998.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[ATTR] M.Wahl, A, Coulbeck, T. Howes, S. Kille,
|
|
|
|
|
"Lightweight Directory Access Protocol (v3)": Attribute
|
|
|
|
|
Syntax Definitions, RFC 2252, December 1997.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[UTF] M. Wahl, S. Kille, "Lightweight Directory Access
|
|
|
|
|
Protocol (v3)": A UTF-8 String Representation of
|
|
|
|
|
Distinguished Names", RFC 2253, December 1997.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
[Bradner97] Bradner, Scott, "Key Words for use in RFCs to
|
|
|
|
|
Indicate Requirement Levels", RFC 2119.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
AUTHOR(S) ADDRESS
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Ellen Stokes Bob Blakley
|
|
|
|
|
IBM Dascom
|
|
|
|
|
11400 Burnet Rd 5515 Balcones Drive
|
|
|
|
|
Austin, TX 78758 Austin, TX 78731
|
|
|
|
|
USA USA
|
|
|
|
|
mail-to: stokes@austin.ibm.com mail-to: blakley@dascom.com
|
|
|
|
|
phone: +1 512 838 3725 phone: +1 512 458 4037 ext 5012
|
|
|
|
|
fax: +1 512 838 8597 fax: +1 512 458 237
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Debbie Byrne
|
|
|
|
|
IBM
|
|
|
|
|
11400 Burnet Rd
|
|
|
|
|
Austin, TX 78758
|
|
|
|
|
USA
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 34]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
mail-to: djbyrne@us.ibm.com
|
|
|
|
|
phone: +1 512 838 1960
|
|
|
|
|
fax: +1 512 838 8597
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 35]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Internet-Draft Access Control Model 5 October 1999
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
Stokes, Byrne, Blakley Expires 5 April 2000 [Page 36]
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
CONTENTS
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
1. Introduction....................................... 2
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
2. Overview........................................... 2
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
3. Terminology........................................ 3
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
4. The Model.......................................... 5
|
|
|
|
|
4.1 Access Control Information Model............. 6
|
|
|
|
|
4.2 Bind and Credentials......................... 8
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
5. Access Control Mechanism Attributes................ 8
|
|
|
|
|
5.1 Root DSE Attribute for Access Control
|
|
|
|
|
Mechanism.................................... 8
|
|
|
|
|
5.2 Subschema Attribute for Access Control
|
|
|
|
|
Mechanism.................................... 9
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
6. Access Control Information Attributes.............. 9
|
|
|
|
|
6.1 The BNF...................................... 10
|
|
|
|
|
6.2 Other Defined Parameters..................... 11
|
|
|
|
|
6.2.1 Rights Families and Rights 12
|
|
|
|
|
6.2.2 DN Types 14
|
|
|
|
|
6.3 Basic ACI Attribute (aCI).................... 14
|
|
|
|
|
6.3.1 LDAP Operations 16
|
|
|
|
|
6.4 ACI Examples................................. 16
|
|
|
|
|
6.4.1 Attribute Definition 16
|
|
|
|
|
6.4.2 Modifying the ACI Values 17
|
|
|
|
|
6.5 Vendor ACI Attribute (vendorAci)............. 19
|
|
|
|
|
6.6 Policy Owner Attribute (policyOwner)......... 19
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
7. Operational Semantics of Access Control
|
|
|
|
|
Operations......................................... 20
|
|
|
|
|
7.1 Types of actions............................. 20
|
|
|
|
|
7.2 Semantics of Histories....................... 21
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
8. Access Control Parameters for LDAP Controls &
|
|
|
|
|
Extended Operations................................ 23
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9. Access Control Information (ACI) Controls.......... 24
|
|
|
|
|
9.1 getEffectiveRights Control................... 25
|
|
|
|
|
9.1.1 Request Control 25
|
|
|
|
|
9.1.2 Response Control 26
|
|
|
|
|
9.1.3 Client-Server Interaction 27
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- i -
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
9.2 specifyCredentials Control................... 28
|
|
|
|
|
9.2.1 Request Control 29
|
|
|
|
|
9.2.2 Response Control 29
|
|
|
|
|
9.2.3 Client-Server Interaction 30
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
10. Access Control Extended Operation.................. 32
|
|
|
|
|
10.1 LDAP Get Effective Rights Operation.......... 32
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
11. Security Considerations............................ 33
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
12. References......................................... 34
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- ii -
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
Full Copyright Statement
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
Copyright (C) The Internet Society (1999).<2E> All Rights
|
|
|
|
|
Reserved.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
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.<2E> 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.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
The limited permissions granted above are perpetual and will
|
|
|
|
|
not be revoked by the Internet Society or its successors or
|
|
|
|
|
assigns.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
1999-08-19 04:15:22 +08:00
|
|
|
|
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.
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-10-07 01:23:54 +08:00
|
|
|
|
- iii -
|
1999-08-19 04:07:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|