SIMPLE WG J. Urpalainen Internet-Draft Nokia Research Center Expires: December 11, 2006 June 9, 2006 The Extensible Markup Language (XML) Configuration Access Protocol (XCAP) co-operation with HTTP Extensions for Distributed Authoring (WEBDAV) draft-urpalainen-simple-xcap-webdav-00 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on December 11, 2006. Copyright Notice Copyright (C) The Internet Society (2006). Abstract The Extensible Markup Language (XML) Configuration Access Protocol (XCAP) allows a client to read, write and modify application configuration data, stored in XML format on an HTTP server. HTTP Extensions for Distributed Authoring (WebDAV) provides many useful HTTP extensions for web content authoring. This document describes conventions for the co-operation of XCAP resources with WebDAV. Urpalainen Expires December 11, 2006 [Page 1] Internet-Draft XCAP with WebDAV June 2006 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 4. WebDAV Extensions to XCAP . . . . . . . . . . . . . . . . . . 3 4.1. Collections . . . . . . . . . . . . . . . . . . . . . . . 4 4.2. Properties . . . . . . . . . . . . . . . . . . . . . . . . 4 4.3. Locking . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.4. Other WebDAV methods . . . . . . . . . . . . . . . . . . . 5 4.5. Access Control Lists . . . . . . . . . . . . . . . . . . . 5 4.5.1. Server provisioned ACL after a successful PUT . . . . 6 4.5.2. Server provisioned ACL after a successful MKCOL . . . 7 5. Error Handling . . . . . . . . . . . . . . . . . . . . . . . . 7 6. XCAP Server Capabilities extension . . . . . . . . . . . . . . 8 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 9. Normative References . . . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 10 Intellectual Property and Copyright Statements . . . . . . . . . . 11 Urpalainen Expires December 11, 2006 [Page 2] Internet-Draft XCAP with WebDAV June 2006 1. Introduction The Extensible Markup Language (XML) [2] Configuration Access Protocol (XCAP) [3] was designed to store XML documents on an HTTP server. Also patching of XML document components, i.e. XML elements and attributes can be achieved with basic HTTP PUT and DELETE methods. Thus XML documents contain usually many XCAP resources and access to them is achieved by using a node selector in the path segment of the request URI. The document tree structure is also described by the core XCAP protocol. HTTP Extensions for Distributed Authoring (WebDAV) [4] provides many useful HTTP [5] extensions for web content authoring including many other MIME types than just XML documents. The extension set includes properties, collections, locks and namespace operations of WebDAV resources. With WebDAV access control protocol [6] access to shared resources can easily be allowed or denied. This document describes conventions for XCAP servers utilizing these WebDAV authoring extensions. The aim is to use existing specifications with compatibility in mind, an existing XCAP client can still use resources of the server which complies with the rules described in this document. 2. Terminology In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in RFC 2119, BCP 14 [1] and indicate requirement levels for compliant implementations. 3. Definitions This document uses terms defined in WebDAV [4], XCAP [3] and WebDAV access control protocol (ACP) [6]. 4. WebDAV Extensions to XCAP In XCAP, the request URI contains a node selector when an XML document component is being updated. This selector value can be used to locate for example, an XML element to be removed from the XML document. WebDAV in general does not utilize this sort of granularity of an XML document. While it is feasible in some cases to have this sort of granularity, this document does not propose such a model mostly because of simplicity and compatibility reasons. Urpalainen Expires December 11, 2006 [Page 3] Internet-Draft XCAP with WebDAV June 2006 Instead, all WebDAV features, for example properties and locks operate on an XML document level, that is, it is not allowed to set some property of an XML element or lock an XML element along with its descendants. In other words, if the request URI contains an XCAP node selector with e.g. a PROPPATCH or any other WebDAV method, an error is produced. Especially "locked empty resources" with LOCK method might otherwise be created unless this rule is obeyed. Note: Actual implementations can then easily utilize existing libraries as they can dispatch request handlers to appropriate ones: WebDAV or XCAP according to request URIs and HTTP methods: typically, if the request URI contains a node selector and a node selector separator with GET, PUT or DELETE method, XCAP handlers are used and otherwise requests are passed to WebDAV handlers. These handlers are then free to respond with appropriate formats as there are minimal inter-dependencies. In other words, XCAP features do not much overlap with WebDAV ones. 4.1. Collections The core XCAP protocol does not support the creation of collections. WebDAV [4] MKCOL method can then be used to create a collection. With the DELETE method a collection can be removed. This WebDAV property is advertised with the OPTIONS query response by "Class 1" compliance. Note: The current XCAP application usages do not specify collection usages in their user "home directories" and some of them only support only single entities (files). In application usages where it makes sense to support collections it is up to the server to decide whether it is allowed or not. 4.2. Properties This document does not introduce any constraints to WebDAV [4] properties except that it is only allowed to set/get properties on the document level. XCAP doesn't describe any way to request or set a property of a resource although it uses ETags for conditional updates. For instance these ETag values can easily be queried with PROPFIND method and the result may contain all resources from a collection. This can for example, be used to maintain a simple sync of remote XCAP resources. The PROPPATCH method sets properties of resources based on QNames [7] and "values" of them. The value of a property is usually a text node content but it may also be of mixed type [8]. Urpalainen Expires December 11, 2006 [Page 4] Internet-Draft XCAP with WebDAV June 2006 Note: For example, after a successful PUT of an XML element, an XCAP server has to create a new ETag for the document. This ETag is a WebDAV "live" property which MUST be accessible to a WebDAV handler when the ETag value of a resource is being requested. There is thus an inter-dependency between XCAP and WebDAV handling. 4.3. Locking Write locking is an optional feature of a WebDAV server. It is advertised with the OPTIONS query response by "Class 2" compliance. Like properties these are supported only at the XML document level. If locks are supported on the server, before the server applies an XCAP component update, addition or removal, the server has to look for possible locks on the corresponding XML document or ancestor collections. Note that "lost updates" described in chapter 7.2 [4] are less likely as clients may be updating different parts of XML documents although doing conditional updates always is certainly preferred in general. 4.4. Other WebDAV methods With any other WebDAV methods when accessing XCAP resources, the request URI may not contain an XCAP node selector. 4.5. Access Control Lists In terms of WebDAV access control lists, the core XCAP specifies that the owner of a resource has read and write access rights. With WebDAV ACP [6] a more fine-grained privileges can be given to resources, especially when sharing resources. The privileges ("DAV: read", "DAV:write" and so on) are used by access control elements (ACE). Several ACEs are combined with access control lists (ACL). The owners of documents are principals which are manifested to clients as a WebDAV resource, identified by a URI. WebDAV ACP does not mandate a body for principal resources, only properties are meaningful. It is thus RECOMMENDED that principals have a base URI like "http://principals.example.com/" for a domain "example.com". For a user "joe" the principal URI is then "http://principals.example.com/joe/self". It is anticipated that users can create groups for ACL definitions onto their collections, for example user "joe" has then "DAV:bind" privilege to the collection "http://principals.example.com/joe/". The principal can then create empty group resources or collections with arbitrary names into this collection. The "DAV:group-member-set" property contains then the principal URIs belonging to the group. These group resources may then be referenced by ACEs. Also group principal URIs may be referenced by the "DAV:group-member-set" property allowing Urpalainen Expires December 11, 2006 [Page 5] Internet-Draft XCAP with WebDAV June 2006 thus nested groups. For new created groups of a principal the server MUST provision "DAV:all" privileges to the owner (principal) shown later in this document. Note: XCAP recommends a root URI like "http://xcap.example.com" for a domain "example.com". In theory, principals could be defined as an XCAP application usage, but XCAP application usages have constraints on the body that are not needed for WebDAV ACP principals. It is RECOMMENDED that while provisioning users for XCAP application usages, users are given "DAV:all" privileges to their application usage "home directories". This allows users full control to them: creation of sub-directories, setting access control rights and so on. 4.5.1. Server provisioned ACL after a successful PUT After a successful PUT (201) request a new XCAP resource has been created to the server. WebDAV ACP [6] specification is quite liberal about the server behavior. In order to ease implementations and to guarantee compatibility with XCAP clients that don't support ACLs, the server MUST provision an ACL for the newly created resource which allows read and write access for the owner of the resource. Similarly the servers MUST set the authenticated user the owner of the document, which means mapping of the user ID to a principal URI. An example ACL document after the creation of a new XCAP resource: http://principals.example.com/joe/self The client can always request the created ACL with PROPFIND method from the server and update it to his/her likings but ACL unaware clients can still continue updating this new resource. An ACL for a WebDAV resource can be set with the ACL method which always publishes the full access control list. The request URI refers to a WebDAV resource then and as with other use cases it MUST not contain an XCAP node selector. Urpalainen Expires December 11, 2006 [Page 6] Internet-Draft XCAP with WebDAV June 2006 PROPFIND /resource-lists/users/joe/index Host: xcap.example.com Depth: 0 Content-Type: application/xml Content-Length: xxx Response: HTTP/1.1 207 Multi-Status Content-Type: application/xml Content-Length: xxxx http://xcap.example.com/resource-lists/users/joe/index http://principals.example.com/joe/self HTTP/1.1 200 OK 4.5.2. Server provisioned ACL after a successful MKCOL After a successful MKCOL (201) request a new collection has been created to the server. Once again, WebDAV ACP [6] is then quite liberal about the server behavior. Similar to a successful PUT, the server provisions "DAV:all" privilege to the owner of this new collection. 5. Error Handling XCAP defines an XML error response format for 409 (Conflict) responses. The usage of WebDAV introduces some new error responses, most notably for example 423 (Locked) response. However, this does Urpalainen Expires December 11, 2006 [Page 7] Internet-Draft XCAP with WebDAV June 2006 not typically impose any problem as requests are typically orthogonal, i.e. error responses either follow XCAP or WebDAV conventions depending on the request type. Some of the XCAP 409 (Conflict) responses can easily be handled automatically without user intervention. If WebDAV methods are used with request URIs which contain an otherwise valid XCAP node selector the server SHOULD respond with 501 (Not Implemented). 6. XCAP Server Capabilities extension XCAP Server Capabilities application usage defines responses to XCAP clients about the XCAP server capabilities. The format includes the possibility to describe extensions of the server. If Class 1, 2 or 3 WebDAV compatibility is supported, the text node content of the element MUST contain "DAV1", "DAV2" or "DAV3". If the server supports several of them, each property MUST be reported with separate elements. If WebDAV ACP is supported the element contains "DAV ACL". 7. IANA Considerations This document does not require any action from IANA. 8. Security Considerations Security considerations described in XCAP [3], WebDAV [4] and WebDAV ACP [6] are naturally also applicable to this specification. Especially using distributed authorization rules may be problematic, for example how to build trust over different domains. Using groups for external "black lists" might reveal unwanted information if they don't keep resources in sync always. Also with distributed groups loops might be generated. However, implementations may disallow distributed authorization rules altogether by responding with appropriate ACL precondition errors. 9. Normative References [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [2] "Extensible Markup Language (XML) 1.0 (Third Edition)", W3C Recommendation REC-xml-20040204 , February 2004. [3] Rosenberg, J., "The Extensible Markup Language (XML) Configuration Access Protocol (XCAP)", Urpalainen Expires December 11, 2006 [Page 8] Internet-Draft XCAP with WebDAV June 2006 draft-ietf-simple-xcap-11, May 2006. [4] Dusseault, L., "HTTP Extensions for Distributed Authoring - WebDAV", draft-ietf-webdav-rfc2518bis-15 (work in progress), June 2006. [5] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [6] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol", RFC 3744, May 2004. [7] "Namespaces in XML", W3C Recommendation REC-xml-names-19990114 , January 1999. [8] "XML Schema Part 1: Structures Second Edition", W3C Recommendation REC-xmlschema-1-20041028 , October 2004. Urpalainen Expires December 11, 2006 [Page 9] Internet-Draft XCAP with WebDAV June 2006 Author's Address Jari Urpalainen Nokia Research Center Itamerenkatu 11-13 Helsinki 00180 Finland Phone: +358 7180 37686 Email: jari.urpalainen@nokia.com Urpalainen Expires December 11, 2006 [Page 10] Internet-Draft XCAP with WebDAV June 2006 Intellectual Property Statement The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat 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 on-line IPR repository at http://www.ietf.org/ipr. 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 implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Disclaimer of Validity This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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. Copyright Statement Copyright (C) The Internet Society (2006). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society. Urpalainen Expires December 11, 2006 [Page 11]