draft-ietf-webdav-bind-04.txt   draft-ietf-webdav-bind-05.txt 
Network Working Group G. Clemm Network Working Group G. Clemm
Internet-Draft IBM Internet-Draft IBM
Updates: 2518 (if approved) J. Crawford Updates: 2518 (if approved) J. Crawford
Expires: September 8, 2004 IBM Research Expires: September 21, 2004 IBM Research
J. Reschke J. Reschke
greenbytes greenbytes
J. Whitehead J. Whitehead
U.C. Santa Cruz U.C. Santa Cruz
March 10, 2004 March 23, 2004
Binding Extensions to Web Distributed Authoring and Versioning Binding Extensions to Web Distributed Authoring and Versioning
(WebDAV) (WebDAV)
draft-ietf-webdav-bind-04 draft-ietf-webdav-bind-05
Status of this Memo Status of this Memo
By submitting this Internet-Draft, I certify that any applicable By submitting this Internet-Draft, I certify that any applicable
patent or other IPR claims of which I am aware have been disclosed, patent or other IPR claims of which I am aware have been disclosed,
and any of which I become aware will be disclosed, in accordance with and any of which I become aware will be disclosed, in accordance with
RFC 3667. RFC 3667.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that other Task Force (IETF), its areas, and its working groups. Note that other
skipping to change at page 1, line 39 skipping to change at page 1, line 38
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http:// The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt. www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 8, 2004. This Internet-Draft will expire on September 21, 2004.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved. Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract Abstract
This specification defines bindings, and the BIND method for creating This specification defines bindings, and the BIND method for creating
multiple bindings to the same resource. Creating a new binding to a multiple bindings to the same resource. Creating a new binding to a
resource causes at least one new URI to be mapped to that resource. resource causes at least one new URI to be mapped to that resource.
Servers are required to insure the integrity of any bindings that Servers are required to insure the integrity of any bindings that
they allow to be created. they allow to be created.
Please send comments to the Distributed Authoring and Versioning
(WebDAV) working group at <mailto:w3c-dist-auth@w3.org>, which may be
joined by sending a message with subject "subscribe" to
<mailto:w3c-dist-auth-request@w3.org?subject=subscribe>. Discussions
of the WEBDAV working group are archived at <http://lists.w3.org/
Archives/Public/w3c-dist-auth/>.
*(To be removed before publication as RFC): *
<http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-issues.html>
lists all registered issues since draft 02.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Rationale for Distinguishing Bindings from URI Mappings . . 6 1.2 Rationale for Distinguishing Bindings from URI Mappings . . 6
1.3 Method Preconditions and Postconditions . . . . . . . . . . 7 1.3 Method Preconditions and Postconditions . . . . . . . . . . 7
2. Overview of Bindings . . . . . . . . . . . . . . . . . . . . 7 2. Overview of Bindings . . . . . . . . . . . . . . . . . . . . 7
2.1 Bindings to Collections . . . . . . . . . . . . . . . . . . 8 2.1 Bindings to Collections . . . . . . . . . . . . . . . . . . 8
2.2 URI Mappings Created by a new Binding . . . . . . . . . . . 9 2.2 URI Mappings Created by a new Binding . . . . . . . . . . . 9
2.3 COPY and Bindings . . . . . . . . . . . . . . . . . . . . . 10 2.3 COPY and Bindings . . . . . . . . . . . . . . . . . . . . . 10
skipping to change at page 3, line 6 skipping to change at page 3, line 18
9.5 DAV:parent-set and Denial of Service . . . . . . . . . . . . 26 9.5 DAV:parent-set and Denial of Service . . . . . . . . . . . . 26
10. Internationalization Considerations . . . . . . . . . . . . 26 10. Internationalization Considerations . . . . . . . . . . . . 26
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . 26 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . 26
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26
Normative References . . . . . . . . . . . . . . . . . . . . 26 Normative References . . . . . . . . . . . . . . . . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 27
A. Change Log (to be removed by RFC Editor before A. Change Log (to be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . . . . . 28 publication) . . . . . . . . . . . . . . . . . . . . . . . . 28
A.1 Since draft-ietf-webdav-bind-02 . . . . . . . . . . . . . . 28 A.1 Since draft-ietf-webdav-bind-02 . . . . . . . . . . . . . . 28
A.2 Since draft-ietf-webdav-bind-03 . . . . . . . . . . . . . . 28 A.2 Since draft-ietf-webdav-bind-03 . . . . . . . . . . . . . . 28
A.3 Since draft-ietf-webdav-bind-04 . . . . . . . . . . . . . . 28
B. Resolved issues (to be removed by RFC Editor before B. Resolved issues (to be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . . . . . 28 publication) . . . . . . . . . . . . . . . . . . . . . . . . 28
B.1 ED_updates . . . . . . . . . . . . . . . . . . . . . . . . . 28 B.1 6_precondition_binding_allowed . . . . . . . . . . . . . . . 28
B.2 ED_authors . . . . . . . . . . . . . . . . . . . . . . . . . 29 B.2 6_lock_behaviour . . . . . . . . . . . . . . . . . . . . . . 29
B.3 locking . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
B.4 5.1_LOOP_STATUS . . . . . . . . . . . . . . . . . . . . . . 29 Intellectual Property and Copyright Statements . . . . . . . 32
B.5 5.1_506_STATUS_STREAMING . . . . . . . . . . . . . . . . . . 30
B.6 9.2_redirect_loops . . . . . . . . . . . . . . . . . . . . . 30
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Intellectual Property and Copyright Statements . . . . . . . 33
1. Introduction 1. Introduction
This specification extends the WebDAV Distributed Authoring Protocol This specification extends the WebDAV Distributed Authoring Protocol
to enable clients to create new access paths to existing resources. to enable clients to create new access paths to existing resources.
This capability is useful for several reasons: This capability is useful for several reasons:
URIs of WebDAV-compliant resources are hierarchical and correspond to URIs of WebDAV-compliant resources are hierarchical and correspond to
a hierarchy of collections in resource space. The WebDAV Distributed a hierarchy of collections in resource space. The WebDAV Distributed
Authoring Protocol makes it possible to organize these resources into Authoring Protocol makes it possible to organize these resources into
skipping to change at page 19, line 5 skipping to change at page 18, line 43
(DAV:protected-url-deletion-allowed): If the binding identified by (DAV:protected-url-deletion-allowed): If the binding identified by
the segment is protected by a write-lock, then the appropriate the segment is protected by a write-lock, then the appropriate
token MUST be specified in the request. token MUST be specified in the request.
Postconditions: Postconditions:
(DAV:binding-deleted): The collection MUST NOT have a binding for (DAV:binding-deleted): The collection MUST NOT have a binding for
the segment specified in the DAV:segment element in the request the segment specified in the DAV:segment element in the request
body. body.
(DAV:lock-deleted): If the internal member URI of the binding
specified by the Request-URI and the DAV:segment element in the
request body was protected by a write-lock at the time of the
request, that write-lock must have been deleted by the request.
5.1 Example: UNBIND 5.1 Example: UNBIND
>> Request: >> Request:
UNBIND /CollX HTTP/1.1 UNBIND /CollX HTTP/1.1
Host: www.example.com Host: www.example.com
Content-Type: text/xml; charset="utf-8" Content-Type: text/xml; charset="utf-8"
Content-Length: xxx Content-Length: xxx
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
skipping to change at page 20, line 15 skipping to change at page 20, line 15
<!ELEMENT rebind-response ANY> <!ELEMENT rebind-response ANY>
Preconditions: Preconditions:
(DAV:rebind-into-collection): The Request-URI MUST identify a (DAV:rebind-into-collection): The Request-URI MUST identify a
collection. collection.
(DAV:rebind-source-exists): The DAV:href element MUST identify a (DAV:rebind-source-exists): The DAV:href element MUST identify a
resource. resource.
(DAV:binding-allowed): The resource identified by the DAV:href
supports multiple bindings to it.
(DAV:cross-server-binding): If the resource identified by the (DAV:cross-server-binding): If the resource identified by the
DAV:href element in the request body is on another server from the DAV:href element in the request body is on another server from the
collection identified by the request-URI, the server MUST support collection identified by the request-URI, the server MUST support
cross-server bindings. cross-server bindings.
(DAV:name-allowed): The name specified by the DAV:segment is (DAV:name-allowed): The name specified by the DAV:segment is
available for use as a new binding name. available for use as a new binding name.
(DAV:can-overwrite): If the collection already contains a binding (DAV:can-overwrite): If the collection already contains a binding
with the specified path segment, and if an Overwrite header is with the specified path segment, and if an Overwrite header is
skipping to change at page 21, line 15 skipping to change at page 21, line 13
Postconditions: Postconditions:
(DAV:new-binding): The collection MUST have a binding that maps (DAV:new-binding): The collection MUST have a binding that maps
the segment specified in the DAV:segment element in the request the segment specified in the DAV:segment element in the request
body, to the resource that was identified by the DAV:href element body, to the resource that was identified by the DAV:href element
in the request body. in the request body.
(DAV:binding-deleted): The URL specified in the DAV:href element (DAV:binding-deleted): The URL specified in the DAV:href element
in the request body MUST NOT be mapped to a resource. in the request body MUST NOT be mapped to a resource.
(DAV:lock-deleted): If the URL specified in the DAV:href element
in the request body was protected by a write-lock at the time of
the request, that write-lock must have been deleted by the
request.
6.1 Example: REBIND 6.1 Example: REBIND
>> Request: >> Request:
REBIND /CollX HTTP/1.1 REBIND /CollX HTTP/1.1
Host: www.example.com Host: www.example.com
Content-Type: text/xml; charset="utf-8" Content-Type: text/xml; charset="utf-8"
Content-Length: xxx Content-Length: xxx
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
skipping to change at page 28, line 31 skipping to change at page 28, line 31
"ED_references". CLose issue "4_507_status". "ED_references". CLose issue "4_507_status".
A.2 Since draft-ietf-webdav-bind-03 A.2 Since draft-ietf-webdav-bind-03
Add and close issues "9.2_redirect_loops", "ED_authors" and Add and close issues "9.2_redirect_loops", "ED_authors" and
"ED_updates". Add section about capability discovery (DAV header). "ED_updates". Add section about capability discovery (DAV header).
Close issues "5.1_LOOP_STATUS". Add and resolve new issue Close issues "5.1_LOOP_STATUS". Add and resolve new issue
"5.1_506_STATUS_STREAMING". Update XML spec reference. Add issue "5.1_506_STATUS_STREAMING". Update XML spec reference. Add issue
"locking" and resolve as invalid. "locking" and resolve as invalid.
A.3 Since draft-ietf-webdav-bind-04
Add and close issues "6_precondition_binding_allowed" and
"6_lock_behaviour". Add mailing list and issues list pointers to
front.
Appendix B. Resolved issues (to be removed by RFC Editor before Appendix B. Resolved issues (to be removed by RFC Editor before
publication) publication)
Issues that were either rejected or resolved in this version of this Issues that were either rejected or resolved in this version of this
document. document.
B.1 ED_updates B.1 6_precondition_binding_allowed
Type: edit
<http://lists.w3.org/Archives/Public/w3c-dist-auth/2003OctDec/
0306.html>
julian.reschke@greenbytes.de (2003-12-30): Shouldn't the BIND spec be
labelled as "updating" RFC2518 and/or RFC3253?
julian.reschke@greenbytes.de (2004-01-05): It seems that there was
consensus to say that BIND does update RFC2518, while there's no
consensus about the relationship to RFC3253. As this is a minor
editorial question, I propose to just say "updated 2518" and to close
the issue.
Resolution (2004-01-09): State "updates 2518".
B.2 ED_authors
Type: edit
julian.reschke@greenbytes.de (2004-01-02): Ensure contact information
for all original authors is still correct, and that the authors in
fact support the current draft.
Resolution (2004-01-05): J. Slein removed as author and added to
Acknowledgments.
B.3 locking
Type: change
<http://www.xmpp.org/ietf-logs/webdav@ietf.xmpp.org/2004-03-01.html>
lisa@xythos.com (2004-03-02): (concerns about the behaviour of
multiple bindings to the same resource when the resource was locked
via WebDAV LOCK on one of it's bindings).
Resolution (2004-03-06): No issue here: given two URIs "a" and "b"
mapped to the same resource, and a WebDAV LOCK that was requested for
"a", attempts to modify the lockable state of "b" will fail unless
the lock-token is presented. This is because the resource itself is
locked, not only it's URI "a". See RFC2518, section 6.
B.4 5.1_LOOP_STATUS
Type: change Type: change
julian.reschke@greenbytes.de (2002-10-11): Should the 506 status in a <http://lists.w3.org/Archives/Public/w3c-dist-auth/2004JanMar/
PROPFIND be handled differently? 0093.html>
geoffrey.clemm@us.ibm.com (2003-08-03): Use new 208 status to report
cycles in PROPFIND.
julian.reschke@greenbytes.de (2003-11-16): Proposal: a) import DAV lisa@osafoundation.org (2004-03-17): One precondition is "
request header definition from rfc2518bis (note that the definition (DAV:binding-allowed): The resource identified by the DAV:href
in the latest draft probably needs some more work) b) define a DAV supports multiple bindings to it." How can this error possibly
compliance class for the BIND spec c) clarify that 208 should only be occur?
returned when the client specifies compliance to the BIND spec in the
PROPFIND request (otherwise fail the complete request).
Resolution (2004-01-02): Define DAV compliance class "bind", define Resolution (2004-03-19): Cut & Paste error (copied from BIND method).
DAV request header, clarify that 208 must only be used when the Remove it.
client signals that it knows about this specification.
B.5 5.1_506_STATUS_STREAMING B.2 6_lock_behaviour
Type: change Type: change
julian.reschke@greenbytes.de (2004-01-12): Take a server that allows <http://lists.w3.org/Archives/Public/w3c-dist-auth/2004JanMar/
Depth: infinity upon PROPFIND. In general, the only way to implement 0093.html>
this efficiently is to *stream* the multistatus response. However
this means that the server needs to decide about the HTTP status code
to return *prior* to actually doing the recursion. Therefore,
requiring the server to return a 506 status in case there's a bind
loop somewhere below the request URI will not work. An obvious
alternative would be to allow the 506 to be returned inside the
DAV:status element for the resource the server refuses to recurse
into. Of course that would mean that the client essentially would
get a partly incorrect picture of the server state. However, I don't
think there's any way to avoid that (except for rejecting all Depth:
infinity PROPFINDs, like many servers already do).
Resolution (2004-03-06): Allow 506 inside multistatus.
B.6 9.2_redirect_loops
Type: edit
julian.reschke@greenbytes.de (2004-01-09): Avoid confusion with lisa@osafoundation.org (2004-03-17): Does REBIND destroy locks, as
REDIRECT. Propose rename to "Bind Loops". MOVE does? It shouldn't, unless there's a compelling reason for
backward compatibility.
Resolution (2004-01-09): Do the rename. Resolution (2004-03-20): REBIND behaves like MOVE (and any other
namespace operation), thus locks are destroyed. Add postcondition
DAV:lock-deleted.
Index Index
2 2
208 Already Reported (status code) 21 208 Already Reported (status code) 21
5 5
506 Loop Detected (status code) 24 506 Loop Detected (status code) 24
B B
BIND method 15 BIND method 15
C C
Condition Names Condition Names
DAV:bind-into-collection (pre) 16 DAV:bind-into-collection (pre) 16
DAV:bind-source-exists (pre) 16 DAV:bind-source-exists (pre) 16
DAV:binding-allowed (pre) 16, 20 DAV:binding-allowed (pre) 16
DAV:binding-deleted (post) 18, 21 DAV:binding-deleted (post) 18, 21
DAV:can-overwrite (pre) 16, 20 DAV:can-overwrite (pre) 16, 20
DAV:cross-server-binding (pre) 16, 20 DAV:cross-server-binding (pre) 16, 20
DAV:cycle-allowed (pre) 16, 20 DAV:cycle-allowed (pre) 16, 20
DAV:lock-deleted (post) 18, 21
DAV:locked-overwrite-allowed (pre) 16 DAV:locked-overwrite-allowed (pre) 16
DAV:locked-source-collection-update-allowed (pre) 20 DAV:locked-source-collection-update-allowed (pre) 20
DAV:locked-update-allowed (pre) 16, 18, 20 DAV:locked-update-allowed (pre) 16, 18, 20
DAV:name-allowed (pre) 16, 20 DAV:name-allowed (pre) 16, 20
DAV:new-binding (post) 17, 21 DAV:new-binding (post) 17, 21
DAV:protected-source-url-deletion-allowed (pre) 20 DAV:protected-source-url-deletion-allowed (pre) 20
DAV:protected-url-deletion-allowed (pre) 18 DAV:protected-url-deletion-allowed (pre) 18
DAV:protected-url-modification-allowed (pre) 20 DAV:protected-url-modification-allowed (pre) 20
DAV:rebind-into-collection (pre) 20 DAV:rebind-into-collection (pre) 20
DAV:rebind-source-exists (pre) 20 DAV:rebind-source-exists (pre) 20
DAV:unbind-from-collection (pre) 18 DAV:unbind-from-collection (pre) 18
DAV:unbind-source-exists (pre) 18 DAV:unbind-source-exists (pre) 18
D D
DAV header DAV header
compliance class 'bind' 24 compliance class 'bind' 24
DAV:bind-into-collection precondition 16 DAV:bind-into-collection precondition 16
DAV:bind-source-exists precondition 16 DAV:bind-source-exists precondition 16
DAV:binding-allowed precondition 16, 20 DAV:binding-allowed precondition 16
DAV:binding-deleted postcondition 18, 21 DAV:binding-deleted postcondition 18, 21
DAV:can-overwrite precondition 16, 20 DAV:can-overwrite precondition 16, 20
DAV:cross-server-binding precondition 16, 20 DAV:cross-server-binding precondition 16, 20
DAV:cycle-allowed precondition 16, 20 DAV:cycle-allowed precondition 16, 20
DAV:lock-deleted postcondition 18, 21
DAV:locked-overwrite-allowed precondition 16 DAV:locked-overwrite-allowed precondition 16
DAV:locked-source-collection-update-allowed precondition 20 DAV:locked-source-collection-update-allowed precondition 20
DAV:locked-update-allowed precondition 16, 18, 20 DAV:locked-update-allowed precondition 16, 18, 20
DAV:name-allowed precondition 16, 20 DAV:name-allowed precondition 16, 20
DAV:new-binding postcondition 17, 21 DAV:new-binding postcondition 17, 21
DAV:parent-set property 14 DAV:parent-set property 14
DAV:protected-source-url-deletion-allowed precondition 20 DAV:protected-source-url-deletion-allowed precondition 20
DAV:protected-url-deletion-allowed precondition 18 DAV:protected-url-deletion-allowed precondition 18
DAV:protected-url-modification-allowed precondition 20 DAV:protected-url-modification-allowed precondition 20
DAV:rebind-into-collection precondition 20 DAV:rebind-into-collection precondition 20
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/