What is WebDAV - uploaded by Murali Krishna Nookella
The Web as a Collaborative,Writeable MediumAn Introduction to the IETF WebDAVStandardJim WhiteheadUniv. of California, Irvineejw@ics.uci.edu
What is WEBDAV?Working Group on Distributed Authoringand Versioning on the World Wide WebGoal: To enable distributed web authoringtools to be broadly interoperable.Home page:http://www.ics.uci.edu/pub/ietf/webdav/
WebDAV: Extending HTTPWebDAV is a major extension to HTTPWebDAV adds properties and collections tothe HTTP data modelWebDAV provides facilities forProperties - list, add, removeNamespace Operations - move, copyOverwrite prevention - lock, unlockCollections - mkcol, hierarchy operations
Using WebDAVYou have a report to produceFire up your favorite word processor & start editingYou decide to bring on another authorUsing the same word processor, save to the WebStart collaboration on the document by editing in-place on the WebA seamless transition from individual tocollaborative work
Application Use ofWebDAVClient ServerFile… OpenLOCKLock resourcePROPFINDSend propertiesto clientGETSend resourcecontents to clientEditPUTFile… SaveExitUNLOCKSave new contentsUnlock resource
Visions for WebDAVParticipants in WebDAV have many views onwhat it is:A protocol for collaborative authoringA large-grain Web-based network file system,with nice high-latency behavior.A data integration technology for accessing awide range of repositoriesdocument mgmt. systems, configuration mgmt.systems, filesystems, etc.A protocol for remote software engineeringAll views are correct!
Facets of WEBDAVThere are many ways to view the DAVwork:Collaboration infrastructureMetadata recording infrastructureNamespace management infrastructureOrdered collection infrastructureVersioning infrastructureAccess control infrastructureSearching infrastructure - DASL
CollaborationInfrastructureWhole resource locking supports:remote collaborative authoring of HTMLpages and associated imagesremote collaborative authoring of any mediatype (word processing, presentations, etc.)Infrastructure for development ofasynchronous, widely distributed,hypertext-aware, collaborative editingtools.
Metadata RecordingInfrastructureMetadata supportProperties. (name, value) pairs can becreated, modified, deleted, and read onWeb resources.Consistency of properties can bemaintained by the server or the clientProperty values are well-formed ExtensibleMarkup Language (XML)Infrastructure for how to recordinformation about Web data
Namespace ManagementInfrastructureRemote name space management:Copy and Move individual resources, andhierarchies of resourceCreate and modify (ordered) collections ofresourcesAdd/remove members by-referenceInfrastructure for remotely organizingand viewing collections of Webresources
Versioning InfrastructureVersioning is a key part of WebDAVcheck-out, check-inversion graph historycomments on check-out/check-inbrowse old versionsautomatic versioning for unaware clientsbasic, high-value configurationmanagement operationsInfrastructure for remotely versioningWeb resources
Access Control InfrastructureAccess Control:The ability to remotely control who can readand write a resourceKey challenge:Expose the access control capabilities of therepository……while ensuring the client-side user interface canbe simple (I.e., avoid lots of feature discovery)Will be the focus of a new working group.Infrastructure for remotely creatingcollaboration groups
Searching InfrastructureSearching a WebDAV repository - DASL:Search for resources with a given property, ora given property valueSearch for a substring inside a resource bodySearch scope can be one resource, acollection of resources, a hierarchy ofresources, or a whole serverInfrastructure for remote searching
Document RoadmapDistributed AuthoringLocking, Properties, Copy/MoveRFC 2518 completeVersioningCheckin/Checkout, VariantsFinish: Mid 2000, as new WGOrdered CollectionsRequirements and protocol forordered collections, external membersFinish: June/July 1999Access ControlRequirements and protocolfor remote access controlFinish: Mid 2000, as new WGWebDAV Working Group:DASL Working Group:SearchingRequirements and protocol forsearching a WebDAV repositoryFinish: Fall 1999Future work:NotificationsRequirements and protocol forasynchronous notifications
Commercial WebDAVProductsSeveral companies will be supporting WebDAVin their upcoming products:MicrosoftInternet Information Services 5 (IIS)Internet Explorer 5Office 2000NovellGroupWise Web PublisherXeroxDocuShare 2.0
Commercial WebDAVProducts (2)Commercial products:CyberteamsWebSite Director (integrated WebDAV server andworkflow system)DataChannelRIOIBMWebSphere (rumored)Complete list:http://www.webdav.org/projects/
Open Source ProjectsWebDAV has picked up strong support inthe Open Source community as well:Greg Stein’s mod_dav Apache moduleJoe Orton’s sitecopy, site synchronization toolJim Davis, PyDAV, Python-based WebDAVserverSteve Ball and Daniel Lopez, TclDAV, Tcl APIfor WebDAVUCIs WebDAV Explorer, DAV Posties
WebDAVDistributed AuthoringProtocolObject Model and DesignOverview
Properties: NamingProperties are (name, value) pairsProperty names are URIscan be a URL (no registration needed)can be a URI (register new URI scheme)Benefits:Due to ownership of a domain name, URLsprovide globally unique names without registrationURLs allow rapid development and deployment ofnew schemasStable, long-lifetime schemas can be named witha URI scheme, which is registered with IANA
Properties:Name/Instance DistinctionA property name URI names the syntax andsemantics of the property.Only one instance of a property may be created on aresource (but may be multi-valued)“live” properties: server maintains consistency byenforcing syntax and semanticsnon-live properties: client enforces syntax andsemantics (property may be inconsistent)Benefits:server can provide properties with values it generatesclient can define new properties unknown to the servermajor benefit: flexibility
Properties:Value is well-formed XMLThe value of a property is a well-formed XML(eXtensible Markup Language) fragmentWebDAV also requires use of XML NamespacesBenefits:extensibility: namespaces allow mix of elementsin propertiesi18n support: XML supports ISO 10646 encodingof charactersproperty contents are structured valuessupports “plug-and-play” of W3C RDF work
Properties: PROPPATCHPROPPATCH method is used to create andremove properties from a resourceProperty creation and removal directives arespecified with XML “create” and “remove” elementsDirectives are executed sequentially and atomicallyBenefits:simple method handles modification to the state of apropertycan modify several properties at once, with onenetwork round tripatomicity ensures properties will not be left in aninconsistent state
Properties: PROPFINDPROPFIND retrieves properties from aresource.Retrieve all property names and valuesRetrieve only specified names and valuesRetrieve only a list of property namesBenefits:can retrieve property information with a singlenetwork round trip
CollectionsA collection is a set of URIs listing the memberresourcesA resource may have more than one URI/URL,hence a resource may be accessible via more thanone collection.Advanced Collections specification definesordered collections:The server persistently stores a single ordering ofthe resources in a collection.A listing of the members of a collection returns theresources in that order.
Collection BenefitsProvides a resource type which canmodel file system directories.Using referential resources, can createarbitrary collections of resources, whichmay be located on multiple servers.Provides hierarchical navigation capabilitySupports “File… Save” or “File… Open”dialog box functionality in existingapplicationsProvides scope for “Depth” operations
Collections: MKCOLThe MKCOL method creates a new collectionMKCOL can be invoked with a request bodyNo request body: empty collection is createdRequest body: media-type specific resultsprimarily to reserve body for future capabilityBenefits:a simple method is used to create a collectionMKCOL method avoids problems with addingcollection creation semantics to PUT
Listing Members of aCollection: PROPFINDPROPFIND lists the members of a collection,along with selected properties, when usedwith Depth 1 or Depth infinityDepth 1: the collection and its membersDepth infinity: the collection and its members, andits children and their members, recursivelyKey insight: a directory listing function (ls, dir,etc.) is just a specialized metadata retrievalfunctionBenefit: a tailorable collection listing operation
Namespace Management:COPYCOPY method duplicates an HTTPresource, property or collectionRecursive behavior for collectionscontrolled by Depth headerCopies are performed by-valueBenefit:allows duplication of resources withoutneeding to transmit them over the wire twice.
COPY OptionsOverwrite header can disable overwritingthe destinationkeepalive XML element (in request body)lists properties which must be live on thedestination or the copy must failBenefits:prevent overwriting of existing datafine-grain control over the copying ofproperties
Namespace Management:MOVEMOVE is defined to be a COPY,followed by a DELETE, performedatomicallyAll COPY options apply to MOVE aswellBenefits:allows the renaming of resourcesallows positioning the resource in adifferent location in the hierarchy
Write LockWrite lock is the only lock access typedefined in this specificationA write lock prevents a principal withoutthe lock from successfully modifying thestate of the resourceSpecifically, it prevents execution of PUT,POST, DELETE, MKCOL, PROPPATCH,MOVE, LOCK, UNLOCKGET, PROPFIND are unaffected by writelock
Write Lock ScopeThe scope of a lock is an entire resourceIt is not possible to specify a sub-resourcelock. Why?The ability to create a sub-resource lock requiresknowledge about the content type being locked.WebDAV wanted to support all content typesequally, not give preferential support to a few.Due to the large number of content types, supportfor sub-resource locks would have added a lot ofextra semantics to the protocol. Some contenttypes wouldn’t have been supported.
Write Lock Scope (2)Further arguments against sub-resourcelocking:Content types change rapidly (two revisionsof HTML, XML during development ofWebDAV protocol). Supporting one revisionof a content type would make protocol brittle,quickly obsolete.New content types would not be supported,yet new content types emerge constantly.
Write Lock Scope (3)Implications of whole-resource locking:Pro:Supports existing applications which operate onentire files, providing easy migration path to addWebDAV supportHandles all content typesCon:Reduced availability of resources duringcollaboration (but, shared locks can help…)
Write Lock (cont’d)Live properties may still change eventhough a lock is activeDead properties may only be changed bythe lock owner.A null resource may be locked to reserveits name. This makes the resource non-null, since it now has lock relatedproperties defined on it.
Lifecycle of a Lockunlocked lockedLOCKUNLOCKLOCKlock timeoutadministrator removal of lock
Exclusive LockZero or one possible lock holderslock holderaccess permission holderseveryone on the Internet
Shared LockZero, one, or many possible lock holderslock holdersaccess permission holderseveryone on the Internet
Why Exclusive andShared?Exclusive locks are too rigidpeople often forget to release locksrequires an administrator to release the lockShared locks allow people to use out-of-band communication to negotiate accessto the resourceif someone forgets to release a lock, it doesn’thold up the entire groupCollaborators work opportunistically
Lock CompatibilityCurrent lock stateSharedLockExclusiveLockNoneShared LockExclusive Locktruetruetruefalsefalse false*Legend: True = lock MAY be granted * = owner of lock MAYFalse = lock MUST NOT be granted have lock regrantedLock request
LOCK Required SupportA WEBDAV server is not required tosupport lockingIf a server does support locking, it maychoose to support any combination ofexclusive and shared locks.Why? Systems differ markedly in thetype of locking support they provide,and may not be able to support locks atall (i.e., some replicated stores)
LOCK MethodLOCK creates the lock specified by the<lockinfo> XML element (in the requestbody) on the Request-URI.A user-agent should submit ownerinformation with a lock requestLOCK returns a lock token whichidentifies the lock to the serverThe client may request a timeout value
Lock Owner InformationThe owner XML element (inside<lockinfo>) provides a means toassociate lock holder contact informationwith a lock.If you want the lock holder to release thelock, perhaps you can contact them and askthem to relinquish itAuthentication information often does notcontain contact information (e.g., a key)
LOCK, single resource (3)<A:locktype><A:write/></A:locktype><A:depth>infinity</A:depth><A:timeout>Second-500</A:timeout><A:locktoken><A:href>opaquelocktoken:918527121.406</A:href></A:locktoken></A:activelock></A:lockdiscovery></A:prop>
Hierarchy LocksUsing the Depth header set to Infinity, canlock a collection hierarchyA single lock token is returned, identifying thelock on all resources.An UNLOCK on this token removes the lockfrom all associated resources.All or nothing semanticsAll resources in hierarchy are locked, or noneare
Hierarchy Locks (cont’d)Hierarchy locks act to ensure:All resources in the hierarchy are members ofthe lockResources removed from the hierarchy areremoved from the lockBut…If a locked hierarchy is copied/moved, thedestination hierarchy is not locked.
Hierarchy Lock CasesCases:COPY/MOVE IN: a resource copied/movedinto a locked hierarchy is added to the lock forthat hierarchyCOPY/MOVE WITHIN: a resourcecopied/moved within a locked hierarchy is stilla member of that hierarchyCOPY OUT: when a resource is copied froma locked hierarchy, the source resource of thecopy is still a member of the lock, thedestination resource is not.
Hierarchy Lock Cases(cont’d)MOVE OUT: when a resource is moved from alocked hierarchy, it is removed from the source lockDELETE: removes the resource from the hierarchylockCombinations:Moving a resource from one locked hierarchy toanother causes the resource to be removed from thesource lock, and added to the destination lock.Copying a resource from a locked hierarchy toanother causes the source resource to remain in thesource hierarchy lock, and the destination resource isadded to the destination hierarchy lock.
UNLOCKUNLOCK removes the lock identified by alock token from the Request-URI, and allother resources included in the lockIf a lock affects an entire collection, UNLOCKremoves the lock from all resources in thecollection.
Feature DiscoveryHTTP OPTIONS method is applied toindividual resources to discover supportedcapabilitiesAllow header (HTTP/1.1) lists methodssupported by the resourceDAV header (WebDAV) lists the WebDAVcompliance level supported1 - Meets all MUST requirements2 - All MUSTs plus LOCK support
InternationalizationAll WebDAV applications MUST support thecharacter set tagging, character set encoding,and the language tagging functionality of theXML specification.UTF-8 and UTF-16 charset supportUTF-16 begins with a BOMAlthough the WebDAV spec. does not , it is stronglyrecommended to use the MIME charset parameter.Examples:text/xml; charset=“utf-8”text/xml; charset=“utf-16”
Posties - OverviewGoal:Create an electronic, collaborative Post-ItTMnote applicationSupports informal, lightweight interactionThe user should be able to just click on anote, and start typingBut, the application should still prevent overwritesNotes are shared by a group, which can begeographically dispersedOne user’s changes appear on others’ screenSynergy with Web - view notes in browser
Posties: Why use DAV?The Posties application uses DAV wellFormat of notes is unconstrainedRequires use of HTTP PUTDAV locking prevents overwritesUser interface metaphor doesn’t map well toWeb formsGoing to a page then changing a form tooheavyweight, want to just click and editRequires use of a custom user interface
Posties: KnownDeficiencies of HTTP/DAVHTTP/DAV doesn’t provide notification ofnote updatesHTTP/DAV is a request/response protocol,where the server cannot send asynchronousmessages to the clientA separate notification protocol can providethis functionality, and there is much currentwork in this area (e.g. NSTP, GENA)DAV does allow efficient polling for changes -use PROPFIND to request entity tags for allnotes in one request
Posties: Use of DAVEach note is a separate Web resource.Can be viewed by a Web browser, as well as by PostiesapplicationAll notes for a collaborative context are within a singlecollection.When a user clicks on a resource, and startstyping, Posties checks for modifications to thenote, uploading new note contents if necessary
Posties: Use of DAV (2)Overwrite prevention using locksAfter checking for new note contents, it requests alock in the background (LOCK method)If no lock exists, user is unaware lock took placeIf lock exists, error dialog is displayed, small loss oftyped data.Lock is released when user clicks on other note, or isinactive (HTTP PUT, followed by UNLOCK)Poll for changes to notes on a regular basisevery 10 minutes, adjustable by userPerform depth infinity PROPFIND for DAV:getetagHTTP GET retrieves modified notes (locally store
Posties: Other IssuesPrivacyHTTP Digest authentication, in conjunctionwith server-side access control can be usedto:Protect privacy of notesLimit set of people who can write to notes (delimitcollaboration group)Requires “log-in” step when first starting PostiesNeed to integrate functionality from standardaccess control protocol, when its done
A Solid SpecificationThe base WebDAV specification isfinished, and stable, the end product ofsignificant review:Over 1,000 list messages15 meetingsNine major revisionsMany independent reviewersA solid specification
Use your ImaginationCombine the power of the core Web forinformation distribution with…The ability to write content to a serverunder programmatic control.What do you get?You decide!
Getting Involved (WebDAV)How do you join the WEBDAV WorkingGroup?Join the mailing firstname.lastname@example.orgSend message with subject “subscribe” email@example.comAttend a working group meeting:Next meeting: Minneapolis, MN (USA)IETF, March 15-19, 1999http://www.ics.uci.edu/pub/ietf/webdav/
Getting Involved (DASL)How do you join the DistributedAuthoring, Searching and Locatinggroup?Mailing list: firstname.lastname@example.orgSend message with subject “subscribe” email@example.comAlso meeting at Minneapolis IETFhttp://www.ics.uci.edu/pub/ietf/dasl/
WebDAV ResourcesWebDAV Working Grouphttp://www.ics.uci.edu/pub/ietf/webdav/webdav.org - WebDAV Resourceshttp://www.webdav.org/Maintained by Greg SteinDASL Working Grouphttp://www.ics.uci.edu/pub/ietf/dasl/WebDAV Projectshttp://www.webdav.org/projects/A complete list of known WebDAV projects,maintained by Michael Best
WebDAV Resources (2)WebDAV Distributed Authoring Protocolhttp://www.ics.uci.edu/pub/ietf/webdav/protocol/ draft-ietf-webdav-protocol-10.pdfhttp://www.ics.uci.edu/pub/ietf/webdav/protocol/ draft-ietf-webdav-protocol-10.txtSoon to be released as RFC 2518:ftp://ftp.isi.edu/in-notes/rfc2518.txtHypertext Transfer Protocol 1.1Proposed Standard Request for Comments 2068ftp://ftp.isi.edu/in-notes/rfc2068.txthttp://www.ics.uci.edu/pub/ietf/http/rfc2068.ps.gz
WebDAV Resources (3)XML 1.0 Recommendationhttp://www.w3.org/TR/REC-xml/XML Namespaces Recommendationhttp://www.w3.org/TR/REC-xml-names/XML Media TypesRequest for Comments (RFC) 2376ftp://ftp.isi.edu/in-notes/rfc2376.txt
WebDAV IntroductoryArticlesWebDAV: IETF Standard for CollaborativeAuthoring on the WebIEEE Internet, September/October, 1998http://www.ics.uci.edu/pub/ietf/webdav/intro/webdav_intro.pdfCollaborative Authoring on the Web: IntroducingWebDAVASIS Bulletin, Vol. 25, No. 1, Oct/Nov, 1998http://www.asis.org/Bulletin/Oct-98/webdav.html