One document matched: draft-ietf-webdav-acl-03.txt

Differences from draft-ietf-webdav-acl-02.txt



     INTERNET-DRAFT                  Geoffrey Clemm, Rational Software 
     draft-ietf-webdav-acl-03        Anne Hopkins, Microsoft 
                                     Corporation 
                                     Eric Sedlar, Oracle Corporation 
                                     Jim Whitehead, U.C. Santa Cruz 
                   
     Expires May 24, 2001            November 24, 2000 


                       WebDAV Access Control Protocol 


     Status of this Memo 

     This document is an Internet-Draft and is in full conformance with 
     all provisions of Section 10 of RFC2026. 

     Internet-Drafts are working documents of the Internet Engineering 
     Task Force (IETF), its areas, and its working groups. Note that 
     other groups may also distribute working documents as Internet-
     Drafts. 

     Internet-Drafts are draft documents valid for a maximum of six 
     months and may be updated, replaced, or obsoleted by other 
     documents at any time. It is inappropriate to use Internet- Drafts 
     as reference material or to cite them other than as "work in 
     progress." 

     The list of current Internet-Drafts can be accessed at 
     http://www.ietf.org/ietf/1id-abstracts.txt 

     The list of Internet-Draft Shadow Directories can be accessed at 
     http://www.ietf.org/shadow.html. 


     Abstract 

     This document specifies a set of methods, headers, and message 
     bodies that define the WebDAV Access Control extensions to the 
     HTTP/1.1 protocol. This protocol permits a client to remotely read 
     and modify access control lists that instruct a server whether to 
     grant or deny operations upon a resource (such as HTTP method 
     invocations) by a given principal. 

     This document is a product of the Web Distributed Authoring and 
     Versioning (WebDAV) working group of the Internet Engineering Task 
     Force. Comments on this draft are welcomed, and should be addressed 
     to the acl@webdav.org mailing list. Other related documents can be 
     found at http://www.webdav.org/acl/, and 
     http://www.ics.uci.edu/pub/ietf/webdav/. 





     Clemm, Hopkins, Sedlar, Whitehead                 [Page 1] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     Table of Contents 

     1 INTRODUCTION ............................................3 
     1.1 Terms .................................................3 
     1.2 Notational Conventions ................................4 

     2 PRINCIPALS ..............................................4 

     3 PRIVILEGES ..............................................5 
     3.1 DAV:read Privilege ....................................5 
     3.2 DAV:write Privilege ...................................6 
     3.3 DAV:read-acl Privilege ................................6 
     3.4 DAV:write-acl Privilege ...............................6 
     3.5 DAV:all Privilege .....................................6 

     4 PRINCIPAL PROPERTIES ....................................6 
     4.1 DAV:is-principal ......................................6 
     4.2 DAV:authentication-id .................................6 

     5 ACCESS CONTROL PROPERTIES ...............................7 
     5.1 DAV:owner .............................................7 
     5.2 DAV:supported-privilege-set ...........................7 
     5.3 DAV:current-user-privilege-set ........................8 
     5.4 DAV:acl ...............................................8 
      5.4.1  ACE Principal .....................................8 
      5.4.2  ACE Grant and Deny ................................9 
      5.4.3  ACE Protection ...................................10 
      5.4.4  ACE Inheritance ..................................10 
     5.5 DAV:acl-semantics ....................................10 
      5.5.1  first-match Semantics ............................14 
      5.5.2  all-grant-before-any-deny Semantics ..............14 
      5.5.3  no-deny Semantics ................................14 
     5.6 DAV:principal-collection-set .........................10 
     5.7 Example: PROPFIND to retrieve access control properties11 

     6 ACCESS CONTROL AND EXISTING METHODS ....................14 
     6.1 OPTIONS ..............................................15 
      6.1.1  Example - OPTIONS ................................15 

     7 ACCESS CONTROL METHODS .................................16 
     7.1 ACL ..................................................16 
      7.1.1  ACL Preconditions ................................16 
      7.1.2  Example: the ACL method ..........................17 
      7.1.3  Example: ACL method failure ......................17 

     8 INTERNATIONALIZATION CONSIDERATIONS ....................18 

     9 SECURITY CONSIDERATIONS ................................19 

     10  AUTHENTICATION .......................................20 

     11  IANA CONSIDERATIONS ..................................20 

     12  INTELLECTUAL PROPERTY ................................20 

     13  ACKNOWLEDGEMENTS .....................................21 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 2] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     14  REFERENCES ...........................................21 

     15  AUTHORS' ADDRESSES ...................................22 

     16  STILL TO DO ..........................................22 
       

     1  INTRODUCTION 

          The goal of the WebDAV access control extensions is to provide 
          an interoperable mechanism for handling discretionary access 
          control for content in WebDAV servers.  WebDAV access control 
          can be implemented on content repositories with security as 
          simple as that of a UNIX file system, as well as more 
          sophisticated models.  The underlying principle of access 
          control is that who you are determines how you can access a 
          resource. The "who you are" is defined by a "principal" 
          identifier; users, client software, servers, and groups of the 
          previous have principal identifiers. The "how" is determined 
          by a single "access control list" (ACL) associated with a 
          resource.  An ACL contains a set of "access control entries" 
          (ACEs), where each ACE specifies a principal and a set of 
          rights that are either granted or denied to that principal. 
          When a principal submits an operation (such as an HTTP or 
          WebDAV method) to a resource for execution, the server 
          evaluates the ACEs in the ACL to determine if the principal 
          has permission for that operation. 

          This specification has intentionally omits discussion of 
          authentication, as the HTTP protocol already has a number of 
          authentication mechanisms[RFC2617] .  Some authentication 
          mechanism (such as HTTP Digest Authentication, which all 
          WebDAV compliant implementations are required to support) must 
          be availableto validate the identity of a principal.  

          In the interests of timeliness, the following set of security 
          mechanisms is currently viewed as out of scope of this 
          document: 

            *  Access control that applies only to a particular property 
               on a resource, rather than the entire resource. 

            *  Role-based security (where a role can be seen as a 
               dynamically defined collection of principals) 

            *  Specification of the ways an ACL on a resource is 
               initialized 

            *  Specification of an ACL that applies globally to a 
               method, rather than to a particular resource 

     1.1 Terms 

          This draft uses the terms defined in HTTP [RFC2616] and WebDAV 
          [RFC2518].  In addition, the following terms are defined: 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 3] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

        principal 

          A "principal" is a distinct human or computational actor that 
          initiates access to network resources.  In this protocol, a 
          principal is an HTTP resource that represents such an actor. 

        privilege 

          A "privilege" controls access to a particular set of HTTP 
          operations on a resource. 

        aggregate privilege    

          An "aggregate privilege " is a privilege that comprises a set 
          of other privileges. 

        access control list (acl) 

          An "acl " is a list of access control elements that define 
          access control to a particular resource. 

        access control element (ace) 

          An "ace " either grants or denies a particular set of 
          privileges for a particular principal. 

        inherited ace 

          An "inherited ace " is an ace that is shared from the acl of 
          another resource. 


     1.2 Notational Conventions 

          The augmented BNF used by this document to describe protocol 
          elements is described in Section 2.1 of [RFC2616]. Because 
          this augmented BNF uses the basic production rules provided in 
          Section 2.2 of [RFC2616], those rules apply to this document 
          as well. 

          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 
          NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 
          "OPTIONAL" in this document are to be interpreted as described 
          in [RFC2119]. 


     2  PRINCIPALS 

          A principal is an HTTP resource that represents a distinct 
          human or computational actor that initiates access to network 
          resources.  On many implementations, users and groups are 
          represented as principals; other types of principals are also 
          possible.   Although an implementation MAY support PROPFIND 
          and PROPPATCH to access and modify information about a 
          principal, it is not required to do so.   

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 4] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          A principal resource may or may not be a collection.  A 
          collection principal may only contain other principals (not 
          other types of resources).  Servers that support aggregation 
          of principals (e.g. groups of users or other groups) MUST 
          manifest them as collection principals.  The WebDAV methods 
          for examining and maintaining collections (e.g. DELETE, 
          PROPFIND) MAY be used to maintain collection principals.  
          Membership in a collection principal is recursive, so a 
          principal in a collection principal GRPA contained by 
          collection principal GRPB is a member of both GRPA and GRPB.  
          Implementations not supporting recursive membership in 
          principal collections can return an error if the client 
          attempts to bind collection principals into other collection 
          principals. 


     3  PRIVILEGES 

          Ability to perform a given method on a resource SHOULD be 
          controlled by one or more privileges.  Authors of protocol 
          extensions that define new HTTP methods SHOULD specify which 
          privileges (by defining new privileges, or mapping to ones 
          below) are required to perform the method.  A principal with 
          no privileges to a resource SHOULD be denied any HTTP access 
          to that resource. 

          Privileges may be aggregates of other privileges.  If a 
          principal is granted or denied an aggregate privilege, it is 
          semantically equivalent to granting or denying each of the 
          aggregated privileges individually.  For example, an 
          implementation may define add-member and remove-member 
          privileges that control the ability to add and remove an 
          internal member of a collection.  Since these privileges 
          control the ability to update the state of a collection, these 
          privileges would be aggregated by the DAV:write privilege on a 
          collection, and granting the DAV:write privilege on a 
          collection would also grant the add-member and remove-member 
          privileges. 

          The set of privileges that apply to a particular resource may 
          vary with the DAV:resourcetype of the resource, as well as 
          between different server implementations.  To promote 
          interoperability, however, WebDAV defines a set of well-known 
          privileges (e.g. DAV:read and DAV:write), which can at least 
          be used to classify the other privileges defined on a 
          particular resource. 


     3.1 DAV:read Privilege 

          The read privilege controls methods that return information 
          about the state of the resource, including the resource's 
          properties. Affected methods include GET and PROPFIND.  The 
          read privilege does not control the OPTIONS method since the 
          OPTIONS method returns capabilities rather than state. 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 5] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     3.2 DAV:write Privilege 

          The write privilege controls methods that modify the state of 
          the resource, such as PUT and PROPPATCH.  Note that state 
          modification is also controlled via locking (see section 5.3 
          of [WEBDAV]), so effective write access requires that both 
          write privileges and write locking requirements are satisfied. 


     3.3 DAV:read-acl Privilege 

          The DAV:read-acl privilege controls the use of PROPFIND to 
          retrieve the DAV:acl, and DAV:current-user-privilege-set 
          properties of the resource. 


     3.4 DAV:write-acl Privilege 

          The DAV:write-acl privilege controls use of the ACL method to 
          modify the DAV:acl property of the resource. 


     3.5 DAV:all Privilege 

          The DAV:all privilege controls all privileges on the resource. 


     4  PRINCIPAL PROPERTIES 

          Principals are manifested to clients as an HTTP resource, 
          identified by a URL.  A principal MUST have a DAV:displayname 
          property.  This protocol defines the following additional 
          properties for a principal. 


     4.1 DAV:is-principal 

          This property indicates whether this resource is a principal.  
          A resource MUST have a non-empty DAV:is-principal property if 
          and only if it is a principal resource.   (Note: If we can 
          just add a DAV:principal element to the DAV:resourcetype 
          property, then we do not need a DAV:is-principal property.) 

          <!ELEMENT is-principal (#PCDATA)> 
          PCDATA value: any non-empty value ("T" is suggested) 

     4.2 DAV:authentication-id 

          A property containing the name used to authenticate this 
          principal (typically typed into a login prompt/dialog). 

          <!ELEMENT authentication-id (#PCDATA)> 
          PCDATA value: any string 



     Clemm, Hopkins, Sedlar, Whitehead                        [Page 6] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     5  ACCESS CONTROL PROPERTIES 

          This specification defines a number of new properties for 
          WebDAV resources.  Access control properties may be retrieved 
          just like other WebDAV properties, using the PROPFIND method.  
          Some access control properties (such as DAV:owner) MAY be 
          updated with the PROPPATCH method.   

          HTTP resources that support the WebDAV Access Control Protocol 
          MUST contain the following properties: 


     5.1 DAV:owner 

          This property identifies a particular principal as being the 
          "owner" of the resource. 

          <!ELEMENT owner (href prop?)> 
          <!ELEMENT prop (see [RFC2518], section 12.11)> 
           
          An implementation MAY include a list of selected properties of 
          that principal resource.  Which properties (if any) are 
          included is implementation defined.  An implementation MAY 
          allow the use of PROPPATCH to update the DAV:owner field. 

     5.2 DAV:supported-privilege-set 

          This is a read-only property that identifies the privileges 
          defined for the resource.   

          <!ELEMENT supported-privilege-set (supported-privilege*)> 
           
          Each privilege appears as an XML element, where aggregate 
          privileges list as sub-elements all of the privileges that 
          they aggregate. 

          <!ELEMENT supported-privilege 
           (privilege, abstract?, description, supported-privilege*)> 
          <!ELEMENT privilege ANY> 
           
          An abstract privilege is used to classify the non-abstract 
          privilege elements.  An abstract privilege of a resource MUST 
          NOT be used in an ACE for that resource. Servers MUST fail an 
          attempt to set an abstract privilege. 

          <!ELEMENT abstract EMPTY> 
           
          A description is a human-readable description of what this 
          privilege controls access to.  

          <!ELEMENT description #PCDATA> 
           
          It is envisioned that a WebDAV ACL-aware administrative client 
          would list the supported privileges in a dialog box, and allow 
          the user to choose non-abstract privileges to apply in an ACE.  
          The privileges tree is useful programmatically to map well-

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 7] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          known privileges (defined by WebDAV or other standards groups) 
          into privileges that are supported by any particular server 
          implementation.  The privilege tree also serves to hide 
          complexity in implementations allowing large number of 
          privileges to be defined by displaying aggregates to the user. 


     5.3 DAV:current-user-privilege-set 

          This is a read-only property containing a list of privileges 
          granted to the currently authenticated HTTP user.  The current 
          user has no access privileges to an object protected by an ACL 
          unless that user matches one or more of the principals 
          specified in the ACEs. 

          <!ELEMENT current-user-privilege-set (privilege*)> 
          <!ELEMENT privilege ANY> 
           
          Each element in the DAV:current-user-privilege-set property 
          MUST identify a privilege from the DAV:supported-privilege-set 
          property. 

     5.4 DAV:acl 

          This property specifies the list of access control entries 
          (ACEs), which define what principals are to get what 
          privileges for this resource. 

          <!ELEMENT acl (ace*)> 
           
          Each DAV:ace element specifies the set of privileges to be 
          either granted or denied to a single principal.  If the 
          DAV:acl property is empty, no principal is granted any 
          privilege. 

          <!ELEMENT ace (principal, (grant|deny), protected?, 
          inherited?)> 
           
          An attempt to update the DAV:acl property with a PROPPATCH 
          MUST fail. 

     5.4.1 ACE Principal 

          The DAV:principal element identifies the principal to which 
          this ACE applies. 

          <!ELEMENT principal ((href, prop?) 
           | all | authenticated | unauthenticated 
           | property | self)> 
           
          The current user matches DAV:href only if that user is 
          authenticated as being (or being a member of) the principal 
          identified by the URL contained by that DAV:href.   An 
          implementation MAY include a DAV:prop element after the 
          DAV:href element, containing a list of selected properties of 
          that principal resource.  Which properties (if any) are 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 8] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          included in the DAV:prop element is implementation defined.  
          The DAV:prop element is primarily intended for implementations 
          that do not support PROPFIND requests on the principal URL. 

          <!ELEMENT prop (see [RFC2518], section 12.11)> 
           
          The current user always matches DAV:all.  

          <!ELEMENT all EMPTY> 
           
          The current user matches DAV:authenticated only if 
          authenticated. 

          <!ELEMENT authenticated EMPTY> 
           
          The current user matches DAV:unauthenticated only if not 
          authenticated. 

          <!ELEMENT unauthenticated EMPTY> 
           
          DAV:all is the union of DAV:authenticated, and 
          DAV:unauthenticated. For a given request, the user matches 
          either DAV:authenticated, or DAV:unauthenticated, but not 
          both. 

          The current user matches a DAV:property principal in a DAV:acl 
          property of a resource only if the identified property of that 
          resource contains a DAV:href that identifies a principal, and 
          the current user is authenticated as being (or being a member 
          of) that principal.  For example, if the DAV:property element 
          contained <DAV:owner/>, the current user would match the 
          DAV:property principal only if the current user is 
          authenticated as matching the principal identified by the 
          DAV:owner property of the resource. 

          <!ELEMENT property ANY> 
           
          The current user matches DAV:self in a DAV:acl property of the 
          resource only if that resource is a principal object and the 
          current user is authenticated as being that principal. 

          <!ELEMENT self EMPTY> 

     5.4.2 ACE Grant and Deny 

          Each DAV:grant or DAV:deny element specifies the set of 
          privileges to be either granted or denied to the specified 
          principal.  A DAV:grant or DAV:deny element of the DAV:acl of 
          a resource MUST only contain elements specified in the 
          DAV:supported-privilege-set of that resource. 

          <!ELEMENT grant (privilege+)> 
          <!ELEMENT deny (privilege+)> 
          <!ELEMENT privilege ANY> 


     Clemm, Hopkins, Sedlar, Whitehead                        [Page 9] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     5.4.3 ACE Protection 

          If an ACE contains a DAV:protected element, an ACL request 
          without that ACE MUST fail. 

          <!ELEMENT protected EMPTY> 

     5.4.4 ACE Inheritance 

          The presence of a DAV:inherited element indicates that this 
          ACE is inherited from another resource that is identified by 
          the URL contained in a DAV:href element.  An inherited ACE 
          cannot be modified directly, but instead the ACL on the 
          resource from which it is inherited must be modified. 

          Note that ACE inheritance is not the same as ACL 
          initialization.  ACL initialization defines the ACL that a 
          newly created resource will use (if not specified).  ACE 
          inheritance refers to an ACE that is logically shared - where 
          an update to the resource containing an ACE will affect the 
          ACE of each resource that inherits that ACE.  The method by 
          which ACLs are initialized or by which ACEs are inherited is 
          not defined by this document. 

          <!ELEMENT inherited (href)> 

     5.5 DAV:acl-semantics 

          This is a read-only property that defines the ACL semantics.  
          These semantics define how multiple ACEs that match the 
          current user are combined, what  are the constraints on how 
          ACEs can be ordered, and which principals must have an ACE. 

          Since it is not practical to require all implementations to 
          use the same ACL semantics, the DAV:acl-semantics property is 
          used to identify the ACL semantics for a particular resource.  
          The DAV:acl-semantics element is defined in section 6. 


     5.6 DAV:principal-collection-set 

          Often a versioning implementation constrains where a principal 
          can be located in the URL space.  The DAV:principal-
          collection-set enumerates which collections may contain 
          principals. 

          <!ELEMENT principal-collection-set (href*)> 
           
          Since different servers can control different parts of the URL 
          namespace, different resources on the same host MAY have 
          different DAV:principal-collection-set values .  The 
          collections specified in the DAV:principal-collection-set MAY 
          be located on different hosts from the resource. 


     Clemm, Hopkins, Sedlar, Whitehead                        [Page 10] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     5.7 Example: PROPFIND to retrieve access control properties 

          The following example shows how access control information can 
          be retrieved by using the PROPFIND method to fetch the values 
          of the DAV:owner, DAV:supported-privilege-set, DAV:current-
          user-privilege-set, and DAV:acl properties. 

          >> Request << 
           
          PROPFIND /top/container/ HTTP/1.1 
          Host: www.foo.org 
          Content-type: text/xml; charset="utf-8"  
          Content-Length: xxx 
          Depth: 0 
          Authorization: Digest username="ejw",  
             realm="users@foo.org", nonce="...", 
             uri="/top/container/", response="...", opaque="..." 
           
          <?xml version="1.0" encoding="utf-8"> 
          <D:propfind xmlns:D="DAV:"> 
            <D:owner/> 
            <D:supported-privilege-set/> 
            <D:current-user-privilege-set/> 
            <D:acl/> 
          </D:propfind> 
           
          >> Response << 
           
          HTTP/1.1 207 Multi-Status 
          Content-Type: text/xml; charset="utf-8" 
          Content-Length: xxx 
           
          <?xml version="1.0" encoding="utf-8" ?> 
          <D:multistatus 
             xmlns:D="DAV" 
             xmlns:A="http://www.acl.org/"> <D:response> <D:propstat> 
            <D:status>HTTP/1.1 200 OK</D:status> 
            <D:prop> 
              <D:owner> 
                <D:href>http://www.foo.org/users/gclemm</D:href></D:owner> 
              <D:supported-privilege-set> 
                <D:supported-privilege> 
                  <D:privilege> <D:all/> </D:privilege> 
                  <D:abstract/> 
                  <D:description>Any operation</D:description> 
                  <D:supported-privilege> 
                    <D:privilege> </D:read> </D:privilege> 
                    <D:description>Read any object</D:description> 
                  </D:supported-privilege> 
                  <D:supported-privilege> 
                    <D:privilege> <D:write/> </D:privilege> 
                    <D:abstract/> 
                    <D:description>Write any object</D:description> 
                    <D:supported-privilege> 
                      <D:privilege> <A:create/> </D:privilege> 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 11] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

                      <D:description>Create an object</D:description> 
                    </D:supported-privilege> 
                    <D:supported-privilege> 
                      <D:privilege> <A:update> </D:privilege> 
                      <D:description>Update an object</D:description> 
                    </D:supported-privilege> 
                    <D:supported-privilege> 
                      <D:privilege> <A:delete> </D:privilege> 
                      <D:description>Delete an object</D:description> 
                    </D:supported-privilege> 
                  </D:supported-privilege> 
                  <D:supported-privilege> 
                    <D:privilege> <D:read-acl/> </D:privilege> 
                    <D:description>Read the ACL</D:privilege> 
                  </D:supported-privilege> 
                  <D:supported-privilege> 
                    <D:privilege> <D:write-acl/> </D:privilege> 
                    <D:description>Write the ACL</D:privilege> 
                  </D:supported-privilege> 
                </D:supported-privilege> 
              </D:supported-privilege-set> 
              <D:current-user-privilege-set> 
                <D:privilege> <D:read/> </D:privilege> 
                <D:privilege> <D:read-acl/> </D:privilege> 
              </D:current-user-privilege-set> 
              <D:acl> 
                <D:ace> 
                  <D:principal> 
                    <D:href>http://www.foo.org/users/esedlar</D:href> 
                    <D:prop> 
                      <D:authentication-id>esedlar</D:authentication-id> 
                      <D:displayname>Eric Sedlar</D:displayname> 
                    </D:prop> </D:principal>  
                  <D:grant> 
                    <D:privilege> <D:read/> </D:privilege> 
                    <D:privilege> <D:write/> </D:privilege> 
                    <D:privilege> <D:read-acl/> </D:privilege></D:grant> 
                </D:ace> 
                <D:ace> 
                  <D:principal> 
                    <D:href>http://www.foo.org/groups/marketing/</d:href> 
                  </D:principal> 
                  <D:deny> 
                    <D:privilege> <D:read/> </D:privilege> </D:deny> 
                <D:ace/> 
                <D:ace> 
                  <D:principal> 
                    <D:property> <D:owner/> </D:property> </D:principal> 
                  <D:grant> 
                    <D:privilege> <D:read-acl/> </D:privilege> 
                    <D:privilege> <D:write-acl/> </D:privilege></D:grant> 
                <D:ace/> 
                <D:ace> 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 12] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

                  <D:principal> <D:all/> </D:principal> 
                  <D:grant> 
                    <D:privilege> <D:read/> </D:privilege> </D:grant> 
                  <D:inherited> 
                    <D:href>http://www.foo.org/top/</D:href></D:inheritied> 
                </D:ace> </D:acl> 
              </D:prop> 
            </D:propstat> </D:response> </D:multistatus> 
           

          The value of the DAV:owner property is a single DAV:href XML 
          element containing the URL of the principal that owns this 
          resource.  

          The value of the DAV:supported-privilege-set property is a 
          tree of supported privileges: 

            DAV:acl (abstract) 
               | 
               +-- DAV:read 
               +-- DAV:write (abstract) 
                     | 
                     +-- http://www.acl.org/create 
                     +-- http://www.acl.org/update 
                     +-- http://www.acl.org/delete 
                +-- DAV:read-acl 
                +-- DAV:write-acl 
           
          The DAV:current-user-privilege-set property contains two 
          privileges, DAV:read, and DAV:read-acl. This indicates that 
          the current authenticated user only has the ability to read 
          the resource, and read the DAV:acl property on the resource. 

          The DAV:acl property contains a set of four ACEs: 

          ACE #1: The principal identified by the URL 
          http://www.foo.org/users/esedlar is granted the DAV:read, 
          DAV:write, and DAV:read-acl privileges. 

          ACE #2: The principals identified by the URL 
          http://www.foo.org/groups/marketing/ are denied the DAV:read 
          privilege.  In this example, the principal URL identifies a 
          group, which is represented by a collection principal. 

          ACE #3: In this ACE, the principal is a property principal, 
          specifically the DAV:owner property. When evaluating this ACE, 
          the value of the DAV:owner property is retrieved, and is 
          examined to see if it contains a DAV:href XML element. If so, 
          the URL within the DAV:href element is read, and identifies a 
          principal. In this ACE, the owner is granted DAV:read-acl, and 
          DAV:write-acl privileges. 

          ACE #4: This ACE grants the DAV:all principal (all users) the 
          DAV:read privilege. This ACE is inherited from the resource 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 13] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          http://www.foo.org/top/, the parent collection of this 
          resource. 


     6  ACL SEMANTICS 

          The ACL semantics define how multiple ACEs that match the 
          current user are combined, what are the constraints on how 
          ACEs can be ordered, and which principals must have an ACE. 

          <!ELEMENT acl-semantics ANY> 
           ANY value: zero or more of the ACL semantic elements 

     6.1  ACE Combination 

          The DAV:ace-combination element defines how privileges from 
          multiple ACEs that match the current user will be combined to 
          determine the access rights for that user.  Multiple ACEs may 
          match the same user because the same principal can appear in 
          multiple ACEs, because multiple principals can identify the 
          same user, and because one principal can be a member of 
          another principal.   

          <!ELEMENT ace-combination 
           (first-match | all-grant-before-any-deny | no-deny)> 

     6.1.1 DAV:first-match ACE Combination 

          The ACEs are evaluated in the order in which they appear in 
          the ACL.  If the first ACE that matches the current user does 
          not grant all the privileges needed for the request, the 
          request MUST fail. 

          <!ELEMENT first-match EMPTY> 

     6.1.2 DAV:all-grant-before-any-deny ACE Combination 

          The ACEs are evaluated in the order in which they appear in 
          the ACL.  If an evaluated ACE denies a privilege needed for 
          the request, the request MUST fail.  If all ACEs have been 
          evaluated without the user being granted all privileges needed 
          for the request, the request MUST fail.  

          <!ELEMENT all-grant-before-any-deny EMPTY> 

     6.1.3 DAV:no-deny ACE Combination 

          All ACEs in the ACL are evaluated.  An "individual ACE" is one 
          whose principal identifies the current user.  A "group ACE" is 
          one whose principal is a collection that contains a principal 
          that identifies the current user.  A privilege is granted if 
          it is granted by an individual ACE and not denied by an 
          individual ACE, or if it is granted by a group ACE and not 
          denied by an individual or group ACE.  A request MUST fail if 
          any of its needed privileges are not granted. 

          <!ELEMENT no-deny EMPTY> 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 14] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     6.2 ACE Ordering 

          The DAV:ace-ordering element defines a constraint on how the 
          ACEs can be ordered in the ACL.   

     6.2.1 DAV:deny-before-grant ACE Ordering 

          This element indicates that all deny ACEs must precede all 
          grant ACEs. 

          <!ELEMENT deny-before-grant EMPTY> 

     6.3 Required Principals 

          The required principal elements identify which principals must 
          have an ACE defined in the ACL.   

          <!ELEMENT required-principal 
            (href | all | authenticated | unauthenticated | property | 
          self)> 
           
          For example, the following element requires that the ACE 
          contain a DAV:owner property ACE: 

          <D:required-principal xmlns:D="DAV:"> 
            <D:property> <D:owner/> </D:property> 
          </D:required-principal> 

     7  ACCESS CONTROL AND EXISTING METHODS 

          This section defines the impact of access control 
          functionality on existing methods. 


     7.1 OPTIONS 

          If the server supports access control, it MUST return "access-
          control" as a field in the DAV response header from an OPTIONS 
          request on any resource implemented by that server. 

     7.1.1 Example - OPTIONS 

          >>REQUEST 
           
            OPTIONS /foo.html HTTP/1.1  
            Host: www.webdav.org 
            Content-Length: 0 
              
          >>RESPONSE 
           
            HTTP/1.1 200 OK 
            DAV: 1, 2, access-control 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 15] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

            Allow: OPTIONS, GET, PUT, PROPFIND, PROPPATCH, ACL 
           
          In this example, the OPTIONS response indicates that the 
          server supports access control and that /foo.html can have its 
          access control list modified by the ACL method. 


     8  ACCESS CONTROL METHODS 

     8.1 ACL 

          A DAV:acl property of a resource is modified by the ACL 
          method.  A new DAV:acl value must be written in its entirety, 
          including any inherited ACEs.  Unless the DAV:acl property of 
          the resource can be updated to be exactly the value specified 
          in the ACL request, the ACL request MUST fail.  If a server 
          restricts the set of ACEs visible to the current user via the 
          DAV:acl property, then the ACL request would only replace the 
          set of ACEs visible to the current user, and would not affect 
          any ACE that was not visible. 

          In order to avoid overwriting DAV:acl changes by another 
          client, a client SHOULD acquire a WebDAV lock on the resource 
          before retrieving the DAV:acl property of a resource that it 
          intends on updating. 


     8.1.1 ACL Preconditions 

          An implementation MAY enforce one or more of the following 
          constraints on an ACL request.  If the constraint is violated, 
          a 403 (Forbidden) response MUST be returned and the indicated 
          XML element MUST be returned in the response body. 

          <DAV:protected/>: An implementation MAY protect an ACE from 
          modification or deletion.  For example, some implementations 
          implicitly grant the DAV:owner of a resource DAV:read-acl and 
          DAV:write-acl privileges, and this cannot be changed by a 
          client.   

          <DAV:too-many-aces/>: An implementation MAY limit the number 
          of ACEs in an ACL.  However, ACL-compliant servers MUST 
          support at least one ACE granting privileges to a single 
          principal, and one ACE granting privileges to a collection 
          principal. 

          <DAV:non-inherited-must-precede-inherited/>: All non-inherited 
          ACEs MUST precede all inherited ACEs. 

          <DAV:deny-must-precede-grant/>: All non-inherited deny ACEs 
          MUST precede all non-inherited grant ACEs. 

          <DAV:acl-requires-lock-token/>: If a resource is locked, the 
          lock token MUST be specified in the ACL request. 


     Clemm, Hopkins, Sedlar, Whitehead                        [Page 16] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

     8.1.2 Example: the ACL method 

          In the following example, user "fielding", authenticated by 
          information in the Authorization header, grants the principal 
          identified by the URL http://www.foo.org/users/esedlar  (i.e., 
          the user "esedlar") read and write privileges, grants the 
          owner of the resource read-acl and write-acl privileges, and 
          grants everyone read privileges inherited from the parent 
          collection http://www.foo.bar/top/.  

          >> Request << 
           
          ACL /top/container HTTP/1.1 
          Host: www.foo.org 
          Content-Type: text/xml; charset="utf-8" 
          Content-Length: xxxx 
          Authorization: Digest username="fielding",  
             realm="users@foo.org", nonce="...", 
             uri="/top/container/", response="...", opaque="..." 
           
          <?xml version="1.0" encoding="utf-8" ?> 
          <D:acl xmlns:D="DAV:"> 
            <D:ace> 
              <D:principal> 
                <D:href>http://www.foo.org/users/esedlar</D:href> 
              </D:principal> 
              <D:grant> 
                <D:privilege> <D:read/> </D:privilege> 
                <D:privilege> <D:write/> </D:privilege> </D:grant> 
            </D:ace> 
            <D:ace> 
              <D:principal> 
                <D:property> <D:owner/> </D:property> </D:principal> 
              <D:grant> 
                <D:privilege> <D:read-acl/> </D:privilege> 
                <D:privilege> <D:write-acl/> </D:privilege> </D:grant> 
            <D:ace/> 
            <D:ace> 
              <D:principal> <D:all/> </D:principal> 
              <D:grant> 
                <D:privilege> <D:read/> </D:privilege></D:grant> 
              <D:inherited> 
                <D:href>http://www.foo.org/top/</D:href> </D:inherited> 
            </D:ace> </D:acl> 
           
          >> Response << 
           
          HTTP/1.1 200 OK 

     8.1.3Example: ACL method failure 

          In the following request, user "fielding", authenticated by 
          information in the Authorization header, attempts to grant 
          principal identified by the URL 
          http://www.foo.org/users/esedlar  (i.e., the user "esedlar") 
          read privileges, but fails because an implicit ACE has been 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 17] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          omitted (e.g. the ACE granting the DAV:owner DAV:read-acl and 
          DAV:write-acl privileges). 

          >> Request << 
           
          ACL /top/container HTTP/1.1 
          Host: www.foo.bar 
          Content-Type: text/xml; charset="utf-8" 
          Content-Length: xxxx 
          Authorization: Digest username="fielding",  
             realm="users@foo.org", nonce="...", 
             uri="/top/container/", response="...", opaque="..." 
           
          <?xml version="1.0" encoding="utf-8" ?> 
          <D:acl xmlns:D="DAV:"> 
            <D:ace> 
              <D:principal> 
                <D:href>http://www.foo.bar/users/esedlar</D:href> 
              </D:principal> 
              <D:grant>  
                <D:privilege> <D:read/> </D:privilege> </D:grant> 
            </D:ace> 
          </D:acl> 
           
          >> Response << 
           
          HTTP/1.1 403 Forbidden 
          Content-Type: text/xml; charset="utf-8" 
          Content-Length: xxx 
           
          <?xml version="1.0" encoding="utf-8" ?> 
          <DAV:cannot-change-implicit-ace/> 

     9  INTERNATIONALIZATION CONSIDERATIONS 

          In this specification, the only human-readable content can be 
          found in the DAV:authentication-id property, found on 
          principal resources.  This property contains the name used to 
          authenticate a principal, typically by a user entering this 
          name into a password entry screen.  As a result, the 
          authentication-id must be capable of representing names in 
          multiple character sets.  Since DAV:authentication-id is a 
          WebDAV property, it is represented on-the-wire as XML [REC-
          XML], and hence can leverage XML's language tagging and 
          character set encoding capabilities. Specifically, XML 
          processors must, at minimum, be able to read XML elements 
          encoded using the UTF-8 [UTF-8] encoding of the ISO 10646 
          multilingual plane. XML examples in this specification 
          demonstrate use of the charset parameter of the Content-Type 
          header, as defined in [RFC2376], as well as the XML "encoding" 
          attribute, which together provide charset identification 
          information for MIME and XML processors. 

          For properties other than DAV:authentication-id, it is 
          expected that implementations will treat the property names 
          and values as tokens, and convert these tokens into human-

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 18] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          readable text in the user's language and character set when 
          displayed to a person.  Only a generic WebDAV property display 
          utility would display these values in their raw form. 

          For error reporting, we follow the convention of HTTP/1.1 
          status codes, including with each status code a short, English 
          description of the code (e.g., 200 (OK)).  While the 
          possibility exists that a poorly crafted user agent would 
          display this message to a user, internationalized applications 
          will ignore this message, and display an appropriate message 
          in the user's language and character set. 

          Further internationalization considerations for this protocol 
          are described in the WebDAV Distributed Authoring protocol 
          specification [RFC2518]. 


     10 SECURITY CONSIDERATIONS  

          Applications and users of this access control protocol should 
          be aware of several security considerations, detailed below. 
          In addition to the discussion in this document, the security 
          considerations detailed in the HTTP/1.1 specification 
          [RFC2616], the WebDAV Distributed Authoring Protocol 
          specification [RFC2518], and the XML specification (discussed 
          in [RFC2376]) should be considered in a security analysis of 
          this protocol.  

     10.1 Increased Risk of Compromised Users 

          In the absence of a mechanism for remotely manipulating access 
          control specifications, if a single user's authentication 
          credentials are compromised, only those resources for which 
          the user has access permission can be read, modified, moved, 
          or deleted. With the introduction of this access control 
          protocol, if a single compromised user has the ability to 
          change ACLs for a broad range of other users (e.g., a super-
          user), the number of resources that could be altered by a 
          single compromised user increases. This risk can be mitigated 
          by limiting the number of people who have write-acl privileges 
          across a broad range of resources. 

     10.2 Authentication-id Property and Dictionary Attacks 

          Every principal has a DAV:authentication-id property defined 
          on it, which provides the name used to authenticate this 
          principal, typically the username portion of a 
          username/password authentication scheme. An attacker can use 
          the information in this property when attempting either a 
          brute-force, or a dictionary attack to guess the principal's 
          identifying password. By providing the username in 
          DAV:authentication-id, the scope of an attack can be reduced 
          to a single, valid username. Furthermore, it is possible that 
          principals can potentially belong to a collection. In this 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 19] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          case, it is possible to use the PROPFIND method to retrieve 
          the DAV:authentication-id property from all of the principals 
          in a collection, thus providing multiple usernames that can be 
          the focus of attack. 

          To reduce this risk, the DAV:authentication-id property should 
          not be world-readable. Which principals are granted default 
          read permission for DAV:authentication-id should be carefully 
          considered in any deployment of this protocol. 

     10.3 Risks of the read-acl Privilege 

          The ability to read the access permissions (stored in the 
          DAV:acl property), or the privileges permitted the currently 
          authenticated user (stored in the DAV:current-user-privilege-
          set property) on a resource may seem innocuous, since reading 
          an ACL cannot possibly affect the resource's state. However, 
          if all resources have world-readable ACLs, it is possible to 
          perform an exhaustive search for those resources that have 
          inadvertently left themselves in a vulnerable state, such as 
          being world-writeable. Once found, this vulnerability can be 
          exploited by a denial of service attack in which the open 
          resource is repeatedly overwritten. Alternately, writeable 
          resources can be modified in undesirable ways. 

          To reduce this risk, read-acl privileges should not be granted 
          to unauthenticated principals, and restrictions on read-acl 
          privileges for authenticated principals should be carefully 
          analysed when deploying this protocol. 


     11 AUTHENTICATION 

          Authentication mechanisms defined in WebDAV will also apply to 
          WebDAV ACL. 


     12 IANA CONSIDERATIONS 

          This document uses the namespace defined by [RFC2518] for XML 
          elements.  All other IANA considerations mentioned in 
          [RFC2518] also applicable to WebDAV ACL. 


     13 INTELLECTUAL PROPERTY 

          The following notice is copied from RFC 2026, section 10.4, 
          and describes the position of the IETF concerning intellectual 
          property claims made against this document. 

          The IETF takes no position regarding the validity or scope of 
          any intellectual property or other rights that might be 
          claimed to pertain to the implementation or use other 
          technology described in this document or the extent to which 
          any license under such rights might or might not be available; 

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 20] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          neither does it represent that it has made any effort to 
          identify any such rights.  Information on the IETF's 
          procedures with respect to rights in standards-track and 
          standards-related documentation can be found in BCP-11.  
          Copies of claims of rights made available for publication and 
          any assurances of licenses to be made available, or the result 
          of an attempt made to obtain a general license or permission 
          for the use of such proprietary rights by implementers or 
          users of this specification can be obtained from the IETF 
          Secretariat. 

          The IETF invites any interested party to bring to its 
          attention any copyrights, patents or patent applications, or 
          other proprietary rights that may cover technology that may be 
          required to practice this standard.  Please address the 
          information to the IETF Executive Director. 


     14 ACKNOWLEDGEMENTS 

          This protocol is the collaborative product of the WebDAV ACL 
          design team: Bernard Chester, Geoff Clemm (Rational), Anne 
          Hopkins (Microsoft), Barry Lind (Xythos), Sean Lyndersay 
          (Microsoft), Eric Sedlar (Oracle), Greg Stein (Apache.org), 
          and Jim Whitehead (UC Santa Cruz). Prior work on WebDAV access 
          control protocols has been performed by Yaron Goland, Paul 
          Leach, Lisa Dusseault, Howard Palmer, and Jon Radoff. We would 
          like to acknowledge the foundation laid for us by the authors 
          of the WebDAV and HTTP protocols upon which this protocol is 
          layered, and the invaluable feedback from the WebDAV working 
          group. 


     15 REFERENCES 

     15.1 Normative References 

          [RFC2119] S.Bradner, "Key words for use in RFCs to Indicate 
          Requirement Levels." RFC 2119, BCP 14, Harvard, March, 1997. 

          [REC-XML] T. Bray, J. Paoli, C.M. Sperberg-McQueen, 
          "Extensible Markup Language (XML)." World Wide Web Consortium 
          Recommendation REC-xml-19980210. http://www.w3.org/TR/REC-xml-
          19980210.[RFC2616] R. Fielding, J. Gettys, J. C. Mogul, H. 
          Frystyk, L. Masinter, P. Leach, and T. Berners-Lee, "Hypertext 
          Transfer Protocol -- HTTP/1.1." RFC 2616. U.C.Irvine, Compaq, 
          Xerox, Microsoft, MIT/LCS, June, 1999. 

          [RFC2617] J. Franks, P. Hallam-Baker, J. Hostetler, S. 
          Lawrence, P. Leach, A. Luotonen, L. Stewart, "HTTP 
          Authentication: Basic and Digest Access Authentication. " RFC 
          2617. Northwestern University, Verisign, AbiSource, Agranat, 
          Microsoft, Netscape, Open Market, June, 1999. 


     Clemm, Hopkins, Sedlar, Whitehead                        [Page 21] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          [RFC2518] Y. Goland, E. Whitehead, A. Faizi, S. R. Carter, D. 
          Jensen, "HTTP Extensions for Distributed Authoring _ WEBDAV." 
          RFC 2518. Microsoft, U.C.Irvine, Netscape, Novell, February, 
          1999. 

          [UTF-8] F. Yergeau, "UTF-8, a transformation format of Unicode 
          and ISO 10646." RFC 2279. Alis Technologies. January, 1998. 


     15.2 Informational References 

          [RFC2026] S.Bradner, "The Internet Standards Process _ 
          Revision 3." RFC 2026, BCP 9. Harvard, October, 1996. 

          [RFC2396] E. Whitehead, M. Murata, "XML Media Types." RFC 
          2376. U.C. Irvine, Fuji Xerox Info. Systems. July, 1998. (This 
          RFC will soon be superseded by <draft-murata-xml-09.txt>, 
          which has been approved by the IESG as a Proposed Standard, 
          but not yet issued as an RFC.) 


     16 AUTHORS' ADDRESSES 

          Geoffrey Clemm 
          Rational Software 
          20 Maguire Road 
          Lexington, MA 02421 
          Email: geoffrey.clemm@rational.com 
           
          Anne Hopkins 
          Microsoft Corporation 
          One Microsoft Way 
          Redmond, WA 98052 
          Email: annehop@microsoft.com 
           
          Eric Sedlar 
          Oracle Corporation 
          500 Oracle Parkway 
          Redwood Shores, CA 94065 
          Email: esedlar@us.oracle.com 
           
          Jim Whitehead 
          U.C. Santa Cruz 
          Dept. of Computer Science 
          Baskin Engineering 
          1156 High Street 
          Santa Cruz, CA 95064 
          Email: ejw@cse.ucsc.edu 

     17 STILL TO DO 

          * If we can add more elements to DAV:resourcetype, we can 
            eliminate DAV:is-principal. 

           

     Clemm, Hopkins, Sedlar, Whitehead                        [Page 22] 

     INTERNET-DRAFT    WebDAV ACL    October 16, 2000 

          * Add back the XML schema if provides info not in the DTD's. 

          * Consider adding a DAV:matching-principals, which identifies 
            all ACL principals that match the current user. 

          * Add DAV:ordering-constraints, DAV:required-principals, and 
            DAV:ace-combination-semantics as sub-elements of DAV:acl-
            semantics. 
















































     Clemm, Hopkins, Sedlar, Whitehead                        [Page 23] 

PAFTECH AB 2003-20262026-04-24 10:29:46