Building A Versioning Document Repository
Building A Versioning Document Repository
Document Repository
Using Apache HTTP Server, OpenLDAP, and Subversion
By: Craig A. McElroy
Who Am I?
• Co-founder of Metissian & Contegix
• Contegix is a colocation and managed hosting
company specializing in Linux and Mac OS X
located in downtown St. Louis, MO.
• Maintainer of Subversion OS X Packages at http://
www.metissian.com
• Early adopter of the Subversion version control
system
• Been using it since pre 1.0 release for source
control, document versioning, etc.
Document Repository
• A document repository is any central storage location
for documents.
• Various storage and access mechanisms
• NFS
• Samba
• Simple Web Application
• WebDAV
WebDAV
• What is WebDAV?
• Briefly: WebDAV stands for “Web-based
Distributed Authoring and Versioning”
• Set of extensions to the HTTP protocol which
allow remote collaborative authoring of web
resources.
• Defined in RFC 2518
• Visit http://www.webdav.org/ for more information.
WebDAV Servers
• Apache HTTP Server
• mod_dav - Base WebDAV support module which
requires another module to define the storage
implementation.
• mod_dav_fs - WebDAV module provided by Apache
which uses underlying filesystem for storage.
• Other mod_dav implementations exist (as we’ll see
in a bit)
WebDAV Servers
• Jakarta Slide
• http://jakarta.apache.org/slide/index.html
• Zope
• http://www.zope.org/
• .Mac
• Apple’s .Mac service is WebDAV based.
• A number of other Open Source and Commercial
servers.
WebDAV Clients
• Nautilus 2
• Official file manager/browser for GNOME.
• http://www.gnome.org/projects/nautilus
• Linux davfs2
• A filesystem module for the Linux kernel based on
Coda (http://coda.cs.cmu.edu/)
• http://dav.sourceforge.net/
• Cadaver Command Line Client
• http://www.webdav.org/cadaver/
WebDAV Clients
• Mac OS X
• Apple’s OS X has an integrated WebDAV client.
• Prior to 10.4 did not support https.
• Win32 WebFolders
• Windows 98, 2000, and XP have an integrated
WebDAV client known as “WebFolders”
• Not as integrated as Apple’s implementation.
• WebDrive Commercial Windows Client
• http://www.southrivertech.com/
DeltaV Extensions
• Despite the “V” in WebDAV, there is no versioning
model included in the WebDAV RFC.
• Because RFC 2518 left out versioning concepts,
another capable group was left with the responsibility
of writing RFC 3253, which adds versioning to
WebDAV.
• WebDAV/DeltaV clients and servers are often called
just “DeltaV” clients and servers, since DeltaV implies
the existence of basic WebDAV.
DeltaV
• The coolest feature of the DeltaV extensions is
Autoversioning.
• Allows basic WebDAV clients that are not aware of
versioning to create new versions by simply doing a
PUT operation.
• The server will translate that to the series of
operations that will generate a new version of the
existing file.
• In the event of a needed file restore, a system
administrator could simply pull an old version.
LDAP
• What is LDAP?
•Lightweight Directory Access Protocol
•Designed at the University of Michigan to adapt a
complex enterprise directory system (called X.500)
to the modern internet.
•De-facto standard for user information storage,
searching, and authentication.
•Many implementations of LDAP Servers
•Tremendous client support
LDAP Servers
• OpenLDAP - http://www.openldap.org/
• Open Source LDAP Server
• Novell eDirectory
• Red Hat Directory Server (Formerly Netscape
Directory Server)
• Microsoft Active Directory
• Supports the LDAP interface, but has some quirks
• Apache DS - Pure Java LDAP Server
• http://directory.apache.org/subprojects/apacheds/
LDAP Clients
• Nearly all E-Mail clients support LDAP Database
searches
• Apache Authentication Modules
• Apache 2.0: mod_auth_ldap
• http://httpd.apache.org/docs-2.0/mod/mod_auth_ldap.html
AuthBasicProvider ldap
AuthLDAPUrl ldap://localhost:389/ou=People,dc=contegix,dc=com
AuthzLDAPAuthoritative off
AuthType basic
AuthName "Contegix WebDAV"
Require valid-user
</Location>
• Startup Apache
Other Concerns
• SSL
• For the sake of simplicity of our demonstration, we
did not enable HTTPS for the Apache WebDAV
server, or TLS for the OpenLDAP server.
• Client compatibility
• At this time, WebDAV support is still rather
inconsistent.
• Different clients have varying levels of support, and
various quirks that should be considered that this
time.
Other Concerns
• Limiting Access by Groups
• Can also configure Apache to require that users be
members of a given group in order to access
WebDAV share
• Controlled access by Directory
• Subversion’s mod_dav_svn can be configured to
restrict read and/or read/write access by directory
within the WebDAV share.
• Unfortunately, this feature does not currently
support LDAP groups.
Future
• Directory level permissioning.
• Subversion developers intend to add support for
having groups defined by external authentication
mechanisms.
• DeltaV locking support built into Subversion
• Better compatibility between various DeltaV clients.
• Currently a true DeltaV client may or may not
interoperate well with a mod_dav_svn server.
Q &A